Second thought: Every time I looked into Xamarin (and I do this every 6 months) there was a lack of killer apps created with Xamarin on both iOS and Android, users' experiences with Xamarin were either rare or negative and in total the community felt non-existent
Third thought: Ok got it, they open source to get PR, build a community; I hope that helps and it's not their last resort
tl;dr. The success of Unity can't be used as an indicator that cross-platform frameworks are good for productivity/utility apps.
Xamarin and Unity don't have anything in common, other than the fact that Unity uses C# for scripting (on an ancient runtime).
Cross-platform app development frameworks are generally awful because they don't tightly integrate with the native look and feel of every platform. Video games don't even try to achieve native looks on any platforms. They're always full screen works of art, without any hint of a UIButton (iOS) or TextView (Android).
I too hate cross-platform schlockware but it sounds like you are not familiar with the technology.
"controls are mapped to platform-specific native user interface elements; for example, a Xamarin.Forms Entry becomes a UITextView on iOS, an EditText on Android, and a TextBox on Windows."
You win some you lose some. With Fragments Xamarin actually extends support to earlier Android devices. Less of an issue now, but there was a time when this actually extended platform reach, reduced code, and simplified training/upgrades.
For some things it's about the common talk-to-the-backend code, not true-code-once across iOS/Android...
I don't think Unity does it any more, but it wasn't that long ago when Unity used Xamarin to be able to run on iOS, Android and PS4. Now they do it with il2cpp I think.
Also, it seems you have no idea what you're talking about. Xamarin gives you access to the same native APIs that you use when developing a native app. You still need to know the native API if you want to build an iOS app. Xamarin.Forms helps, but doesn't support everything.
What does Unity have to do with Xamarin? Are you referring to the fact that Unity uses an old version of Mono, because that hardly is relevant to greenspot's comment.
To their actual comment, it is extraordinarily difficult to make a quality product with Xamarin. As they said, there are shockingly few wins built with it. There are loads and loads of teams using it, all sure that it's the short cut that will build for everything with one code base, but so few wins.
I'm genuinely curious as to where you are getting your information from - ? Are you referring to Xamarin Forms in particular? One isn't forced to use Forms, it's possible to utilise Xamarin iOS and Android, but still have (for example) a PCL that contains everything except for the visual side of things.
This is based upon attempting to use the products to build some solutions. The Xamarin advantage is in the cross-platform tooling (if I'm making separate code for each, why would I bother with a layer of abstraction?), but when used it generates a compromised result.
It is perfectly fine for some relatively simple things. Basic information apps, etc. But it isn't long in complex apps before the abstraction is leaking all over the place, and you find yourself fighting the tooling rather than leveraging the tooling. Which has been the case for virtually every similar "all platforms one tool" type solutions.
"Compromised" how? "Leaky abstraction"? What is the abstraction and can you please provide specific examples of the leak?
It worked between Mac and Windows on very complicated apps. It bridged Linux and Windows for tweaky MVC stacks a decade ago (then they wisely sharpened their focus.) It got the job done pumping data through hardcore game engines. The network stack is proven robust. You're talking about it like it's some stupid ORM wrapper or wonky Widget UI library. It is not.
The context is the cross-platform app creation toolset. It generates extremely poor quality code, usually at a significantly increased development time (quite contrary to the promise). This is the case found by almost everyone who uses it, which is exactly why most teams have an Android project, fully using the tools of the platform, and an iOS project, fully using the tools of the platform. If Xamarin were heavily used, Windows Phone wouldn't be so generally unsupported.
This post links to a different page. It shows three big boxes: One for iOS, watchOS, tvOS and MacOS X. One for Android. And a third one which provides a forms package providing native UI on iOS, Android and Windows. Which just received huge updates AND went open source.
There is a language: C#. There are bindings to native toolkits. There's yet another imperfect Forms package. And there's a slightly wonky IDE. I'm not sure what you're expecting but I think the "lossy abstraction" here is mostly your expectations. I also think you are applying your narrow experience (which obviously was not a great one) and trying to amplify it by using unsubstantiated statements like "most teams" and "few wins."
Xamarin (not Mono) is a solution that seems like all win: Why bother with completely separate solutions on iOS and Android...and maybe even Blackberry and Windows Phone and...
...when there's a magic solution that covers them all. Surely such a solution would completely take over the industry, right?
Crickets.
Extremely few successful solutions are built in Xamarin. Their case studies are limited, and are generally close to trivial apps. And when you point this out, Xamarin advocates tell you not to use most of the cross platform stuff, but instead use platform specific code that is layered on abstractions from the underlying tech, always a step behind and a mile too far.
I'm not amplifying anything: The market demonstrates every statement. Xamarin is something that floundering teams buy hoping it gives them a big heads up, and then some time down the path they just end up starting separate projects for each platform.
You obviously are heavily biased, and strangely confrontational, towards Xamarin. But this open sourcing has been met with a universal yawn.
Xamarin is a company, not a product. Mono is a Microsoft-sponsored project. If you can't be bothered to get that right it makes it even harder to accept you speaking on behalf of the entire industry.
> "this open sourcing has been met with a universal yawn"
It happened 18 hours ago! Do you think the kinds of companies that code in C# even noticed yet?
At this point I have to assume you're trolling. No one is this obtuse.
Xamarin is a company, not a product
Xamarin the company has a primary anchor product that is a tooling and SDK to build cross platform apps (indeed, on Xamarin.com it is literally the only non-service product. There is zero ambiguity). To anyone not autistic, that is clearly the focus on this entire discussion. Your bizarre incantation of Unity using a very old version of Mono as a citation in support of Xamarin set the bar pretty low for this conversation.
It happened 18 hours ago!
Microsoft made it completely free. Yawn.. Microsoft open sources the entire SDK. Yawn.
Clearly you work either for Microsoft, or you hitched your wagon entirely to Xamarin or Microsoft. Your emotions on this are bizarre and completely out of touch with the reality.
> "All products" list four items, one of which is a product
The Products menu has a fifth menu item, All Products. It will show you additional products.
Apparently you are not familiar with the (bumpy!) history of Xamarin's technology. Now that it's open source, you can actually trace lines of code from Xamarin Platform and Xamarin Forms and the Xamarin Profiler back to the early Mono and Unity days. They were a small team that bit off way more than they can chew, delivered more than seems possible even today, and gradually tightened their focus to mobile.
Now they are open source and have Microsoft fully behind them. I wasted a ton of time and money and performance running under Mono on Linux when I should've just used Windows server. But I got it back using Xamarin Platform on two recent large-scale mobile development efforts.
You win some, you lose some, and eventually you develop the maturity not to claim an entire industry had the same exact failures you did to make yourself feel better. Good luck.
You don't seem to understand how Xamarin works at all. The entire point is that you have the ability to share code, but also to drop to platform specific code at any time. The absolute worst case should be that you build totally different UI code for each platform while most of your business logic can sit in shared code. If you do target their cross platform UI framework (Xamarin.Forms) then all or large chunks of of your UI are in shared code, but even then you can write things like platform specific renderers to tweak your controls to the platform.
You just described exactly what I described in various other posts. How you came to the conclusion that I "don't seem to understand" can only possibly be due to some sort of zealot blindness that makes you a defender.
Best case -- terrible abstraction.
Worst case -- you're rewriting much of your code for each platform, working on a 3rd party incomplete abstraction that is always behind and full of unnecessary layered surprises.
What a win!
And for the next bizarre Xamarin sponsor that decides to wallow in and throw up this -- I worked on a large scale solution with Xamarin. We threw it out and just went with separate projects for each platform, sharing code with C++. Works wonders. Way better than Xamarin.
I was specifically referring to your comment "There are loads and loads of teams using it, all sure that it's the short cut that will build for everything with one code base, but so few wins." that implied knowledge above one's own experience.
BTW Xamarin Forms has or is about to receive a bunch of updates, perhaps it's worthwhile checking them out in case things have improved for you?
People are mixing "Xamarin the company" with "Xamarin technologies" here and I'm not sure how to sort it out. Obviously the tech stack works. Obviously the stack ain't going away, especially now. As for "hard to build a quality product" and "so few wins" well that describes mobile in general now, doesn't it?
React native has a LOT of attention. It has a lot of support. BUT as of this writing if you are developing in corporate IT (meaning possibly running windows 7 systems) you actually CANNOT run react-native tools on windows easily.
I'm currently building an ionic project because I needed a cross-plat mobile app and work with a mix of OSX and windows 7 machines.
Now that said, windows 10 systems with the ubuntu emulator should be able to emulate all the calls you need to run react native on windows machines.
I'd hate to be 2 months into development to find there are deep internals that block me from using a critical feature.
None of this is to say Xamarin doesn't have its own baggage. The reason I web with cordova/ionic was for the good of the other developers on my team (html+css+javascript over C#) and, at the time, the additional cost of the Xamarin licenses.
I would have given XAMARIN a much closer look if it were bundled with a Visual Studio license, and all things considered, if I were looking today, it might beat out React Native.
That said, I do agree that react-native MAY be the way forward in the next generation, but, Xamarin does have more than enough upside to make it a reasonable contender.
> BUT as of this writing if you are developing in corporate IT (meaning possibly running windows 7 systems) you actually CANNOT run react-native tools on windows easily.
Eh? I use React Native on Windows. Works just fine. It's also very easy to install. Maybe you didn't try recently?
Second thought: Every time I looked into Xamarin (and I do this every 6 months) there was a lack of killer apps created with Xamarin on both iOS and Android, users' experiences with Xamarin were either rare or negative and in total the community felt non-existent
Third thought: Ok got it, they open source to get PR, build a community; I hope that helps and it's not their last resort
So, is Xamarin really a viable solution?