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?