Mono developers have shrunk their open-source implementation of the .NET runtime down to iPhone size. Novell on Monday unfurled MonoTouch, a commercial toolkit that allows developers to use Microsoft's development framework to build apps for Apple's ubiquitous mobile.
MonoTouch consists of a suite of compilers, libraries, and tools for integrating with the iPhone and iPod Touch SDK. It lets developers use C# and other .NET programming languages for the Apple devices, rather than wading into C and Objective-C.
"It was challenging to bring .NET to the iPhone, but we've developed an entire pipeline that begins with our Mono development IDE, and goes all the way to deploying to the device," said Novell's lead developer, Miguel de Icaza.
"It was kind of a product we didn't plan on doing initially," he said. "It was mostly user demand."
But several changes had to be made to Mono in order to comply with Apple's extremely restrictive approval requirements. For iPhone apps, Apple doesn't allow just-in-time engines at the kernel level, and devs are barred from using scripting engines.
MonoTouch avoids this with a static compiler that turns .NET executables and libraries directly into native applications. The apps pop out without an interpreter and using only native code.
"What we had to develop is basically a technology that compiles .NET statically," said de Icaza . "This is the first time that .NET has been compiled statically into native code – and we had to do a lot of work to turn .NET from a very dynamic runtime system into a fully static system."
Unfortunately, that work – in addition to the irresistibly lucrative call of the iPhone itself - comes at a price. More specifically, a retail price. For individuals only building applications for the Apple Apps Store, MonoTouch sells for $400 per developer for a one-year subscription, (which includes maintenance and updates). MonoTouch Enterprise Edition is available at $1,000 per developer for a one-year subscription or as a five-developer Enterprise license for $4,000 per year.
"This is a departure for Mono as a purely open-source project," said de Icaza. "It's always been available as open-source for desktop and server applications – but we consider mobile applications as a space where Mono would be licensed."
Until now, direct revenue has been limited to selling Mono for embedded systems to a small number of game makers. But de Icaza said that until now, the project hasn't done anything with mass market appeal.
"When Mono is used on Linux, we're all on the same playing field and it's all open source," said de Icaza. "But when it comes to the iPhone we felt that the developers are targeting a proprietary device with proprietary tools. For us, it's a way of getting revenue – but we also don't feel the kind of guilt that's associated with licensing."
MonoType 1.0 ships today with limited support for Microsoft's LINQ, but it's scheduled for improvement with MonoTouch 2.0. Today's incarnation does, however, come fully prepared for the new APIs exposed in iPhone Software 3.1. ®