In a nutshell this has the same limitation has Xamarin.
The Business Logic is shared , but the UI Logic and the Technical Logic aren't shared or not completely.
The Xamarin community has been struggling with this issue for half a decade and they ended up re-writting their own rendering engine[0] (similar to Flutter) in C# on top of Xamarin to obtain truly MVVM Cross-Platform Framework.
My point here is very simple , getting Kotlin to run on iOS is great, but it's somewhat a waste of time because of how much time and effort it would talk to create a Runtime or Rendering Engine to normalize UI/UX on differents platforms.
It's similar, but not the same. The details matter. They're different because you don't need to deal with a complex abstraction layer to share logic. As in, you can expose an iOS Framework and call it from swift/Objc just like any other library. That lets you share tested logic and architecture, and do so optionally. It's not all-or-nothing. Xamarin is a different approach. Flutter is a very different approach.
Part of the issue when evaluating frameworks is expectations and not understand the plusses/minuses. If you are looking for a framework that will do 1 codebase for all logic and UI, without sacrificing any UX or capabilities, you'll probably be let down. Kotlin Multiplatform will be great for sharing logic and architecture. UI is somewhat of a different case. Why Xamarin wasn't great here is you need to do EVERYTHING in Xamarin, and write custom bridge code when not. It's an entirely different world, which bad IDE support for most of it's history. Jetbrains makes excellent tools, and if you understand that the UI will be "native", then there's a lot of efficiencies you can leverage here. If you get frustrated because you can't make one thing do all things, then yeah, it'll let you down.
The difference is that Kotlin has first class support on Android. Aside from that I agree, Kotlin is obviously second class on iOS. IMHO for simple multi-platform projects I'd use either plain webtechs or react-native. The impedance mismatch between Kotlin and Swift/ObjC is going to be an hindrance no matter what.
I wouldn't call manually exporting Java methods to the WebWidget "no effort whatsover", plus the performance hit of doing cross-language, inter-process calls, in a dynamic language while the platform languages are static.
> I wouldn't call manually exporting Java methods to the WebWidget "no effort whatsover", plus the performance hit of doing cross-language, inter-process calls, in a dynamic language while the platform languages are static.
Well like it or not JS is first class on both platforms as they both have a JS engine at the developer's disposal, Kotlin or C# aren't.
First class because there is no need to deploy your own JS engine on both these platforms, you can argue all you want, both have a webview/js engine API that are part of their respective SDK.
That's not what first class means to you. You can't just make up the definition you want just because it's convenient for your. First class means it runs on the platform without any form of external or third party runtime.
The point is that you want JavaScript to be seen as first class no matter what, because it fits the React Native story, even though it requires manually written FFI for the platform APIs.
Hey, by your definition even web pages are first class on mobile devices, as they don't require any form of external or third party runtime, maybe we can even call them native apps!
If JavaScript doesn't require any form of external or third party runtime, then why does React Native bundle JavaScriptCore?!?
I think the whole idea of "We need to replace Java with [Insert Language]" is much more complicated topic than just saying "X is free , Java is owned by Oracle".
Even is this is true , Java is by far one of the most performant programming language that exist on earth.
People just don't realize the hundreds of millions of dollars that went into the JVM and the JDK.
Even if they are great alternatives like Go or .NET , they either come with huge limitations in performance or their ecosystem.
Per say , finding JVM developers isn't that hard, regardless of the geography. However , finding Go developers outside of the Bay Area ? Good luck with that.
The issue with Patent on the JVM is well know and there is very little to nothing that we can do about it.
Java is better than it used to be but you’re significantly overselling performance as a competitive advantage. Many other languages have no trouble producing code which is as fast or faster, and Java is still shaking the culture of excessive complexity which has squandered much of the hard work in the JIT.
The ecosystem is a much better argument since it’s certainly massive, as is finding developers, although quality varies wildly in both cases.
True, although that has a way of becoming important after awhile. That’s why I prefer to focus on complexity and clarity as it’s much harder to make convoluted code when it becomes important.
It’s nit picking, but I think a more correct statement would be “lots of small performance mistakes add up over time”. It’s very rare that I see a project needing a new language for performance reasons, but I see projects that need refactoring for performance all the time.
The Google / Oracle case didn't end up being about patents because they were all invalidated or deemed not to apply, iirc.
It ended up being about copyrights and whether or not you can copyright APIs.
It's unfortunate that Oracle chose to break the long-standing convention on this topic, however, it's not entirely surprising that eventually someone did. It's not at all clear why APIs should not be copyrightable, given the intent and wording of copyright laws and treaties - it's merely a convenient collective belief the software industry has had. It's now being tested in court and apparently splitting judges both ways.
I would also note that you always take such risks when building on platforms. The web is basically driven by Google these days, with other browser vendors either struggling to keep up or just giving up entirely (see, Safari) creating a new "works best in IE" era. And Google's stewardship of the web is hardly uncontroversial. Lots of obvious, major technical problems go unresolved for years or decades. AMP seems to be upsetting a lot of people. And of course there's not much stability: the web guys don't seem able to pick a direction and stick with it (e.g. web components/shadow dom stuff).
Quitting your job if you have kids a wife and a mortgage is a much more complicated topic than just saying "F* this I'm going to raise cows in the Montana"
It's complicated to move internally in a corporation , so thinking as to moving to another company to another position when you have responsibilities it's pretty much like playing the Russian roulette with your finance and your situation.
It's complicated to move internally in a corporation , so thinking as to moving to another company to another position when you have responsibilities it's pretty much like playing the Russian roulette with your finance and your situation.
How is changing jobs like Russian Roulette? Since both salary compression and inversion are real phenomena, the statistically best way to provide better for your family is changing jobs.
From personal experience, and not living in Silicon Valley, I changed jobs 3 times in the last 4 years and made $45K more. I changed jobs 5 timed in the last 10 years and made $65K more. Before that, I stayed at one job 9 years and only made $7K more in year 9 than year 2 with measly 3% raises and bonuses being cut.
You absolutely have to change jobs to get raises, but I can certainly see the Russian Roulette comparison. Especially as you get near the top of your salary range.
The biggest problem I see is how different benefits can be and cost from company to company. From the simple (like comparing payroll deductions), to the complex; time spent in office, time spent working, commute time, coworkers, quality of health coverage, quality of work, vacation accrual.
I generally try to stay at a job for 3 to 4 years, but my last job at HP, cut my knees off when the spun me over to DXC and our benefits costs tripled. To keep the same benefits would have amounted to a 10% pay cut. I probably would not have taken the job if it's benefits had been as offered post merger, so I had no qualms in quitting as soon as I could line something else up.
I can certainly see the Russian Roulette comparison. Especially as you get near the top of your salary range.
I can see this causing me an existential crisis in three years. Using my usual framework of basing jobs on technology, environment, and money, will I be able to move from an environment I like where I make “enough” to jump ship to stay on the technology train? Especially when we are at a point where more money won’t have any effect on our current lifestyle by much or will I get complacent? The next stage of my career to make any appreciable salary jump is going to require me to go into management (not happening) or work for a consulting company that will definitely be more stressful and more traveling.
The biggest problem I see is how different benefits can be and cost from company to company. From the simple (like comparing payroll deductions),
Yes that is simple. Because of the ACA, you can basically be guaranteed a minimum quality of coverage. Yes the cost can be more or less, but that’s just a number when you are comparing total comp.
In our case, there is a known upper bound in health care cost. If it’s too expensive on my job, we switch to my wife’s coverage - she works for the state.
to the complex; time spent in office, time spent working, commute time, coworkers, quality of health coverage, quality of work, vacation accrual.
Commute time is known up front, not really a risk. Adjust your required compensation accordingly. You can also gauge the type of technology they use up front.
My point is not that you can't measure these things, but that they are complicated to measure when comparing offers from multiple places. And the ACA guarantees coverage, but there is still a huge difference between a copay style plan and a high deductible plan. Especially when it comes to family coverage. The amount each company subsidises for family coverage is all over the place. I've been on plans where it's $20 to see a doctor or $90, right now I pay everything out of pocket until I hit $6k.
Well, you only live once, so there's that. In the end, if you're not happy with your situation, you might get depressed, alcoholic, legal opiod addicted, on even blow your brains out, and that might be worse for the kids, wife, and mortgage.
That’s what he is talking about though, “You only live once” is a selfish (no negative connotation intended) sentiment. If you have a wife, children, debts people are expecting you to repay then to some extent you need to deal with some adversity.
I’m not saying everybody should stick it out in terrible situations but “you only live once” is not the reason you should be flipping the table if you have people depending on you.
>“You only live once” is a selfish (no negative connotation intended) sentiment
This is backwards though.
Avoiding being selfish is exactly what makes the person turn alcoholic, suicidal, depressed etc. Else they could just say "fu" to their family, debts, responsibilities etc and go start a new life.
It's not like they enjoy being depressed or suicidal or abusing some substance etc and do that for selfish reasons. My point was about how trying not to be selfish and sticking to it that can end up making things worse (including for others).
I'm not so sure. This implies that there's some reliable stability in life to which you're holding on to, so when you take risks, you're discarding this reliable stability.
But I don't think this stability actually exists. Lots of things can turn on you and your family at any moment, and then you are not ready, because you haven't been taking the necessary risks, haven't been taking care of yourself, out of a sense of duty.
I think people generally function best when they optimize for themselves compared to optimizing directly for others, because if you do not optimize for yourself, you rot, and then you cannot help said others anyway. Optimizing for others can be very difficult and inaccurate. Put on your mask before you put on your child's mask.
Optimizing yourself should already take care of unnecessarily rash YOLO decisions since you wouldn't want to be left without any money yourself, either. But holding on to awful positions out of a sense of duty, ehh, that seems to be how people get to a really bad place (i.e., depression, alcoholism, infidelity). And, ultimately, there's not just duty to your specific family, but also to society, and you can't change society when you are always just going with the flow.
It also creates a rather sad picture for said family.
IMO 100% of ventured backed Open Source project will adopt this licence.
Just to name a few :
- Elastic
- Docker
- CockRoachDB
This licence is a disguised "Oracle" intellectual property.
This what Oracle has been doing for years and bring them billions in revenue.
It ensure that one way or another you'll pay $$$ to the vendor of the tech.
Most of these companies quoted above are not profitable and are trying to find a way to be profitable.
With this licence it allows them to charge $$$ and to have full control over the IP for and become the sole allowed provider for consulting / support / training and basically anything that is related to this technology.
This is proprietary software with an "unlimited trial" edition and source code hosted on Github.
It's one vendor contributing some modules which now they have a different license.
I don't see how this impacts any other Redis module on github out there.
Either those modules are that good and the vendor decides that cloud providers must pay and not get money from the vendor's work, or those modules are not really that used so who cares.
I have used RedisJSON module which is nice and I assume changes license now. Am I a service provider? Do I care about one module changing license so AWS and other clouds cannot use for their own service?
I couldn't care less and it does not impact Redis open source project at all IMHO
Let's say you are PHP consultant , you set up a Redis + EC2 instances.
You enable a redis enterprise module in that instance.
Well technically speaking you are breaching the license of RedisLabs. You are not allowed to do so without their consent because those modules aren't "bsd" or "mit" they are "Commons Clause".
In short , if you are doing something with the RedisLabs modules ( consulting / hosting / training / support ) you owe $$$ to RedisLabs.
It's unenforceable. European Union cannot claim VAT from smaller - yet big enough - foreign companies and is only targeting the very big ones to collect it from. I used to play an online game and, if you changed your country to a non EU one, no VAT was paid. And that was a big company that should have been enforcing EU VAT for me.
Would Redis Labs go after Joe and his brother? Even if the license said so? They're after the big abusers, not the community.
If I'm not mistaken antirez said so too, that it does not affect you and me. That's the reasonable thing anyway. AWS is the big abuser. Check MongoDB or Xen or Elastic cases. People (ex employees typically) are starting to talk how AWS is abusing their open source work. I think that's the whole juice of the story, that AWS is abusing successful open source projects.
> Like any other business, Open Source needs funding.
That's a valid comment... for a different discussion. The actual issue here is that Docker's business model is falling apart, with alternative container runtimes (cri-o, rkt, etc.) and alternative orchestrators (mostly k8s) eating their lunch. And all of those are open source too.
In a nutshell this has the same limitation has Xamarin.
The Business Logic is shared , but the UI Logic and the Technical Logic aren't shared or not completely.
The Xamarin community has been struggling with this issue for half a decade and they ended up re-writting their own rendering engine[0] (similar to Flutter) in C# on top of Xamarin to obtain truly MVVM Cross-Platform Framework.
My point here is very simple , getting Kotlin to run on iOS is great, but it's somewhat a waste of time because of how much time and effort it would talk to create a Runtime or Rendering Engine to normalize UI/UX on differents platforms.
[0]https://github.com/AvaloniaUI/Avalonia