So is multiplatform in Alpha, how long has it been...
# multiplatform
b
So is multiplatform in Alpha, how long has it been around for? Very cool idea but as I am very new here will probably come back later.
l
Multiplatform’s been in alpha for about 4 years now, I believe. It should be hitting beta soon. I believe the goal is to hit beta within 6 months, since it’s on the current roadmap.
k
That kind of depends on what parts you’re talking about, and what’s “alpaha”. Multiplatform has been around, technically, for 4 or 5 years. The gradle plugin and tooling are, I believe, considered “alpha”. The Kotlin/JVM compiler and system are quite mature. The Kotlin/Native runtime is, I believe, beta, and have been so for quite some time.
As @Landry Norris said, beta is on the roadmap. I wouldn’t expect that to be dramatically different on a technical level, but that’s a Jetbrains question.
b
@kpgalligan thanks for clarifying. So how well does using it for Android/iOS multiplatform work? This seems like a bit of a killer app style thing (or killer language maybe the term term).
l
It looks like the beta just represents increased confidence in what’s currently there. The main driver seems to be the Kotlin/Native memory model, since K/N is currently the least stable Kotlin compiler (not to say it’s strictly unstable, but it has had the least time to mature)
r
FYI here is list of Kotlin components with their status and since what version that status applies: https://kotlinlang.org/docs/components-stability.html#current-stability-of-kotlin-components
Note that the K/N memory model will most likely go beta in 1.7.20.
b
@Leon Kiefer so if you were developing an Android/iOS app you would use native? I guess it's a way around iPhones not supporting Jave. Has anyone managed to get Kotlin stuff in the iStore, cant see Apple wanting this.
l
You use K/JVM on Android and K/N on iOS. K/N compiles down to a framework, so it’s difficult to distinguish from native iOS unless you do a bit of (admittedly not difficult) reverse engineering.
k
Well, my whole company is focused on multiplatform mobile, and I’ve been doing it every day for about 4 years, so my opinion is quite biased. It works great for shared code. We’re helping teams put it in production. There are shortcomings, and my talks tend to focus on mitigating those, but if implemented well, KMP is great for native mobile: https://www.droidcon.com/2022/08/01/sdk-design-and-publishing-for-kotlin-multiplatform-mobile-2/
r
@Ben Edwards you won’t have any issues with submitting KMM apps to the App Store. Once compiled the Kotlin code is just Objective-C.
l
We publish our multiplatform app to android and iOS TestFlight
l
I’m currently working on a KMM library to supplement some shortcomings of Flutter for one of our apps at work. Apple hasn’t said anything yet, and we’re using two cross-platform technologies in one app.
k
@Ben Edwards We put large distribution public apps in the app store, and have for years. Apple doesn’t care about this any more than they care about Rust, C++, etc. In fact, I’d argue that KMM enables more native experiences, because the UI is native, so they’d prefer it to React Native, Flutter, and certainly any kind of web/html UI
Most of the last few years’ Droidcon iOS apps are KMP. We just need to hide any mention of Android. https://apps.apple.com/us/app/droidcon-sf/id1488903725
(I’m going to get in trouble for jumping the gun here, but for NYC we’re trying some native compose. See if that gets in the store…)
l
That’s cool to see. I’ll have to take a look when the native Compose apps are on the store.
I’d imagine y’all have figured out the BITCODE error with the skiko native bindings binary for arm64?
k
Now, native compose is, let’s say, not going to beta soon I’d guess, but it’s been interesting to play with.
r
Can't think of a reason why native compose would be any different from say Flutter, Xamarin Forms, Ionic, etc regarding App Store policies.
k
@Landry Norris I have no idea about the bitcode and skiko. Any info? @Rick Clephas I was thinking more along the lines of technical issues (calling non-public stuff, the issues Landry is mentioning, that kind of thing). Longer term, I don’t think there’s any reason it would be treated differently.
l
I will say that my company just switched an app from native to Flutter, and we’ve been seeing more arbitrary rejections. They rejected us a couple weeks ago because the device frame was present in a screenshot, which “is not representative of the real experience” whatever that means.
We got another rejection yesterday where they claimed we were missing a button to delete the user’s account, even though it’s clearly in the profile settings.
k
The summary, OTA code updates for KMP: https://github.com/cashapp/zipline
I feel like we just did an infomercial for Kotlin
b
@Landry Norris, @kpgalligan I imagine Kotlin is only not concerning them as it's not got the market share of C++/Rust... When it gains popularity I would say they will do everything they can to try to stop it. Here is the thing, Apple is (I am fairly sure) the biggest company in the world even if they only sold iPhones/iPads. IMHO the whole existence of Apple is dependent on iOS lock-in. Multi-platform Android/iOS development seems one of the biggest threat to their very existence. It (at least partly) stops people jumping ship.
l
If that happens, I’d imagine JetBrains would find a way to obfuscate the runtime. I don’t doubt that Apple will eventually try, but they’ve also got to deal with public perception and anti-competition laws.
k
The language doesn’t matter. It’s the ecosystem. It’s why Google is getting roasted about their messaging ad trying to shame apple into rcs (https://www.theverge.com/2022/8/9/23297951/google-apple-rcs-adoption-campaign-getthemessage-blue-green-messages) If they were worried about Kotlin somehow ruining their ecosystem, they would’ve stopped other cross platform technologies along time ago. I had an android engineer make the same argument to me about react native several years back, but the coding platform has to exist within the ecosystem. It can’t really define the ecosystem.
b
Looking forward to getting to the place where I can join in with this. My current feeling is that Kotlin is a better option for me than Python in the long term. Being able to do web apps, iOS, and Android with a shared code base is very appealing and I guess you could also share the code with Desktop.
k
As a concrete example, reactnative is pretty popular for iOS S. However, that didn’t stop Apple from screwing over Facebook with privacy changes