Little Girl's Mostly Linux Blog

July 5, 2009

Another voice in the Mono crowd

Filed under: News — Tags: , , , , , , , , — mostlylinux @ 3:14 pm

Today I decided to formally add my voice to the many that are debating the topic of Mono in Linux. To prevent this from being just another declaration of emotions, some research was in order. The results were kind of surprising! Here’s what I found:

What is Mono?

The answer can be found on Mono’s FAQ: General page:

The Mono Project is an open development initiative sponsored by Novell to develop an open source, UNIX version of the Microsoft .NET development platform. Its objective is to enable UNIX developers to build and deploy cross-platform .NET Applications. The project implements various technologies developed by Microsoft that have now been submitted to the ECMA for standardization.

Also on that page is an answer to the question of whether Mono is a free implementation of Passport:

No. Mono is just a runtime, a compiler and a set of class libraries.

What is .NET?

My understanding is that the .NET Framework is a Microsoft platform that’s an an integral Windows component for building applications and XML Web services (distributed computing) with the code being built to industry standards to ensure that it can integrate with any other code, and either stored and executed locally, distributed on the internet and executed locally, or executed remotely.

What’s the difference between Mono and .NET?

The answer can be found on Mono’s FAQ: General page:

The “.NET Initiative” is a somewhat nebulous company-wide effort by Microsoft, one part of which is a cross-platform development framework. Mono is an implementation of the development framework, but not an implementation of anything else related to the .NET Initiative, such as Passport or software-as-a-service.

What kind of licensing does Mono use?

The answer can be found on Mono’s FAQ: Licensing page:

We use three open source licenses:

Both the Mono runtime and the Mono C# Compiler are also available under a proprietary license for those who can not use the LGPL and the GPL in their code.

For licensing details, Contact the Mono team at Novell.

When do I need a license from Novell for Mono?

The answer can be found on Mono’s FAQ: Licensing page:

We only require licensing for uses of Mono and Moonlight on embedded systems, or systems where you are unable to fulfill the obligations of the GNU LGPL.

For example, if you manufacture a device where the end user is not able to do an upgrade of the Mono virtual machine or the Moonlight runtime from the source code, you will need a commercial license of Mono and Moonlight.

Or if you ship an application that requires to statically link the Mono runtime and you are not able to provide the object code to relink Mono, you must obtain a commercial license from Novell.

How is Novell involved in all of this?

The answer to whether Microsoft is helping Novell with Mono can be found at Mono’s FAQ: General page:

Until September of 2007 there was no no high level communication between Novell and Microsoft, but engineers who work on .NET or the ECMA groups have been very friendly, and very nice to answer our questions, or clarify part of the specification for us.

In September 2007 an agreement between Microsoft and Novell opened the doors to collaboration specifically on the implementation of open source implementations of Silverlight 1.0 and Silverlight 2.0.

Silverlight 2.0 contains a subset of the virtual execution engine, and a subset of the class libraries that are designed to write rich web applications.

Microsoft is interested in other implementations of .NET and are willing to help make the ECMA spec more accurate for this purpose. Novell participates in the ECMA committee meetings for C# and the CLI.

  • Microsoft Silverlight is a runtime that delivers video across multiple platforms and browsers using the .NET framework.
  • C# is a programming language for applications that run on the .NET Framework.
  • CLI is Common Language Infrastructure, which is an archive of a large subset of the source code available in the .NET Framework.

The announcement on Novell’s page makes no mention of Mono.

Novell has a page for answering questions from the community. At the bottom of the page, Novell tries to reassure the community that Mono doesn’t infringe any Microsoft patents and that the agreement Novell reached with Microsoft doesn’t impact the rights and abilities of other distributions to bundle or ship Mono.

Can Mono be rendered useless by patents?

The answer can be found on Mono’s FAQ: Licensing page:

First some background information.

The .NET Framework is divided in two parts: the ECMA/ISO covered technologies and the other technologies developed on top of it like ADO.NET, ASP.NET and Windows.Forms.

