Xamarin Beckons Windows Developers to Build iOS and Android Apps

Nat Friedman was nearing the end of an 18-month trip through Uganda, Thailand, and Cambodia with his new wife Stephanie when he got an urgent call from his old business partner Miguel de Icaza.

Back in 1999, Friedman and de Icaza had co-founded a startup called Ximian. The company was best known for launching an open-source project called Mono that was intended to make it possible for companies with Linux machines to run software written for Microsoft’s .NET environment. Novell bought Ximian in 2003, and supported Mono as an R&D project; the Mono runtime environment eventually wound up inside a variety of hardware and software products, including IBM’s S/390 mainframe and the Unity authoring tool for 3D video games.

When Friedman finally left Novell in 2010 to take the well-deserved trip, de Icaza stayed behind. But in mid-2011, Friedman relates, “Miguel called up and said, ‘Hey, something has happened. Novell got bought by Attachmate and we all got laid off. What do you want to do?’”

It didn’t take the pair long to hatch a plan. “We decided we would try to get Mono out of Novell and try to build a company around it,” says Friedman. “But even though Mono was used on servers and gaming systems, we made a decision early on that we were going to be a mobile software company, with Mono as an enabler.”

Nat Friedman, co-founder and CEO of Xamarin

It’s a huge leap from .NET to Novell to mobile, and I’ll explain in a minute how Friedman thinks Mono will figure in the smartphone revolution. But the big news this week out of Xamarin, the San Francisco- and Cambridge, MA-based company Friedman and de Icaza founded last summer, is about money. After a year spent quietly bootstrapping—and talking Attachmate into granting them a perpetual license to Mono—Friedman and de Icaza have now roped in some major funding, collecting $12 million from Charles River Ventures, Ignition Partners, and Floodgate.

Xamarin already has plenty of revenue coming in the door from developers who subscribe to its mobile development environment, and it didn’t really need to raise the capital, says Friedman, who took the CEO post (de Icaza is chief technology officer). But “a couple of months ago we decided this was something we should do,” he says. “A couple of big companies are going to be created out of this transition to mobile, and we would like to be one of them. So investing heavily in go-to-market and the product experience … is what we decided to do.”

Now, if you follow “this transition to mobile” at all, you know that the market is a fragmented one. Neither Google’s Android operating system nor Apple’s iOS (which runs on iPhones, iPads, and the iPod touch) have a clear lead. And Microsoft isn’t completely out of the running: its Windows Phone operating system, with its slick Metro interface, has many fans. Soon there will also be a wave of Microsoft Surface tablets running Windows RT and Windows 8.

As I’ve explained before, the problem for mobile developers is that these three software worlds—Android, iOS, and Windows—couldn’t be more different. Apps for Android have to be written in Java, apps for iOS are in a language called Objective-C, and apps for Windows and .NET are mostly written in C# (pronounced C-sharp, like the musical key). If you want to run an app that will run “natively” in all three environments, you have to write it three times. But very few programmers have a command of all three languages, to say nothing of the user-interface quirks that make each platform unique—the fact that iOS devices have a single hardware button, while Android devices have three or four soft buttons, for example.

That’s where Xamarin wants to help. In the world of desktop computing, there’s long been a single dominant player, Microsoft, and a single dominant application environment, Windows and .NET. As a result, there are a lot more C# programmers out there than Java or Objective-C programmers. (Microsoft says there are more than 8 million of them, in fact.) If you could give these developers an easy way to write iOS and Android apps using just C# and .NET, you’d be opening up the mobile market to a huge new talent base.

That’s exactly why Friedman and de Icaza wanted to pry Mono out of Attachmate. With just a little monkeying, it turns out, the Mono runtime environment can be made to run on iOS and Android, which means applications written in C# can too.

“We think the mobile, post-PC app development world is going to be the biggest software market of all time,” says Friedman. “But there isn’t a single dominant platform and we don’t think there’s going to be one. So you have all of this energy going into supporting Android and iOS and maybe Windows. How do you do that and still deliver a great experience? It’s an unsolved problem, but we believe we have a unique tool that is really fantastic.”

