Agree this is interesting. Historically, Mono-applications on mobile was at least 10x bigger than Java application as they included the entire runtime system.
Can the runtime system be shared now? Is .NET Core a thing on mobile, and is the resulting download smaller?
While download size is no longer a problem for me, my guess is it is still a big problem many places in the world.
Mono is still used on mobile, but a unification will occur in the future when .Net Framework is sunset and all there is is .Net 5. .Net will target Windows, Linux, macOS, iOS, Android, tvOS, watchOS and WebAssembly ++
Last time I tried Xamarin Forms was almost 3 years ago so things probably got a little better with .NET standard and all that jazz but I would NEVER touch Xamarin Forms even if I was going to use Xamarin again.
The amount of Indian code farm developers generating content for it is surreal - the community is full of low quality garbage (Q/A, docs, code) - the official docs and libraries were horrible - like their examples reference a library that comes from Xamarin (something like contrib repo - don't remember exactly but a fairly big/common lib) - some control from this lib doesn't work with latest framework - you try searching for the reason - eventually on the GH issues you find that the author (some guy at Xamarin) decided the approach the entire library is taking is a dead end and he's working on another lib - meanwhile the official one doesn't work against the latest version of the framework but the docs are still referencing it and it's published under Xamarin namespace/GH.
The amount of time I spent in that hellhole to get a demo working is surreal - it would have taken 1/2 the time to build a C# core with native frontends even in Xamarin toolkit, and with things like Flutter - honestly you are going to be more productive and get better results if you rewrite the C# logic in Dart or build a bridge and just do the UI in Flutter. Ionic will not come close in quality - but for form based apps the productivity is insanely better (even considering how broken plugins are and the hassle of every other iOS upgrade breaking your app in some way). Or probably any other mobile frontend tech.
TL;DR: Xamarin (Forms) is by far the worst framework for mobile development I've tried, and talking to other C# devs that used it on commercial projects they unanimously agree.
This doesn't sound good at all. On the flipside, I've heard and read several people who say Xamarin has been a critical part of their success and like the ecosystem and libraries.
Three years in IT is a long time, so maybe things have changed? I would love to hear other experience reports too.
PS: "Indian code farm developrs (...) low quality garbage (...)" is a gross simplification and generalization which further strengthen negative stereotypes. I advice a different wording to avoid feeding trolls and haters.
I've used Xamarin Forms privately since beta when it was just a little experiment, through now when it's an integral part of Microsoft's strategy. I've also used it professionally, with good results.
The difference from 3 years ago is night and day.
The kinks are worked out, the framework is performant, the devex glorious and you can freely mix Forms and native creating any mobile experience. The libraries are stable and XAML together with simple patterns makes you really productive, really fast. A perfect match for dotnet-heavy shops, great for everyone else too, but maybe not the right match if you live and breathe JS.
I saw a great video on domain driven design in F# a couple weeks back here on HN, now this. I can't believe I'm saying it but I'm actually curious to try out Xamarin now!
I recently gave xamarin a go using the visual studio integration: it was a horrible experience. The VS integration was terrible at crucial tasks like tracking file changes (even with frequent build cleans and restarts), and the APK sizes were huge compared to native builds. Xamarin forms was still very awkward to use.
If you try xamarin, don't use it with visual studio. Both dart&flutter and kotlin feel considerably smoother in my experience, even with the dumpster fire that is android studio.
14 comments
[ 3.1 ms ] story [ 42.0 ms ] threadAgree this is interesting. Historically, Mono-applications on mobile was at least 10x bigger than Java application as they included the entire runtime system.
Can the runtime system be shared now? Is .NET Core a thing on mobile, and is the resulting download smaller?
While download size is no longer a problem for me, my guess is it is still a big problem many places in the world.
Thus a minimum app is perhaps around 10-11MB, but in practice a little bigger since the app actually needs to do something. Similarly on iOS.
The amount of Indian code farm developers generating content for it is surreal - the community is full of low quality garbage (Q/A, docs, code) - the official docs and libraries were horrible - like their examples reference a library that comes from Xamarin (something like contrib repo - don't remember exactly but a fairly big/common lib) - some control from this lib doesn't work with latest framework - you try searching for the reason - eventually on the GH issues you find that the author (some guy at Xamarin) decided the approach the entire library is taking is a dead end and he's working on another lib - meanwhile the official one doesn't work against the latest version of the framework but the docs are still referencing it and it's published under Xamarin namespace/GH.
The amount of time I spent in that hellhole to get a demo working is surreal - it would have taken 1/2 the time to build a C# core with native frontends even in Xamarin toolkit, and with things like Flutter - honestly you are going to be more productive and get better results if you rewrite the C# logic in Dart or build a bridge and just do the UI in Flutter. Ionic will not come close in quality - but for form based apps the productivity is insanely better (even considering how broken plugins are and the hassle of every other iOS upgrade breaking your app in some way). Or probably any other mobile frontend tech.
TL;DR: Xamarin (Forms) is by far the worst framework for mobile development I've tried, and talking to other C# devs that used it on commercial projects they unanimously agree.
Three years in IT is a long time, so maybe things have changed? I would love to hear other experience reports too.
PS: "Indian code farm developrs (...) low quality garbage (...)" is a gross simplification and generalization which further strengthen negative stereotypes. I advice a different wording to avoid feeding trolls and haters.
The difference from 3 years ago is night and day.
The kinks are worked out, the framework is performant, the devex glorious and you can freely mix Forms and native creating any mobile experience. The libraries are stable and XAML together with simple patterns makes you really productive, really fast. A perfect match for dotnet-heavy shops, great for everyone else too, but maybe not the right match if you live and breathe JS.
If you try xamarin, don't use it with visual studio. Both dart&flutter and kotlin feel considerably smoother in my experience, even with the dumpster fire that is android studio.