Jim Sproch

4.2K posts

Jim Sproch

Jim Sproch

@JimSproch

Research Engineer @ Google. Progenitor of Jetpack Compose (May 2017), Compose Multiplatform. Now: AI research @GoogleDeepMind, teaching AI to write code.

Mountain View, California Katılım Mayıs 2019
20 Takip Edilen9.6K Takipçiler
Sabitlenmiş Tweet
Jim Sproch
Jim Sproch@JimSproch·
More than four years after I first proposed it and wrote the first line of code, we've finally released #JetpackCompose (stable) version 1.0.0! 🎉 Incredibly grateful to everyone who helped me make it happen. Exciting to have built the future of #Android together!
English
71
165
1.2K
0
Jim Sproch
Jim Sproch@JimSproch·
@samcit1 There is no "extra" time on main thread. I'd very much love to see all child composables running concurrently with regards to siblings and asynchronously with regards to their parent. Been advocating for that since the earliest days of Compose, but it's hard to turn a big ship.
English
1
0
4
730
Jim Sproch
Jim Sproch@JimSproch·
@samcit1 Yep, 100% agree. Compose should make much better use of non-main-thread. The problem is that overhauling the system that underpins everything is hard, especially because userland code often makes hidden implicit assumptions about when code runs (execution ordering).
English
2
0
5
727
Vairavan Srinivasan
Vairavan Srinivasan@samcit1·
@JimSproch Exploring LazyList prefetch optimization. Pausable composition is great but why not just use a background thread for LazyList specific prefetch optimization? Is the main purpose just to use main thread's idle time?
English
1
0
2
741
Fabrizio
Fabrizio@ipla03·
I honestly think it’s a shame that Compose multiplatform went the Flutter route for iOS Single canvas all custom rendered RN proved the native UI approach is great, high fidelity to what users expect and native feel Writing and app in Kotlin, making it native on android and using rn-like native components on iOS would have been a game changer
English
5
0
39
6.3K
Jim Sproch
Jim Sproch@JimSproch·
@ipla03 @mickrich384 Certainly there are tradeoffs. That's why Compose supports both approaches and lets you choose. And if you run into real issues, file a bug so the Compose team can figure out alternative solutions that better solve your use case.
English
1
0
2
116
Jim Sproch
Jim Sproch@JimSproch·
@ipla03 @mickrich384 Yes, that's how it works on iOS but not on Android. Same with Flutter on iOS. There are some sharp edges as a result, but Compose mostly manages to make it work. x.com/JimSproch/stat…
Jim Sproch@JimSproch

@mickrich384 @ipla03 Yep, there are tradeoffs, that's why Compose supports both patterns & lets you choose. If you run into pain points associated with mixing platform views, please file bugs! Compose actively supports both and user feedback+contributions drive development. x.com/JimSproch/stat…

English
1
0
2
201
Fabrizio
Fabrizio@ipla03·
I remember a post of a guy, and it might be absolutely wrong I don’t know, that was saying that the way CMP shows platform views on iOS is through “cutting a hole” in the skia canvas and show a UIKit view underneath, and that causes problems if you want to layer stuff on top of each other, is that how this works or it was just a wrong post?
English
1
0
2
154
Jim Sproch
Jim Sproch@JimSproch·
@mickrich384 @ipla03 Yep, there are tradeoffs, that's why Compose supports both patterns & lets you choose. If you run into pain points associated with mixing platform views, please file bugs! Compose actively supports both and user feedback+contributions drive development. x.com/JimSproch/stat…
Jim Sproch@JimSproch

@mickrich384 @ipla03 You're more than welcomed to use Compose in the RN style, Compose actively supports both and user feedback+contributions drive development. x.com/JimSproch/stat…

English
1
0
1
365
Mickrich384
Mickrich384@mickrich384·
@JimSproch @ipla03 - Fake iOS widgets look really cheap - By the time they look "ok", apple will do another rebrand - Mixing Platform Views and CMP widgets is a real pain. Dialogs are easy, But components which play a role in layout (text fields, switches) can be a real pain
English
1
0
2
166
Mickrich384
Mickrich384@mickrich384·
@JimSproch @ipla03 The way I see it, CMP is a version of Flutter: - More popular languge - Better interop - Only need to develop bindings to iOS, (still need to unify them with a single API) - Better performance on Android However I wish it went the RN route instead of the Flutter route
English
2
0
3
205
Jim Sproch
Jim Sproch@JimSproch·
@mickrich384 @ipla03 Nothing in computer science is flawless. Even interoperability between Apple's Objective C and Swift is not flawless. But some frameworks/languages do a better job than others 😉.
English
1
0
4
890
Mickrich384
Mickrich384@mickrich384·
@JimSproch @ipla03 > you can use a mix of both on both platforms Using something like a platform view? I understand that interop with objective-c on apple is flawless, but I don't understand how interop between UIKit and Skia can be flawless
English
1
0
1
416
Jim Sproch
Jim Sproch@JimSproch·
@BinEmmanuel1 @ipla03 Flutter can only render Platform Views if you're willing to jump through janky interoperability boundaries. Compose can call native platform APIs directly. x.com/JimSproch/stat…
Jim Sproch@JimSproch

