Okay, for the first time ever I’m a bit jealous of iPhone users.(See below) Novel (the sponsor of Mono) has released the MonoTouch, a C# and .NET development platform for the iPhone. Granted it’s $400 for the platform but at least it’s not Objective C. For those of you that don’t know Mono, it’s a platform agnostic port of the .NET libraries, stable at about the equivalent of .NET 3.0 (which means LINQ and a bunch of other cool stuff). That means, yes, if you want to you can do ASP.NET hosting on apache and linux. Novell has long been a sponsor of mono and it seems like they’re going to get the opportunity to make some money back with the release of MonoTouch. Of course you still need to have a Mac and be part of Apple’s iPhone Developer Program which is enough to kill it for me.
For those of us with an Android phone, Mono is running in Android, it’s just not very stable. Here is a post of one of the Mono developers that compiled the Mono libraries from his Android from a debian install on his SD card. Yes, in Android he’s running debian to compile Mono. Is that not just sweet nerdy goodness? While there is no time line for a full stable release of Mono on Android it’s in active development and, unlike the iPhone/MonoTouch option, it probably won’t cost a thing once it gets stable.
So what does this mean for us doing smart phone development? When I was in college I applied for and received a grant for a platform agnostic project, written in java, to do streaming media, web cam and audio between multiple PCs. For the first month of the project I developed on linux (don’t remember the branch) with Java. I moved all the code to Windows and came across serious threading issues. I fixed all those and spent the next month developing in Windows. After that second month I moved everything back to linux and ran across serious threading issues. For the last month of the project I compiled to a shared directory and tested on both linux and Windows. I highly doubt there will ever be a stable environment that will work for all platforms, hardware is just too different. MonoTouch has specific interfaces to the iPhone APIs. Once Mono for Android gets stable I’m sure there are going to be wrappers for the Java APIs for Android. But is this a bad thing? Isn’t competition good?