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).
"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."
How does it abstract away the more fundamental differences between platforms Activities/Fragments vs. UIViewControllers?
For some things it's about the common talk-to-the-backend code, not true-code-once across iOS/Android...
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.
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.
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.
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.
Again, this conversation is about Xamarin the mobile app studio. There is zero ambiguity in this, so it is perplexing that you keep bringing this up.
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.
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."
...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.
> "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?
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.
> Microsoft made it completely free. Yawn.. Microsoft open sources the entire SDK. Yawn.
After your nap, click the "All Products" link. You'll see other products -- and 26 pages of components.
Give it up. Your initial comment about Mono was ridiculous and grotesquely out of context, and you've just continued this bizarre obnoxiously.
And the most ridiculous part of all is that this very submission, and Xamarin's own terminology, calls their app development stack "Xamarin".
No one is confused but you.
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.
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.
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?