@rockgecko_dev @chrismlacy No, it's not even close. Saying Flutter/Dart can do the same thing with FFI is like saying Java can do the same thing with JNI. You're implementing all sorts of wrappers and bindings. This is entirely different from the kind of code sharing you get with Kotlin.

English
1
0
0
242
Bin Emmanuel
Bin Emmanuel@BinEmmanuel1·
@JimSproch @ipla03 You forgot this “and Flutter can render Platform Views on both Android and iOS”
English
1
0
0
109
Jim Sproch
Jim Sproch@JimSproch·
@mickrich384 @ipla03 With Compose, you have the flexibility of both. You can use whatever widgets make the most sense for your particular use case, and can easily/incrementally change your mind about any given widget at any time. x.com/JimSproch/stat…
Jim Sproch@JimSproch

@mickrich384 @ipla03 No, Compose is unopinionated on both platforms. You can use it like ReactNative (embed platform widgets) or you can use it like Flutter (share canvas widgets) or you can use a mix of both on both platforms. Compose is all about flexibility and platform interoperability.

English
1
0
6
1.9K
Jim Sproch
Jim Sproch@JimSproch·
@mickrich384 @ipla03 No, Compose is unopinionated on both platforms. You can use it like ReactNative (embed platform widgets) or you can use it like Flutter (share canvas widgets) or you can use a mix of both on both platforms. Compose is all about flexibility and platform interoperability.
English
0
1
5
2.1K
Mickrich384
Mickrich384@mickrich384·
@JimSproch @ipla03 Can you explain this to me. It sounds like Compose acts like RN on Android and Flutter on iOS. RN is great for the native look and feel. Flutter is great for platform independent design. I don't see how mixing the 2 works?
English
2
0
3
779
Jim Sproch
Jim Sproch@JimSproch·
@ipla03 ...their own copy of Skia, so Compose is more like Flutter when rendering on iOS (with some/same caveats), except that Compose (unlike Flutter) compiles down to native iOS ABI so Compose apps can natively call iOS platform APIs and more easily use native iOS platform widgets.
English
3
2
22
1.8K
Jim Sproch
Jim Sproch@JimSproch·
@ipla03 Unlike Flutter, Compose reuses the platform Skia within Android. The platform Views on Android actually render to a version of Skia in the Android operating system, and Compose paints to that same Android Skia so it is relatively seamless. On iOS, Compose apps bring...
English
1
0
22
6K
Jim Sproch
Jim Sproch@JimSproch·
@ipla03 @desugar_64 Compose is equally good at this: x.com/JimSproch/stat… You're more than welcomed to use platform widgets in your Compose app, and Compose will happily organize them just like ReactNative.
Jim Sproch@JimSproch

@ipla03 Compose is perfectly happy to have you use iOS widgets written by apple: github.com/MohamedRejeb/C… Unlike Flutter, Compose highly values platform interoperability and you're more than welcomed to embed platform widgets into your app.

English
1
0
2
190
Fabrizio
Fabrizio@ipla03·
@desugar_64 That would be very cool, I don’t know how possible it is, react is very good at allowing whatever renderer you want to plug into it
English
1
0
0
184
Jim Sproch
Jim Sproch@JimSproch·
@ipla03 The fact that most people choose to use platform independent widgets on iOS is a byproduct of what the community is choosing to do, rather than something imposed by the framework. You're more than welcomed to use Compose to organize platform widgets like ReactNative does.
English
0
0
6
393
Jim Sproch
Jim Sproch@JimSproch·
@ipla03 Compose is perfectly happy to have you use iOS widgets written by apple: github.com/MohamedRejeb/C… Unlike Flutter, Compose highly values platform interoperability and you're more than welcomed to embed platform widgets into your app.
English
2
1
23
2K
Jim Sproch
Jim Sproch@JimSproch·
@_kobachi Jetpack Compose Multiplatform はすべてのプラットフォームで実行されます。
日本語
1
0
5
955
Jim Sproch
Jim Sproch@JimSproch·
@ColtonIdle @JorgeWritesCode @birch_js The great thing about technology is that it improves over time, and NativeScript is a great example of that. Quite impressive what they were able to achieve. Making such fundamental changes to a language/runtime is not a small achievement, most technologies never manage it.
English
1
0
9
530
Jim Sproch
Jim Sproch@JimSproch·
@ColtonIdle @JorgeWritesCode Certainly that was true back in the day, but they've made some pretty major architectural fixes. I haven't look closely enough to have a definitive opinion, but their recent NativeScript certainly seems to pass all my "native" smoketests. cc @birch_js x.com/JimSproch/stat…
Jim Sproch@JimSproch

@NativeScript This is an incredible superpower of NativeScript, interoperability on par with that of Kotlin. Very impressive, well done!

English
2
0
8
906