Hacker News new | past | comments | ask | show | jobs | submit login
Sources: Microsoft In Talks To Acquire Mobile App Development Startup Xamarin (crn.com)
200 points by darrenkopp on March 18, 2014 | hide | past | favorite | 145 comments



Well, I sure hope Miguel gets a nice payday. He's built some really amazing tools over the years.

If Microsoft does proceed, it is a sign that they want their tooling to extend to their competitors' mobile platforms, something that has got to be a difficult business decision in light of pushing their own mobile platform.


> If Microsoft does proceed, it is a sign that they want their tooling to extend to their competitors' mobile platforms, something that has got to be a difficult business decision in light of pushing their own mobile platform.

I'm not sure it would have been that difficult.

Post-acquisition: instead of developing native with Objective-C and targeting only iOS or Java and targeting Android you can develop with C# and have a "native" experience on iOS/Android. The kicker is now Windows Phone/Windows Store is much more accessible to you [1].

It's lowering the barriers to mobile developers considering Windows.

[1] If you go hard with the code sharing that MvvmCross facilitates [2] [3] you don't have to do that much more to support another platform than developing the native views and binding them to your view models.

[2] Anecdote 1 http://stackoverflow.com/questions/10224376/mvvmcross-experi... "In fact 90% of the code is shared and easily testable."

[3] Anecdote 2 I've used MvvmCross myself and I'd say that I've gotten to 70% code shared across multiple platforms.


I think the shift towards cloud services is key here - just like today's OneNote announcement. But more than extending their tooling to competitor's platforms, I think this is a sneaky way to actually make their platform more viable.

Microsoft has tried to pay individual developers to get them to develop for WP, but this is short-sighted and ultimately doesn't address the opportunity cost involved. There are a number of cross-platform mobile tools out there (PhoneGap/Cordova, Telerik Icenium, Xamarin, etc). For a small team, it's damn near impossible to maintain both Android and iOS, let alone Windows Phone.

The fact that Xamarin is compiled to native code and built around Mono makes it a particularly interesting play, since it's probably better suited for games as compared to the HTML 5-based solutions.

I evaluated, and liked, Xamarin a lot. As a .NET developer and part of a very small team, it made a ton of sense for me. The main issue was price - it's very expensive which kind of becomes cost prohibitive for the small team that it is a great fit for.

If Microsoft buys Xamarin and builds it into Visual Studio (or gives it away as part of MSDN/BizSpark), all of a sudden you have a lot of people building mobile apps in C#/.NET - and targeting Windows Phone becomes much, much easier.

Microsoft can't compete straight up with Android or iOS because it doesn't have the same audience that either of those platforms have. But providing tooling that makes our lives easier doing cross platform development is an ingenious trojan horse to getting people to be able to target Windows Phone as well.... or even Windows 8 for that matter since it's just the CLR at the end of the day.

[1] http://tmarman.com/Blog/Post/ba9a711f-dcdb-40b5-bca9-ad6eb5b...


You forgot that MS could also bundle Azure Mobile Services


The OneDrive (formerly SkyDrive) blog is on Azure and is built on WordPress. You can reach http://blog.onedrive.com/ through http://onedrive-wp.azurewebsites.net/

While this isn't much, it tells that not everyone is completely infected with not invented here (NIH) at Microsoft.


It's boggled my mind why Microsoft hasn't tried to buy Xamarin sooner to do something like this. If they give the tools away for free and provide good documentation, samples, and support they could attract a lot of developers. Hell, they could even give some sort of financial incentive to attract developers too. It's annoying enough to have to develop for iOS and Android, if you could do both at the same time with less effort AND get Windows phone support... well that's just a huge win win all around.


Are you kidding me? There are so many better ways to code on multiple devices, and adding another abstract to an already complex ever-changing environment is a mistake. The only "financial incentive" is to deter programmers by the cost of VS and the lack of flexibility by changing languages into MS products. (i.e. TypeScript)


> There are so many better ways to code on multiple devices.

Such as?


Yeah I'm looking for a solution right now and would like to know the better alternatives that give me native apps.


Qt/C++ for one.


Interesting. How does the Qt approach compare to Mono for mobile development?

I presume Qt apps use Qt's built-in UI rendering, with QML for any UI-logic. Slightly different to MVVM in Mono where you recreate native UI's on each platform, but also hopefully means you only need to create the UI once?



$149 per month, yikes! And people say that Xamarin is expensive.


$1899 / 12 = $158.25


The more comparable license from Xamarin would be the $999 license, which works out to be $999 / 12 = $83.25


lol


You LOL, I deliver applications. To each its own.


Bingo.

Develop in Visual Studio using Xamarin for iOS and Android while writing in C#, now the incremental cost to also developing for WinPhone is much, much lower. And by owning these tools, as well as the WinPhone platform, Microsoft can make that increment almost arbitrarily small.


> Develop in Visual Studio using Xamarin for iOS and Android while writing in C#, now the incremental cost to also developing for WinPhone is much, much lower