Mono implements the ECMA/ISO covered parts, as well as being a project that aims to implement the higher level blocks like ASP.NET, ADO.NET and Windows.Forms.

The Mono project has gone beyond both of those components and has developed and integrated third party class libraries, the most important being: Debugging APIs, integration with the Gnome platform (Accessibility, Pango rendering, Gdk/Gtk, Glade, GnomeUI), Mozilla, OpenGL, extensive database support (Microsoft only supports a couple of providers out of the box, while Mono has support for 11 different providers), our POSIX integration libraries and finally the embedded API (used to add scripting to applications and host the CLI, or for example as an embedded runtime in Apache).

The core of the .NET Framework, and what has been patented by Microsoft falls under the ECMA/ISO submission. Jim Miller at Microsoft has made a statement on the patents covering ISO/ECMA, (he is one of the inventors listed in the patent): here. Microsoft’s letter to ECMA is here.

Basically a grant is given to anyone who want to implement those components for free and for any purpose.

For people who need full compatibility with the Windows platform, Mono’s strategy for dealing with any potential issues that might arise with ASP.NET, ADO.NET or Windows.Forms is: (1) work around the patent by using a different implementation technique that retains the API, but changes the mechanism; if that is not possible, we would (2) remove the pieces of code that were covered by those patents, and also (3) find prior art that would render the patent useless.

Not providing a patented capability would weaken the interoperability, but it would still provide the free software / open source software community with good development tools, which is the primary reason for developing Mono.

The patents do not apply in countries where software patents are not allowed.

For Linux server and desktop development, we only need the ECMA components, and things that we have developed (like Gtk#) or Apache integration.

  • According to Ecma International’s What is Ecma page, “Ecma International is an industry association founded in 1961 and dedicated to the standardization of Information and Communication Technology (ICT) and Consumer Electronics (CE).”

Can Mono be rendered useless by Microsoft changing the spec?

The answer can be found on Mono’s FAQ: General page:

No. Microsoft proved with the CLI and the C# language that it was possible to create a powerful foundation for many languages to inter-operate. We will always have that.

Even if changes happened in the platform which were undocumented, the existing platform would have value on its own.

Will the patent policy change with the new agreement between Novell and Microsoft?

The answer can be found on Mono’s FAQ: Licensing page:

Mono is a community project, and as such, we will continue to implement the policy of not integrating knowingly infringing code into Mono.

And we will continue to follow the steps outlined in the previous topic if code that potentially infringes is found: finding prior art, finding different implementation techniques, or if none of those are possible, removing the code from Mono.

Where does Ubuntu currently stand on the issue of Mono?

Ubuntu released a Mono Position Statement on Jun 30, 2009 in which it makes it clear that the Ubuntu Technical Board “sees no reason to exclude Mono or applications based upon it from the archive, or from the default installation set.”

What does all of this mean?

From the information above, I have to admit that Mono seems to be genuinely interested in creating a trustworthy platform for cross-platform programming that protects the rights of the users, with a plan in place in the event that anything changes to make it necessary to ensure that protection. It also means that nothing illegal has been proven to have occurred.

The wrap-up:

Despite the fact that my findings don’t support my initial belief that Mono is evil and dangerous, I still personally prefer to go with my gut feeling to distrust it and not have it on my machine. (:


Obligatory Happy Ending

And they all lived happily ever after. The end.

2 Comments »

  1. You won’t be missing too much; Mono / C# is excruciatingly slow compared to other, compiled languages, like C, C++, or Vala. (:

    Comment by ibbie — July 14, 2009 @ 11:00 pm

    • Thanks for the information! Not being a programmer, I have no experience in any of the languages. If it’s slow compared to other known languages, maybe it won’t end up being one of the primary languages – in which case a lot of the controversy surrounding it will die down. I think the biggest worry among all who distrust it is that it may eventually become a part of the core of the operating system. If it’s not quite up to snuff, that may not ever be an issue. (:

      Comment by mostlylinux — July 15, 2009 @ 11:27 am


RSS feed for comments on this post. TrackBack URI

Comment:

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at WordPress.com.

%d bloggers like this: