Linked by Kroc Camen on Tue 17th May 2011 12:05 UTC
Mono Project Two weeks ago we covered the news that the Mono development team were let go kicked out by the new owners of Novel, Attachmate, apparently to move operations to Germany. Miguel de Icazza, founder of Mono, has taken this opportunity to break off on his own and has started a new company, Xamarin, to bring commercial .NET development products to iOS and Android.
Permalink for comment 473501
To read all comments associated with this story, please click here.
RE: Comment by Morin
by tanishaj on Wed 18th May 2011 04:21 UTC in reply to "Comment by Morin"
Member since:

> Now he has decided to port Mono to iOS, a platform where the vendor
> has been extremely hostile to alternative development tools in the past
> and has a penchant for changing the rules with no recourse for
> developers.

Those were my first thoughts. .NET on Android? Go for it. .NET on iOS? Sounds like Apple is going to yank this as soon as it is popular enough to show up on their radar. The F.U.D. that developers experience about this (I certainly do) isn't going to help either.

That being said, even with all legal hassles and Apple control-mania aside, I'm confused over the value of .NET on either Android or iOS. Sure you can do it, and it will probably be comfortable for a seasoned .NET developer trying to build apps on either system.

But how up-to-date will this be compared to the native frameworks? What about quality? I am certainly convinced that .NET is one of the top-quality development frameworks out there, surpassing Java in many (but not all) areas. But on Android and iOS, it would be a portable-rather-than-tailored framework torn between supporting the native functionality and still being .NET, while the native APIs provide exactly the intended functionality.

Last but not least, .NET is strong in desktop and server development, and there's still a lot of money to be made, even with Microsoft already offering their stuff. I'd bet there are many existing and potential .NET-on-Linux systems out there; MS's .NET development tools could use some competition to catch up (seriously, they're still trying but failing to imitate Eclipse), and free .NET libraries and frameworks are still in their infancy compared to their equivalent for Java. Plus many Java developers have become cautious about Oracle's next big screw-up.

The commercial opportunity for a small company to provide .NET dev tools is definitely on mobile. I think that Xamarin has exactly the right strategy.

You have clearly never used MonoTouch. First of all, the quality is now excellent*. Second, you can access pretty much everything iOS offers through the MonoTouch APIs. Wherever the native API provides "exactly the right functionality", there is a MonoTouch version of the same API. The best examples are all the GUI functionality. Miguel and his team (now at Xamarin) have done an excellent job of creating excellent iOS APIs that feel "right" to a .NET developer.

The upcoming Xamarin .NET for iOS will use exactly the same API as MonoTouch does now (we are told).

Up until now, MonoTouch has launched new versions practically simultaneously to the release of new iOS versions from Apple. You could use all the new functionality right away. Obviously this will take a bit of a hit while the Xamarin team writes their new .NET for iOS product but I fully expect them to be back to their old magic in the next six months or so.

Why use .NET to develop iOS apps? Well, how about the fact that it is a managed framework. Not having to worry about memory management (garbage collection) sound useful to you? It sure does to me. How about the fact that it brings much of the excellent .NET framework with it? I wrote an app earlier this month that includes both Feedburner (Blog) and Twitter feeds. I was able to use LINQ-to-XML to do in a few lines what would be a royal pain the @#$* to do in Objective-C. I also used a custom micro-ORM that I wrote myself (built over ADO.NET) to do the database work. I originally wrote this for an ASP.NET app and was just able to reuse it wholesale in my iPhone app. Very nice.

Why use .NET on Android? Well, to some of us Java just seems like going back to C# 1.1 which is just not fun. But let's look at that app I just mentioned above. If I use .NET for Android to write the Android version, I can share almost all the non-GUI code with the version I already wrote for iOS (including the database and XML processing code). Guess what, I will be able to use it again if I make a Windows Phone 7 version. The more sophisticated my app is, the bigger advantage this becomes. Exactly what other dev tool allows me to do that?

Mono is already popular on iOS. Apple took a run at restricting what tools developers use for iOS programming and was shocked to learn that a lot of the big shops responsible for their most important apps do not use pure Apple tool-chains. Apple had to back down and abandon the idea of Objective-C only apps. I do not see them being more successful in the future. Alternative tools (like Mono) are only being used more and more.

What Apple does insist on is that the code compile down to native instructions (no interpreters or virtual machines) and only rely on native GUI widgets. MonoTouch does exactly that.

If you judge a MonoTouch app just by the bits that end up on your phone, it creates completely native iOS applications.

* I do have to admit that Mono for Android (just released) is not up to the same quality standard. The present situation means that this will remain the case for a while. Again, I have no doubt myself that .NET for Android will be mature within the year.

Reply Parent Score: 2