Channels ▼
RSS

Open Source

Catching Mono: .NET Alternative in Transition


Microsoft's .NET runtime platforms and its Visual Studio development environments represent for many developers the height of closed, proprietary systems. Although Redmond has released much information about the internals, the code that makes up .NET remains a carefully guarded secret. This careful guarding means, among many things, that .NET and Visual Studio run on the platforms Microsoft favors. Today, that means only Windows.

When .NET appeared nine years ago, an enterprising software developer, Miguel de Icaza, took on the job of creating an open source equivalent, along with the necessary development tools. This project, which he named Mono after the Spanish word for monkey, generated considerable controversy. It was viewed by many in the open source community as a form of subversion; namely, that it provided an antagonist, Microsoft, with the benefits of the very open source process and values it disdained.

De Icaza and the developers he worked with persisted, and in a remarkably short time had running examples of the.NET equivalent and VS counterparts. His team polished the software, so that it was a first-class alternative to the Microsoft products. Then his group of iconoclasts was hired by Novell.

With Novell's financial support, Mono became the premier platform for developing .NET applications for Linux, Mac OS, and mobile devices. Since Novell owned the SUSE LINUX distribution and had close ties to Microsoft, Mono appeared to be a natural investment. Contrary to popular belief, Novell's ties to Microsoft didn't detrimentally affect Mono. "Microsoft was supportive of our work," De Icaza says, "Not in an official way, but they answered questions, and my contacts there were always friendly."

Late last year, everything changed when Novell was unexpectedly acquired by Attachmate, a company that purveys terminal emulation tools. Curiously, some of the funds for that acquisition came from Microsoft itself. While Attachmate hasn't revealed its strategy for other products, it has determined its path with regards to Mono: In May, it fired all the developers. Attachmate retains the intellectual property — much of which is open source, and much of that is copyrighted by Novell — but it no longer really has Mono.

This transition raises questions for .NET developers interested in cross-platform product delivery. For the time being, the Mono tools are all downloadable from the project's website. But what about ongoing development?

De Icaza has formed a new company, called Xamarin, with the core Mono development team. His first goal is to push ahead with Mono on mobile devices. Specifically, Mono for Apple iOS (called MonoTouch) and Mono for Android. Reached at the company's Boston headquarters, he says that the immediate goal is to enable developers to use Microsoft's C#, which he terms a "beautiful language," on mobile devices. The overarching aim is to deliver true portability, in which one language can be used for development on three key mobile platforms — the third being Microsoft's own Windows Mobile.

Each mobile device has its own unique peculiarities, de Incaza says, but most of the code will port without extensive modification and the rest can still be done with C# due to Mono. Desktop Mono is less of a priority for Xamarin, as the available version for Windows, Linux, and Mac is mature and stable.

For many developers, the continuation of de Icaza's team's work surely is good news. The question remains whether Xamarin can secure the backing and generate the sales momentum needed to keep it going and retain developers' faith in Mono.

Write to Andrew Binstock at alb@drdobbs.com


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Video