You are counting the cost delta between writing C# for iOS and Android, something that is not that common, and also writing for Windows Phone. Most teams I know of prefer to write their code using the native toolkits. For them, writing in C# would be an extra cost. Few see writing equivalent code in Objective-C and Java as prohibitive because it's very common to host the bulk of the functionality on servers and only run UI code on the mobile client. UI code has traditionally been non-portable.

For those who are already writing their mobile apps in C# for whatever reason, porting to Windows Phone is already easier than porting from Objective-C or Java.


P.S. Dev Tools are a billion dollar business at MS, the move toward mobile development has pushed a lot of devs away from MS's tool stack. If they can push people back toward Visual Studio and C# and so forth then that is a huge win for MS, independent of whether they increase development for WinPhone.


Not exactly what you're asking for but Unity ( https://unity3d.com/ ) already allows you to write code in C# and publish to Windows/Mac/Linux but also iOS, Android and Windows Phone.

It uses Mono and is intended for making games however.


And it uses an old Mono runtime from Novel days, because they don't want to pay for new licenses.


It makes strategic sense when they're in 3rd place and theyre buying a cross platform tool that is about an order of magnitude better than any of the others.

Because theyre in 3rd place, theres basically zero cannibalization cost and only the potential upside of "owning the cross platform framework (i.e. the java) of mobile"

As I've said before: I want to live in a world where ms buys xamarin, open sources or provides the software for nearly free. Ms could plausibly win the app wars this way, and by extension mobile.

Of the three/four mobile languages C# is tied with JavaScript for the one I'd most like to spend my weeks working in, and alone in first for the one id most like to mentor a child in.

"code for windows phone, get iOS and android for nearly free" is an extremely compelling proposition.

What makes this not a strategic disaster like OS/2 or android on bberry in my opinion is 1) it is a 3 legged race not a 2 way race and 2) it is a "write in our language, we'll compile to the competitors" not a "we can run our competitors apps"


I am at a point where I am trying to decide on languages that are good for my 9 year old. C# is not a choice I had thought of; more Scratch and some online tutorials using Ruby. I have access to C# at home and use it at work so that makes it a candidate, but what is your motivation for C# for children? I would not mind going down that path.

Do you envision coupling it with other apps or resources? What would be your approach in the introduction stages?

Thanks in advance.


I would only choose c# for children if my choices were c#, objectiveC, java, or JavaScript.

My rationale for that preference is fairly simple: it is, to me, the most expressive. Thus I can focus on teaching concepts over syntax.


> As I've said before: I want to live in a world where ms buys xamarin, open sources or provides the software for nearly free

I want to live in a world where Mono implements the full .NET Framework and I can run PowerShell scripts on Linux. Somehow I doubt that is part of Microsoft's plan here :-(


There is Pash: https://github.com/Pash-Project/Pash

Sadly not usable yet. But we welcome contributions ;-)


Put up a Kickstarter and I'm in for a grand.


If you know Miguel, a big payday is not his motivation.


I agree. But a big payday would allow Miguel and Nat to improve their contributions to open source.


I sure hope Miguel stays. He's not a cultural fit for old Microsoft, but maybe ushering the new guard.... Him and Gu? Beautiful music.


"Working together with Microsoft's .NET team in the last four months has been an absolute delight. So excited about the future." https://twitter.com/migueldeicaza/status/445681543781285889


well, there are other OSS figures there too. Nat Friedman...


Xamarin is a tremendous accomplishment, but microsoft should tread a little lightly here. As it stands, Xamarin may have nearly saturated the market it has available to it.

To operate on Xamarin effectively, in addtion to C#, you need to be able to (1) Make use of Objective C documentation and Stack Overflow, etc. (2) Make use of Java documentation and SO (this is easier). (3) Learn the AXML UI development patterns of Android, (4) Learn the nib UI development patterns of iOS.

For (1) and (2) Most of your corner cases have not been hit by Xamarin devs yet, sure, growing will help this, but it will always be just like Mono and C# documentation -- there is some mono information, but often, you go back to the MS CLR documentation and try to figure out where its not quite the same. So right now, you are looking at let's say your A+ through B- level developers as being 'capable' of handling this. Microsoft needs big box corporate knucklehead "developers" to be able to succeed with their tools go get the kind of traction they need.