Xamarin's MonoDevelop integrated development environment

What Xamarin actually sells is access to an integrated development environment, or IDE, called MonoDevelop, and a way for programmers to compile their finished C# programs into packages that will run on iOS and Android devices. These packages include a specialized version of Mono (it’s called MonoTouch on iOS, and Mono for Android on Google devices) that serves as a runtime environment, mediating between the C# code and the native operating systems on the devices.

MonoDevelop provides special software hooks so that apps can communicate with mobile hardware components such as cameras, microphones, and accelerometers, and also includes tools for debugging and performance analysis. Finally, it connects with Xcode Interface Builder, the tool that most iOS developers use to develop icons, buttons, and other user interface elements for iPhone and iPad apps; on the Android side, Xamarin provides a custom interface design tool that Friedman says is better than anything else available to Android developers.

The apps Xamarin users create using C# end up looking just like native apps—because they are, Friedman says. “We are the only ones who give you a way to share code and have no compromises on the native access,” he says. “We have customers like Rdio who have never programmed any C# before, but they thought it was a better way of writing mobile apps, so that’s why they adopted it.”

When I said before that mobile developers have to know either Java, Objective C, or C#, that wasn’t quite true. There’s another possibility: you can write your app in the languages of the Web—HTML5, CSS3, and JavaScript—and enclose it a native “wrapper” before installing it on a given mobile device. That’s the approach taken by PhoneGap, a mobile development framework that’s now owned by Adobe. And there are even more options than that: If you write JavaScript-heavy code, for example, you can use a framework like Appcelerator’s Titanium, and if you program in Ruby you can use Rhomobile’s Rhodes.

As you might expect, Friedman is a critic of all of these “write once, run everywhere” approaches. Each adds a layer of software abstraction that detracts from performance, he says. On top of that, he thinks apps written in HTML5 or JavaScript never look quite right on actual iOS or Android devices. And every added layer of abstraction creates the opportunity for more bugs, which have to be traced back through every layer, he says.

In Xamarin’s world, developers still have to adapt their apps three times for iOS, Android, and Windows Phone, but at least the apps come out looking and working better, Friedman asserts. “Three developers sit down to write a mobile app. One is using Objective-C in Xcode, one is using PhoneGap, and one is using C# and Xamarin. The Xamarin guy builds a better app, faster. That is our mission in life.”

It’s an ambitious mission, to be sure. Whether the average C# developer really has the design, UI, or UX chops to build a great iOS or Android app is the kind of question that can start a religious war, so I won’t ask it. But for millions of developers who spent the 2000s immersed in Windows and .NET, and are unconvinced that Windows Phone will conquer the world, Xamarin’s tools could offer an easy way to join the excitement around iOS and Android. And as it turns out, they’re signing up to try MonoTouch and Mono for Android at the rate of 600 per day, with many eventually converting to paid plans at a not-insignificant $249 to $1,499 per seat license per year.

Xamarin co-founder and chief technology officer Miguel de Icaza

Eventually, Xamarin will add more paid features to the MonoDevelop environment, such as pre-built code modules that could help developers build apps even faster. “I’d like to build a company generating $100 million in sales a year,” Friedman says. “We have existence proofs that we can get there. Look at Atlassian—they’re a $100 million company and most of that is from bug tracking tools.”

Does Friedman regret cutting short his globetrotting to help de Icaza rescue Mono? Not at all.

“It was an easy decision because mobile is so cool,” he says. “I went to a floating village in Cambodia where people have no electricity and no plumbing and live on rafts with tents on top, and they have phones. Once in a while a guy will come by with a car battery that they use to charge them. Those are all going to be smartphones in a shockingly short period of time. So if you can do something to improve mobile software, that is going to be a big thing for everybody.”

Wade Roush is the producer and host of the podcast Soonish and a contributing editor at Xconomy. Follow @soonishpodcast

Trending on Xconomy