I don't say this is an impossible task for Microsoft, in fact, they are second only to jetBrains in terms of developing the best IDE's (that was my #1 hope was that Xamarin would contract with JetBrains for Xamarin Studio) and they certainly have more resources and the expertise to get it done. But it's not a home run, and it's not nearly 'right once, run anywhere'.

This could be a super exciting development, I'll be watching for more!


"As it stands, Xamarin may have nearly saturated the market it has available to it."

The key part of that is "the market available to it" (Xamarin).

Right now a .NET/Windows shop that wants to have an iPhone app has a choice between doing (1) xamarin, (2) having devs learn native iOS development, (3) try one of the HTML5 app frameworks, or (4) contracts the work out. Certainly in the cases of (2), and (4), and maybe (3), it's entirely possible that a Windows phone version of the app will never be built.

While the ".NET shops only use stuff from Microsoft" meme isn't exactly true, it's accurate in a decent number of cases. If Xamarin is "from Microsoft", though, all of a sudden all of these .NET shops that might be considering options 2, 3, or 4 have a much bigger reason to choose option 1. And hey, now that Xamarin's from Microsoft, I bet they make it really easy to build your iOS/Android app for WP, too.

The way I see it, at this point, Microsoft doesn't want to compete on apps. They're never going to be the primary target for most apps until they have the market share to justify it. So, how to best level the playing field, apps-wise? Make it super-simple to build an app for iOS, Android, and WP at the same time.


> As it stands, Xamarin may have nearly saturated the market it has available to it.

No way Xamarin has saturated the market with their licensing costs. $1000/yr per seat (for VS integration, last I looked) is cost prohibitive. If this deal lowers that cost significantly, it's a very compelling way to go for lots of devs.


I agree. If they wrap this into their MSDN subscription packages, then it opens up a ton of new users.


Ximarin exposed native phone options in C#. They didn't make a compatibility layer to ease development. As you said, build your UI twice, then get native tools to compile. Now with Windows Phone we'll either have three UIs to build, or a generic abstraction layer (that Apple will reject.)


Why would they reject a "generic abstraction layer"? How do you think Titanium works?

Disclaimer: I hate Titanium


I was pretty sure this would happen once Xamarin spun out of what was left of Novell. Open source .NET proved that C# is a great language outside of Windows and it wouldn't take much money for Microsoft to acquire it. Throwing Microsoft's considerable resources at Xamarin would allow Microsoft to gain a huge foothold in cross platform development, and thus would be much more likely to have developers port their apps to Windows.

Microsoft used to embrace, extend, and extinguish their competition before they got too big and too afraid of their own shadow(and shareholders) with Windows and Office. Honestly, it makes total sense for Microsoft to acknowledge they are running a distant #3 and get as many developers behind them as they can. Make Microsoft the place where real hackers go to write code.

Buying Xamarin is embracing. As is maybe a Nokia Android phone. Microsoft needs to make their own "better" version of Android with their own services and get people hooked on that. Then make the "best" version of Android called Windows A. It's Windows, on Android. Windows A's best features would be closed source and patented. It would potentially crush Android in the mainstream.

I don't think that Microsoft has the guts to try and pull that off, but if they did, it would be a feat.


Aren't a lot of people who used to work at Microsoft during the 90s/early 2000s working at Google now? I'd be surprised if the people who implemented Embrace/Extend/Extinguish in the first place aren't one step ahead.

The best parts of Android are already closed sourced and patented: gapps, all the stuff Samsung, Motorola, HTC etc. add on, the baseband etc.


Even if Google is a step ahead, it wouldn't be too bad for devs to have a top tier common Mobile app Dev environment. I for one love .Net and if MS can pull off Extend and Embrace successfully (less extinguish) we (or at least .Net fans) will be better off.

The market will be better off with MS, Google, and Apple as strong rivals.


Yes, imagine to see two companies with such enormous software development capacity such as google and microsoft compete head to head using the same baseline, open android, where google are at least five years ahead, and to see if microsoft could catch up. I'd love to see that fight.

Samsung is already in this fight, but surely microsoft would at least beat them.


WoA, WoA, WoA slow down there Sherlock!


what does Windows on ARM have to do with anything?


Distant third to what?


I am guessing Android and iOS.


I don't get the excitement. Nothing stopped Microsoft from releasing an open-source .NET implementation that works cross-platform, coupled with the toolset to build UIs on top of Android and iOS. It's actually one of their core competencies and if relative nobodies could pull off RoboVM, then Microsoft has no excuse other than being defensive about Windows and they had plenty of time to do it, ever since 2001. Mono and Xamarin are only possible because a bunch of folks weren't bounded by Microsoft's bottom line.

At best this would be an acquihire. At worst this is a defensive acquisition. I hope it doesn't happen, because nothing good can come out of it.


This is a bizarre statement. MS could have developed Xamarin on their own, but they didn't. Today Xamarin exists and is a very powerful tool with a large userbase. If MS now decides they want to enter that space, especially since it is becoming more and more worthwhile due to mobile platforms, then it makes more sense to buy Xamarin than to work in parallel on their own. It also makes sense not to fragment the market for such products.


Nothing stopped Microsoft from releasing an open-source .NET implementation that works cross-platform

Nothing except that it wasn't a priority for them. Maybe it is now.

I'm pretty sure releasing a version of the .NET framework and runtime that works across platform is a little more difficult than changing the target architecture on their compiler settings (does their compiler even support different architectures?)

I'm not saying it isn't possible - just that it wasn't a priority for them. This doesn't mean they don't want or support a cross-platform .NET ecosystem. (If I recall something Miguel De Icaza wrote some time ago, the internal teams in Microsoft have been supportive of Mono.)

Do agree though that if this were an aquihire or defensive move, then it sucks for the rest of us.


The C# compiler targets the CLR (a virtual machine), so doesn't need to be re-targeted. They had/have commercial versions of the CLR for ARM (.NET Compact Framework), x86, x64 and Itanium. They probably also have one for PowerPC for running XNA games on xbox 360. Porting the BCL to a target platform, and building a static linker is probably more of a task though.


Microsoft released a "Shared-Source" .NET implementation for FreeBSD in 2002.

http://msdn.microsoft.com/en-us/library/cc749640.aspx


It's also worth remembering the rumors that Microsoft will offer a free version of Windows and an iPad Office. It seems like Nadella is looking to bring a new focus to Microsoft besides "Windows everything," so they may indeed have a newfound interest in cross-platform support.


I wouldn't be so sure that "nothing good can come of it". While the potential good would be a major change of direction for Microsoft, its a change of direction that I think there have been some minor hints of (nothing particularly significant yet) since the recent leadership change.

And, yes, nothing stopped MS from working on an cross-platform .NET implementation before except strategic direction, but if that strategic direction were to change they'd be better off having the leading cross-platform VM and its developers in house.


Speaking of RoboVM, sounds like it is making very good progress [1]. And can't beat its price of free.

LibGDX is using RoboVM these days instead of Xamarin, due to the price. Also anecdotally they found RoboVM runs even faster than Xamarin [2], despite being a young project.

[1]: http://blog.robovm.org/2014/03/robovm-0010-is-here.html

[2]: http://www.badlogicgames.com/wordpress/?p=3161


Totally agree - Mono adds no value to Microsoft's .Net platform and was created because .Net was Windows-only and proprietary.


Xamarin has quite a few products based on Mono which they sell. A separate implementation of .NET and the BCL doesn't benefit Microsoft that much, but the other offerings Xamarin has might.


.NET is merely one of the implementations of the ISO/IEC 23271:2006 standard (http://www.iso.org/iso/catalogue_detail.htm?csnumber=42927)

Mono is also an implementation of that standard, a cross platform one, and open sourc-ish (they do some dual licensing stuff)


And your point is ...?


Yes please.

Having suffered through MonoDevelop and now Xamarin Studio (which is much nicer) and the various bugs introduced each time you upgrade Xamarin.Mac and other miscellaneous problems I'd love for Microsoft to come in and:

* Polish Xamarin's tools

* Polish Xamarin's code (and swap out Xamarin's implementation of the core CLR/BCL with Microsoft's own ... presumably MS' GC is two cuts above the Mono one)

* Add more QA to the release process (I don't know how Xamarin.Mac 1.4 got released with a broken NSApplication.BeginSheet implementation)

* Make Xamarin's Visual Studio integration free

* None of those "WCF is Xamarin Enterprise only" licensing restrictions

* Buy MvvmCross too

(Don't get me wrong, Xamarin's platform and what they do is amazing. But even if it works 99% of the time that's still a lot of things going wrong, given the size of .NET. Microsoft's tools and code aren't perfect either but I find I have way less issues with them relative to Xamarin.)


> None of those "WCF is Xamarin Enterprise only" licensing restrictions

Are you kidding me? Let's suppose Microsoft buys Xamarin and doesn't bury it. Further, let's suppose that they actually pump money into polishing and enhancing their tools. Do you actually believe that Microsoft wouldn't wrap 10 flavors of Student, Home, Business, Pro, and Ultimate licensing around the result?


WCF is part of the .NET Framework and there's no .NET Framework Student Edition ... .NET Framework Home Edition ... .NET Framework Ultimate Edition.


Parts of the .NET Framework like PEX and Code Contracts were restricted to Visual Studio Ultimate until recently.


And Fakes as well, but none of those are part of the .NET Framework. They're part of the ALM tools Microsoft sell.


You don't really know/ understand Satya. That would sort of be the opposite of what he'd do with this.


I think it would be great, if they would polish the core libraries.

Too many subtle differences when I've tried it the last time (some years ago). Afterwards we changed our course and stopped using it.

We were mostly interested in using Winforms applications on Windows and Linux - but it didn't really work for our application. I had the feeling that Xamarin wasn't interested in making the code any better for our use - instead they were interested in mobile application development.

If Microsoft baught them I really wished our use case would be improved too.


re: Visual Studio integration and WCF restrictions

At the very least it would be part of Bizspark and Dreamspark, as well as the MSDN packages aimed at larger businesses that make a la carte purchasing of these things unnecessary. That's the real barrier: Can I justify $600 more dollars per seat for just VS integration and WCF? No. Can I justify another $2000 for the whole company for that plus a slew of other features? Maybe.


The VS integration fees crush me. I love(d) that dev story while I had it.


I maintain a website about options for cross-platform mobile development, and the page about the C# options (where Xamarin is a leader) is one of the most-viewed.

[1] http://www.mobilechameleon.com/


Ah, this is a handy site Troy. Thanks for putting this resource together


I actually don't think Miguel and Nat would sell to Microsoft unless the terms were very much in their favor. Basically a big Microsoft wallet, team members from Redmond, the ability to license the .NET source code in a way that they could use it in Mono, guarantee of continued support for other operating systems etc. Basically, we can do what we want. Also given their VC backers I imagine the price would be north of 300mil.

Given all that I think this rumor is premature.

Then again, I did predict this... https://twitter.com/keithwarren/status/430874079776632832


Why not? For Miguel it is most likely the way he can fulfill his dream to work at Microsoft.

After all, he started GNOME after being turned down at Microsoft, and went on to port Microsoft technologies to GNU/Linux.

Bonobo(COM with CORBA), Evolution(Outlook), Mono(.NET)


fulfill his dream to work at Microsoft

I literally laughed out loud at that.

I talked to him at Evolve one evening with a handful of other devs while he does not explicitly say it (he is actually pretty humble) you get the impression that Microsoft would make him a distinguished engineer in a heartbeat if he would only say yes. Huge salary, millions in stock options and a write your own ticket kind of involvement like we saw when Russinovich took a job in Redmond.

Miguel is pragmatic, he sees one of the largest pools of developers (at one time the largest by far) and the opportunity to provide them with an exit strategy of sorts. They are bound to Windows now and Microsoft has to this point seen no value in giving those developers the tooling to take their apps out of the Windows ecosystem - so Miguel did just that.

Couple that with the fact that he saw C# and .NET for what it was, Java done right, and he got on board with the idea - but dont mistake for a minute where his heart is. He is a dyed in the wool lover of Linux. He respects Microsoft as a company and realizes that he can feast off their mistakes and doing big things.


Other than seeing him discuss with Keith Packard about Java at FOSDEM, I never had the opportunity to talk with him.

My observation is based on how I see his career since the early GNU/Linux days.

Maybe I am being unfair, dunno.

Note that I do appreciate lots of stuff that come out of Redmond.


> Couple that with the fact that he saw C# and .NET for what it was, Java done right

C# has been a step up over Java, while .NET went in the other direction, getting all the things that Java got right backwards. In spite of .NET being heralded as the second coming of Java back in 2003, Java is stronger than ever and the ecosystem is probably much bigger than .NET will ever be.

The problem that Microsoft always had, and I don't fully understand the dynamics at play here, is with the ecosystem they've grown. Whether this was on purpose, or due to platform limitations, or it just happened because they attracted the wrong kind of expectations, or maybe because of cultural issues, is up for debate. But the fact is the ecosystem is extremely weak and filled with snake oil offerings, with .NET developers waiting for Microsoft to throw solutions over the wall for everything, while complaining about Java's fragmentation, when in fact Java's fragmentation is its bigger strength, as it's based on open-source that survives and competes and evolves and is a much healthier situation than the clusterfuck that happens when a paternalistic company is in charge, like with Windows Forms/XAML/Silverlight/HTML5.

Yes, Java as a language sucks, but focusing on that while ignoring the JVM and the whole ecosystem around it is a pretty shallow comparisson. Hats off to Miguel, he saw something that he liked and built his own version. But for devs looking to make choices, without imposed constraints, picking .NET over Java makes no sense whatsoever.

Even the original motto, with .NET being a runtime for multiple languages whereas Java was a language for multiple platforms proved in the end to be false. The JVM is not only multi-platform, but technically speaking it is much better at hosting other languages, with proof being the alternative languages implementations such as Clojure, Scala, JRuby, Jython, Groovy and Rhino, all of them popular and with healthy communities.

Here's what Erik Meijer has to say about Scala, btw: https://twitter.com/headinthebox/status/438355100310831104

Here's what the Java ecosystem routinely does, as open-source: http://www.robovm.com/ ; http://oss.readytalk.com/avian/ ; https://github.com/google/j2objc

And here's the best IDE ever, coming from the same people that are making Visual Studio usable: http://www.jetbrains.com/idea/


I'm not sure why your being down voted, that was my impression as well.


Owning a company is probably a lot more enticing that working for someone else.


Great news if true. I've always thought MS should be more involved in the Mono/Xamarin platform. It makes far more sense for MS's mobile strategy than adding Android compatibility to WP. Instead, encourage devs to create a single .NET app that can be deployed to Android, iOS, and OSX, in addition to first-class support on WP and W8. You'd lose out on the current hot apps, but for the future it makes sense. For instance, several Nokia X Android apps were ported from their WP counterparts using Xamarin - http://blog.xamarin.com/nokia-x-for-csharp/ .

My only concerns if this were to happen are,

* What happens to Mono on Linux, BSD & OSX? Does Mono simply become a deployment target for mobile devices?

* What happens to MonoDevelop? Will VS be the only way to develop such apps?

* What about the web? I'd love to see a Mono port to pNACL or asm.js. An NACL port already exists, but it would be great to have one codebase targeting almost all platforms.

Either way, as someone considering using .NET with ServiceStack on the backend and Xamarin on the frontend, it's very exciting.


This would be great news, but I'm worried they'd stop developing the tools for other (non-MS) platforms. If anything, they need to do the opposite and make building iOS apps in C# a better experience than building them in Objective-C. Right now, if I know my app will have more than just the basic animations/UI elements/etc. using Xamarin/C# just isn't an option, since I don't know if it supports a more advanced feature set.


> but I'm worried they'd stop developing the tools for other (non-MS) platforms

This seems like an odd concern, since Microsoft's tools for Windows are better than Xamarin's tools for Windows. They'd be buying Xamarin specifically for their non-MS tooling.


Microsoft have been purchasing cross platform applications and tools and shutting them down forever.

In general it is what they do.

If they do not do that for Xamarin, it would be a departure.

So, I will wait and see. it does sound hopeful though.


In general it is what they do.

I am sorry, but that generalization merits some sources. Can you give me some examples of Microsoft buying a cross platform tool and shutting it down. Mind you I think you are inferring they purchase to eliminate competition. Not a situation where they buy something like Groove, run with it for a bit, see that it is not getting traction and then kill the product.


Well, it's a long time ago... but Microsoft bought our company Cooper & Peters, Inc. in 1997. We made a cross platform java ui library and a portable office clone. And yes, they really did buy us to shut down our portable work.


While Microsoft didn't kill Virtual PC after they bought it, they did kill its support for OS X and Linux.


Not really. It has morphed into Hyper-V, which runs just about everything.


It will host some stuff. Virtual PC used to run on an OS X host which is the really important bit for people who don't want to run Windows on their box except heavily contained and wrapped up in a VM to be deleted each time.


Not without some kind of effort.

Lets turn it around though, can you give some examples of Microsoft buying a cross platform tool and continuing to support multiple platforms with it?

I cannot think of any offhand.

I dont think they necessarily purchased it to eliminate the competition exactly, there is likely something about the tech that they really like/want. or maybe it is the people involved.

My wild guess is that they love the ability to target other mobile platforms easily, and will continue to support that. I do predict though that over time they will discontinue/shutdown/slowdown/disable the ability to develop for those multiple mobile platforms on Mac OS X and Linux. ie, that their goal in this case will be to persuade developers that they should be developing for all mobile platforms on Windows, using C#


FoxPro


The thing that's different in this case is that Satya, and not the original founders, is calling the shots.


I don't think that's sufficient evidence to throw your vote behind an effort that will most likely end up screwing up the most productive development environment to come along in years (C# via MonoCLR on OSX).


Right, my concern is that they'll shut down the tools for non-MS platforms.


Then what is the point of buying Xamarin? To shrink the group of potential Windows Phone developers even smaller than it is now?


I think you misunderstand - making C# a first class programming language for ALL platforms helps Windows Phone way more than making it some half-ass solution.


or to shut it down quietly.


They just unveiled cross-platform OneNote. They're about to unveil Office for iPad, and Azure works with any OS. Clearly they're moving in a different direction under Satya. The old, xenophobic MS seems to have morphed into a saner, more humble company that wants to play ball with all platforms.


If they just brought out cross platform anything, it must have been in the works at least a year before Satya was appointed. More likely, they had already decided on a new approach to cross platform support and wanted a fresh face to front the new strategy.


New approach was made public when Ballmer announced that Microsoft was now a "devices and services" company...


Xamarin maps iOS and Android API's 1:1, and you usually have access to bindings within days (sometimes hours?) of SDK releases.

Note the date: http://blog.xamarin.com/introducing-ios-7-support/


Yes, for all the brilliant tech guys here, people seem to be incredibly misinformed about Xamarin. It is not like Titanium or Codenameone; it's a C# API on top of the native SDKs. It's not an abstraction, it doesn't allow you to write your frontend code one time for all platforms. And it does allow you to use all and every native feature by using the native APIs. It's just weird everyone here keeps crying about 'it has to be objective-c/java' without actually checking with Xamarin is apparently.


Recently priced out Xamarin for my organization, that is super expensive. Do most people buy just 2 platforms (Android and iOS) per developer?

How does Xamarin do with differences like the Android Action Bar vs. Apple's bar at the bottom?


Yeah, price was an issue for me (using it as a single developer for a hobby project).

I started doing an Android app using it and loved it but when it came to pay for the developer version, I couldn't justify the cost - especially for an ecosystem that is constantly changing (and therefore requires constant updates which are also paid). I sucked it up and re-wrote the app in Android Studio. Nowhere close to as pleasant as Xamarin but got the job done.


It's magnitudes cheaper than hiring a team of developers for each mobile platform, like what most of the sheep following the herd companies seem to do.

Xamarin leaves details to do with views and presentation up to you. In a properly designed application using MVVM pattern you can use the appropriate native and best practices per platform.


There must be some cons of doing this as well though right? It's great that you can save a developer per platform and that you have one code base but is the end product as good as something that a dedicated developer for that platform would produce?


Right. You still ideally need someone who knows iOS to do the iOS app and someone who knows Android to do the Android app. Because the best way to build apps on each one is still different.

What Xamarin basically does for you (from my experience using it) is that you can now share the bits of code that are not OS-specific (like your business logic, data access layer, web services etc...). It doesn't try to hide the underlying platform from you though.

It's not a solution for write-once deploy everywhere (those solutions suck anyway).


UI implementations are native to each OS, the C# code is often shared between apps but UI interaction code tends to be per platform. There are some places that abstraction layers make sense but part of the value proposition is that you still have a completely native build and native look and feel. Therefore, in these UI cases, you write platform specific code.


I tried out Xamarin over a year ago (around the time 4.0 hit) with a bit of enthusiasm because C# is a good language and ended up frustrated by bugs.

I'm excited about the muscle of Microsoft getting further behind the platform. It is used surprisingly frequently for iOS apps. Regardless of whether I end up using it, this is a good thing in terms of pressure on Objective-C/Cocoa and Java/Android to improve developer workflows. This is exactly the kind of competition the mobile development space needs.


What would this mean for Mono on platforms like Linux? I hope it gets supported. Everyone keeps talking about mobile but some of us run Mono on Linux and love it.


Mono is independent from Xamarin. It would stay that way and I doubt Miguel & Nat would let is flounder. It's the basis upon which this who story is based.

Mono has its own devs and community.


Not again! Fortunately when Attachmate acquired Novell it didn't stop mono/linux. Xamarin was completely focused on mobile apps but for the core of mono and monodevelop it has been great times.

But what will happen now? Will Microsoft silently kill cross platform, especially linux? What interest do they have not to do it?

Having invested heavily in a linux/mono/web stack this worries me a lot.


Might be worth reminding that Mono and Monodevelop are still LGPL license software, so they can't exactly "shut it down". The Xamarin products for mobile development are not freely licensed - that's what Microsoft are purchasing.


If they announced this at the Microsoft Build conference in April, along with some sort of license giveaway for attendees, there would be an uproar of applause and cheering. Satya (if he was the one to announce it) would in one fell swoop be absolutely adored by the remaining faithful MS stack developers.


Next stop, Microsoft to acquire Unity3d?


I'm frightened by this. Unity is the biggest push for C# other than Microsoft though. Hopefully Unity would never sell because once it is owned by a single platform, that will get preference and the whole multi-platform jig is up. That would further fragment because other platforms wouldn't trust Microsoft. Unless of course they sell off Xbox like Elop wanted to do. However Unity strongly relies on Mono which will now be run by Microsoft if this goes through. Either happening will cause some customer rage.


Unity would have to fork Mono, as would Gnome and Canonical and Redhat, etc... The comments here seem very trusting of Microsoft. If it was Oracle a fork would be a given.


I think they're already using their own fork of an older Mono version. They couldn't work out a mutually beneficial licensing deal with Xamarin to keep using their newest Mono versions or something.

I think Unity have a good relationship with MS, so Mono being moved to MS should be good news to Unity -- for a while.


As long as they don't stop Rust (game) development. I'm playing it on Steam Linux lately.


If that would make them finally adopt a more modern .NET runtime, it would be good news.


I wonder if Nadella was involved in this move.


Nadella is going to blow Microsoft wide open. I wouldn't doubt it for a minute.


What do you mean by blow open?


I think this is a great move for both Xamarin and Microsoft. The company I work for is currently using Xamarin to help create cross platform apps with a consistent backend architecture. Sure, we have to develop different front ends for each platform, but we can leverage C# for everything and we don't super stars on any one platform to allow us to generate things quickly and well.

I was waiting for something like this to happen, ever since I watched this video from Hanselman at the Xamarin Evolve conference last year: http://www.hanselman.com/blog/XamarinEvolve2013TalkVideoHowC...


Windows Phone might not be a winner, but a Microsoft .NET compatible runtime on other platforms, especially Tizen, Ubuntu, ChromeOS, and Sailfish/Mer would be a a Very Good Thing both for these new OSs and for Microsoft.

Consider, for example, a Jolla handset running Sailfish, which can run Android apps with the Myriad compatibility runtime. And add to that the ability to run Microsoft .NET apps.

Or, if Microsoft is getting serious about adopting the Android-Asha that Nokia cooked-up: Add a .NET runtime, and now you have either something very interesting, or maybe The Island of Dr. Moreau's OS mashups. But it will be interesting.


I was worried about this last year when Xamarin announced their new revenue model: what protections are in place for the various open source pieces of their technology? Last time I asked for more details it stopped because it was my job to limit the scope of the answers with a list of specific questions; I felt it didn't make sense to narrow things down like that.

https://news.ycombinator.com/item?id=5251474


Guys this is bad new! I don't see why everyone's cheering this on. Xamarin is what gave life back into the Mono project. It renewed interest in the Mono VM ecosystem, educated people about the possibility of running Mono in the enterprise....Xamarin was giving Mono the boost it needed. Mono sat dead for years...Microsoft's probably just trying to buy Xamarin to cherry-pick the cross-platform mobile development and kill off the VM outside of a mobile app context.


Nice buy.

Microsoft, buy Unity next and you are set for the next 5 years.


Does Apple allow you to publish Apps built from this? Or does it just generate Objective-C projects that can then be debugged and published through Xcode?


Xamarin.iOS generates full iOS binaries, not Objective-C source code, and they can be published to the app store.


In my humble opinion, when Microsoft gets on board you know we've reached the top and the bubble is about to pop.


Any comment on a comparison with html5/js? Especially for early-stage start-ups that need to prototype quickly.


It compiles down to native code for the platform. So its not really in the same category as doing a prototype with html/js.

It's more of a replacement for Objective-C on iOS and Java on Android. You'll still need to build two different apps for the two different platforms (possibly more for Android) using two different APIs. However you get to work in a nicer language and can share your core functionality codebase between the two platforms.


Thanks.


I also hope they will end the MS-Novell deal, given it's problems and it ditching Mono years ago.


Is this good news or bad news for open source C#/.NET development?


Bad news.

If Microsoft was interested in having a cross-platform runtime or a cross-platform IDE, they could have done it years ago.

Now, as some kind of side-effect of buying Xamarin, the have acquired most people behind Mono/MonoDevelop ... how do you think this will work out?

Maybe not immediately, but as soon as someone in the management decides that costs need to be cut, someone will ask the question why microsoft maintains two runtimes, two class libraries, two IDEs, etc. and kill them.


Would this make Xamarin free ?


That is a great question, I doubt it.

That said, Visual Studio is not a cash cow for Microsoft and making it totally free might be a key move in starting to win back dev mindshare.


That said, Visual Studio Express is free in multiple versions,inlcuding ones for the web and Windows phone... http://www.visualstudio.com/en-us/products/visual-studio-exp...


Has anyone used Xamarin to build an app on iOS and Android? What was the experience and time to market like? Is the end product a full native app, not a hybrid app? Are there any cons?

I am currently learning Intel XDK but surprised why I have never given Xamarin a thought.

p.s. What about QT creator?


Yes. iOS. Everything but UI was C#/Xamarin. Biggest pain was ramping on iOS and not realizing just how awful Storyboard was and how many was the Xcode designer wanted to screw me.

The integration between the two using Xamarin Studio on the mac felt slightly clunky at times. Tweak UI, hook up event handlers, go back to Xamarin... watch it pull those changes across. If it failed, and it did at times, you could end up repeating changes.

Xamarin Studio is not Visual Studio. Better than Xcode, but it's not nearly the tool VS is.

Final app is a native experience nearly on par, performance-wise, with objective-c stuff. Most perf issues I hit also had more to do with working through iOS patterns & practices (e.g. long table views/lists with custom cells).

The cons are usually friction and requirements to understand more than a single tool/language. You will need to bring up multiple games at once.

There is a 1:1 mapping between iOS SDK and library access in the Xamarin API.

I also did the kata thing and made simple apps to deploy across platforms just because I could. That was fun.


I have built a lot of apps with Xamarin (and others like Intel XDK and it's predecessors); Xamarin has been the best experience for me so far. I don't mind Objective-C, but compared to C#/F# (yep F#! Nice!) it's not very nice for my taste. Xamarin fixes that with 2 very nice languages and a solidly written small layer on the native API.

I have produced apps for iOS and Android with it after having written many native apps for both, so the transition was very easy as you use the same API's. You just reuse a lot of non-UI code.

Note that I don't use visual tools for either platforms; not in Xamarin nor native; all UI is handcoded which, for me, has been proven to be a lot faster indeed. Reuse, refactoring and reasoning with UI code are easy that way while these visual aids don't really do anything beyond "Hello World".

QT Creator is nice but when I tried it 6 months ago it was not ready for prime time mobile wise and it is an abstraction over the gui/api meaning it is farther away from the API/device than you would sometimes want.

Intel XDK to me was a horrible experience, but after making so many HTML5 mobile / hybrid apps, I learned to hate the process. It's not ready; just forget about it for now. Make web stuff (responsive, web apps) in HTML5, make apps in something else.

I would suggest learning native (Java/Objective-C) first, getting some good experience with that in, then moving away from the visual tooling like storyboards etc (It's a matter of taste but > 100 apps later I would never use it again unless it improves a lot somehow... and I don't see that happening) and then maybe use something like Xamarin if you don't like the original native languages or want to reuse a lot of code. A more painful way of reuse which is used in games a lot is to write the common code in C++ and only the UI in the native tech. This is not a nice process at the moment IMHO esp as Android requires you to do that via the NDK and I have had issues with that.


I have built multiple iOS and Android apps with Xamarin and found the experience to be great. I love C# so being able to use that was a plus and there are some cases where Xamarin made the APIs of the native platform a bit cleaner by implementing some abstractions. All the native plumbing was still there but implementing a tableview in Xamarin on iOS was quite a bit shorter in code than in ObjC.

It really is a phenomenal piece of engineering.

Biggest drawback, hard to find examples of things in C# so you have to be able to read documentation and code samples in ObjC or Java and mentally map them to C#.


That's why I suggest you learn 'native' on both first before moving to Xamarin; it's very easy for me to map those code examples. Actually especially when Xamarin used more idiomatic .NET for a particular case; it is more natural to me so it's actually the first thing I try when I see an example.


Exactly true. Given the importance these days of using example code, you will spend time "porting" these samples to c#.


I've also used Xamarin to develop for both Android and iOS, and I found it to be a good experience. The tools deliver what they promise, in my opinion. Built application look and feel like full native apps.

I don't want to repeat the comments made by others, but one other other thing that impressed me was being able to compile c# code into a portable class library dll on windows, then just copy the binary to a macbook and link it into my iOS app project. Very cool code reuse.

Not knowing ObjC made getting started on iOS harder than it could have been because examples tend to be in ObjC - although Xamarin have some useful snippets and recipes on their site. Android was easy because of the similarity between Java and C#. You still need to learn the platform APIs, obviously.

Its been some time since I felt so positive about a new piece of developer-orientated technology. Definitely recommended.


Dr. Dobb's did a review of this experience: http://www.drdobbs.com/tools/xamarin-20-review/240150634




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: