Squashing A Few Myths About Mono Development

By | 2007/03/13

During my switch to KDE for a week I saw a few comments about others leaving gnome based on the seeming trend toward mono development. I have seen this in other places as well and I thought I would try to offer some information on what the mono framework really is about. I share some of the same reservations that many of you have about Microsoft, its tools and so-called “Intellectual Property“. I was interested enough that I thought I should do some research. Well here is what I found out about mono.

What Is Mono?

Mono provides the necessary software to develop and run .NET client and server applications on Linux, Solaris, Mac OS X, Windows, and Unix. Sponsored by Novell (http://www.novell.com), the Mono open source project has an active and enthusiastic contributing community and is positioned to become the leading choice for development of Linux applications. - Mono Project Website

Did I really just say .NET? Back the truck up there pal! I don’t want to develop for Microsoft! Well you’re not. .NET is a public development framework that was initially contributed to by Microsoft but does fall under their control, licensing, etc. From the Mono website:

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.

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.

Ok. I’ll translate. This didn’t really clear a lot up for me at first either. It gets better, I promise. From what I understand Microsoft put together a development framework that allowed coders to write programs in the language of their choice. In other words, you and I could work side by side on a program while I use python and you used C#. .NET, in its original implementation, allowed for this and was then submitted to the ECMA for standardization. So, Microsoft isn’t even really in charge of this system anymore although they’ve expanded it to their Passport and software-as-a-service models. These two things, and Microsofts usage of this development framework are really disconnected from Mono.

The only thing .NET, Microsofts original framework, and Mono have in common are the idea. A central cross-platform development framework.. and one is based on the other, although not dependent on the other.

Now, from what I’ve read and understand, there really are quite a few benefits of writing in Mono that should really appeal to us as a software community. Not only in developing better software but also in being able to spread our software to those not yet ready to use Linux or Ubuntu.

As mentioned above Mono allows you to write an application in a list of languages so you can use the language of your choice. You don’t need to learn something new in order to use it. Some of the languages currently supported in Mono are:

C#

Java

Boo

Nemerle

Visual Basic.NET

Python

Javascript

Oberon

PHP

Object Pascal

Cross Platform Compatibility is the second, and I think more important reason why Mono development can benefit us. Considering that Mono is supported on Linux, UNIX, OSX, Solaris, BSD and Windows you can write an application within one and almost instantly port it to the next. Assuming the other platform has the mono common libraries (which are included in Ubuntu and Windows for starters) and your application doesn’t depend on any platform dependent libraries. If this is the case you just wrote an application that can be used on Linux, OSX and Windows without any additional work.

Think of the benefits to those outside our community if we could more easily share our Open Source applications with them.. and if we can sell them on Open Source applications we’ll have an easier chance of helping them understand the benefits of free software and the ideals we all embrace.

There are already some very popular applications that have been developed using Mono. You might have already used a few of them. Banshee. Tomboy. F-Spot. Beagle. Even Second Life is developed using Mono.

You might want to take a second look at what Mono is all about. I think it has some real value. Not only for us as developers but also as a community. Thoughts?

20 thoughts on “Squashing A Few Myths About Mono Development

  1. Gabriel

    Well, portability is not an excuse to add another layer for the execution of your program. Virtual machines or the similar just add more complexity, use more resources and execute slower.

    In that case, why not Java? Wasn’t that the goal of its VM?

    And how many programs don’t use the platform libraries? I’ve used the programs you mention, but none of them are available for non linux platforms.

    So, I still see no point. Besides, looking at the Novell-Microsoft agreement and all the rumors, one can never trust or rely on what Microsoft has done.

    Who knows if someday they claim that Mono is violating their IP?

  2. Luke Hoersten

    Gabriel,
    Banshee runs on windows. http://abock.org/2007/02/21/banshee-on-windows/

    Also, C# is a great language. I’ve done a lot of Java development and I like C# better.

    The goal of Mono is not *just* portability. As the article states, Mono is a common framework for multiple languages. “In that case, why not Java? Wasn’t that the goal of its VM?” The goal for Mono is not the VM at all, merely the path that modern languages are taking.

    You ask “Who knows if someday they claim that Mono is violating their IP?” They have no legal grounds (as the article has also *already* stated). Don’t you think a large corporation such as Novell would have looked into that before they pumped money into Mono?

    Anyway, great article and, if people would actually read the article before commenting, I think that it would answer most people’s questions.

  3. Sandy

    Gabriel:

    Virtual machines *encapsulate* complexity. Writing a compiler to .NET IL (intermediate language) is much easier than writing a native compiler for language X for *every* platform you want to support. And your language benefits for free (along with every other .NET language) when the VM/runtime is improved.

    It’s also pretty nice to be able to use a .NET library from every .NET language without writing new bindings.

    If you haven’t used a language/runtime like Java or C#, then you’re probably not very familiar with the great benefits of running in that sort of environment. You can research the technological/development advantages on your own.

    The reason the programs mentioned don’t have stable Windows releases is (generally) because they are GNOME programs that rely on GNOME technologies so they will fit in with the rest of GNOME. You can’t have platform-independence *and* Utopian integration with your platform of choice without considerable work. If you follow the mailing lists and blogs you’ll see that Beagle, Tomboy, and Banshee have all been run successfully on Windows, and there is active development on supporting Tomboy and Banshee, at least.

    Finally, while some pieces of Mono may be at risk IP-wise (please see the Mono FAQ), I don’t think the Novell-Microsoft agreement has any bearing in any of this. MS has been making noise about infringement for years, so as I see it nothing has changed, except that Novell’s Mono push gains some industry credibility.

    And if you listen to “all the rumors”, I really can’t help you. 🙂

  4. Chris Hubick

    You start off saying you are worried about IP, which I agree we should all be worried about to some extent… but you then proceed to give us Mono 101 without addressing any IP issues.

    I don’t think the ECMA means anything with regard to patents (or community). I think they will put their rubber stamp on anything, regardless of it’s patent situation. I don’t see any disclosure requirements like those of the W3C:
    http://www.w3.org/Consortium/Patent-Policy/

    I also think the Novell/MS agreement does have a bearing… first we hear nothing substantial from MS at all about Mono, and now when we do hear something, it’s that Novell is paying MS huge royalties – WHY? You do not pay that kinda money for a “Covenant Not To Sue” for no reason! Anyone can say what they want about the agreement, but the money is the bottom line and doesn’t lie.

    And given the kind of FUD MS has been spewing around the Novell agreement, and the fact that they helped bankroll SCO indirectly, indicates to me that they would like nothing more than to use Mono as a tool to spread FUD over GNU/Linux.

    If MS really has the desire to have .NET become a standard, as you think their ECMA flustering indicates, then why don’t they just make an explicit patent statement regarding the technology, rather than all the FUD? Hmm?

    Although not developed and driven by any real community, Mono would be OK if the IP situation were cleared up. I would like to see a Novell/Microsoft agreement which has MS ship Mono themselves under the GPL! Ideally under v3 with it’s more explicit patent language.

    And if you want an example of how this should work, ^that^ is precisely what Sun is doing with Java! As far as all the technical benefits you cite, you are right, and Java can provide all the same benefit of .NET and Mono but without the risk! Java has a far broader vendor and community around advancing it, and Sun with their Gnome involvement is clearly not hostile towards Linux and Free Software the way MS and their FUD is.

    You can always hope that they won’t do anything… but look at the risk if they do show up with a valid patent? With Java available, and other good languages like Python, why would anyone take such a risk?

    The choice looks pretty clear to me… I will not sacrifice long term security for short term development gain. Though it seems everyone at Novell and involved with Mono wants to keep their head in the sand.

  5. John Anderson

    Gabriel, If sun had open sourced java 5 years ago when the mono project got off the ground Ximian(Novell) probably would have used it. =) Because then they could have fixed their generics 😉

  6. ploikuous

    FUD is not the same as substantiated claims. Microsoft can claim anything it wants. That doesn’t make it true.

    Isn’t the lack of legal action a decent indicator that there’s no truth to claims of patent infringement?

  7. Chris Hubick

    ploikuous, the FUD is far more valuable to them (and worse for Free Software) as a whole than any actual ruling or monetary settlement would be!

    It’s not like they need the money! Feature wise, GNU/Linux is becoming Good Enough for the masses to get by on, and MS knows they will have a hard time competing with free. This type of FUD is their only answer to staving off the impending exodus of their customers.

  8. finalbeta

    I’ve coded in .NET, and still code in Java. .NET often needs less code to do the same. It might be a bit more modern….
    Java has a load of problems, lack of proper desktop integration. (and Swings GTK is o so slow). (no KDE integration at all) But Java is now changing under the pressure of .NET.
    I much rather support Java then mono. How much people are trying to justify mono, it still leaves a bitter taste to me.

  9. Quentin

    Agreed, Mono feels quite insecure due to the IP issues.

    Plus, more importantly, it will always drag behind the Microsoft .Net implementation.

    Java also supports Solaris, Unux, Linux, Windows, Mac OS X.

    You can also run programs on the jvm that were written with other languages…
    http://www.jython.org/
    http://jruby.codehaus.org/
    And the jvm will soon support dynamic languages “natively”:
    http://www.artima.com/lejava/articles/dynamic_languages.html

    Why not use Java and give the open source world the lead, not Microsoft?

    Or even look a the Parrot Virtual Machine?
    http://www.parrotcode.org/

  10. Ludo

    We don’t have to worry too much about IP in the case of Mono/.NET.

    But there is a problem: like Quentin states, Mono will always drag behind the MS implementation.
    Java, however, has very good VM’s for almost every platform.
    The official implementation has even become F/OSS, as I’m sure you’ve heard.

    I totally agree: use the JVM instead of .NET. Sure, you benefit from the .NET classes, but the same applies to the JVM.

    And indeed, maybe Parrot will be interesting. IMHO, creating C# & VB compilers to generate JVM bytecode would be more interesting to the community (and cost less resources) than implementing .NET AND creating compilers for C#, VB, etc. for this new implementation.

    BTW, some mention you can’t have platform integration + cross platform without great pains in .NET. AFAIK, you can with Java if you use (for instance) the SWT toolkit. I vaguely remember some announcements about Qt & Java as well, though I could be wrong about that.

    The JVM is cross-platform. Parrot probably is, too. Creating C#/VB compilers for those systems would’ve been better, IMHO, than Mono’s approach.
    Sure, it allows us to run .NET applications on *nix, but isn’t it possible to create MSIL to Java bytecode/Parrot compilers?

  11. Ludo

    Follow up: apparently (see parrotcode.org), Parrot already has a .NET bytecode to Parrot translator. Glad to hear this – especially if it completely supports .NET (will have to look into that), as Mono doesn’t, unfortunately.

  12. Harish Mallipeddi

    How does SecondLife use Mono? The client itself is a C++ app. I remember reading about them planning to re-implement LSL in Mono.

  13. I Love Patents

    > Isn’t the lack of legal action a decent indicator that there’s no truth to claims of patent infringement?

    Sure. In the same way that the GIF patent didn’t exist because there was almost two decades of non-enforcement befoer Unisys decided to get all the cash they could.

    (FYI, last I heard trademarks must be enforced or you can lose the protection – but patents can be left as time bombs.)

    It’s a known fact that Microsoft patents everything that they can get away with, and we’ve all heard time and again how this is “defensive” in case other companies doing the same thing try to screw Microsoft.

    So, do you seriously think that there isn’t a single patent on anything applicable to .NET ? That’s, um, interesting.

    If I was a Microsoft strategist, I’ld happily leave time bombs anywhere I could, and not bother suing anyone until either I could make some serious cash, or disarm a threat. Until Mono looks like a real threat to Microsoft’s income, there’s no need to do anything.

  14. John Anderon

    It doesn’t matter if Mono always lags behind, Its not a race. There doesn’t have to be a loser to have a winner this case. Mono is being developed to create a great development environment for Linux but also allow us to create cross-platform applications and even if mono doesn’t have *all* of the framework implemented they’ll always have enough to make great applications.

  15. Ludo

    John Anderon: that’s exactly the problem: for Mono to be a viable system for cross-platform apps (like Java is), it has to be up to date.
    Mono’s a great system, but it doens’t beat Java – at all (except for running the .NET languages of course, but I’m arguing that it’d be more interesting to make the .NET languages running on the JVM, instead of building everything from scratch). Java also has other advantages, like speed.

  16. I used to like Java....

    I used to like Java… but there are too many things that just bug me about it… The whole generics implementations is awful at best. Large swing apps seem to cripple my computer… And there’s a freakin’ library for everything (and many cost money) which isn’t necessarily bad in theory until you start looking into copyrights etc. for each thing you want to use. And my last complaint is that it seems everything seems to be over designed, everything MUST follow some pattern or you’ll die.

  17. Nick Lake

    I like Java… but I really like C# (as a LANGUAGE). My experiences of C# on Windows has been mostly positive. To add to this I believe that the .NET framework has been well laid out for high level programmers. An advantage of Mono on Linux / UNIX that has not been explored in this discussion is obviously the initial lure towards Linux as a dev platform for existing MS-based .NET developers – an outcome that is clearly in the interests of Linux and open-source communities.

    The decision points for using Mono (.NET) on Linux should be based on a triage of considerations:

    1) usage-oriented (this really comes down to performance. Don’t use .NET if you need higher performance or you’re using MPI [for example]).

    2) client-oriented (this is all about the platforms you need to target. In my organisation we use Win2K, XP64, Linux64, Solaris and even SGI. The more heterogeneous your environment the more open you could / should be to a common framework like .NET).

    3) developer-oriented (this comes down to the skills available in your development team / organisation. Lets face it… there are sh*t loads of .NET developers around these days).

    For me at least its about balancing all of the above 3 considerations.

    A common thread in the previous posts is .NET vs Java. OK! so they’re both “interpreted” and therefore limited to lower performance applications. They’re both (theoretically) cross-platform. At the end of the day they are just languages – the implementation of an interpreted language runtime (as an added layer of abstraction) allows them to be cross-platform. But… I think the advantage of .NET over Java is the inherent multi-lingual aspect. This is important for me at least when dealing with multiple dev teams.

    In the long run I’d like to see .NET emerge more as a cross-platform dev framework standard (lets standardise it better as a wider community). I’d also like to see C# as an unmanaged language that could compile natively without the need for a CLR interpreter (??).

    Over.

  18. Robert Blyler

    Unfortunately you fail to mention that Microsoft has indemnified the developer you quote. ( Novell )

    Even the GPL v3 was changed to prevent this.
    See Richards Stallmans comments on this:

    http://www.fsfeurope.org/projects/gplv3/tokyo-rms-transcript#novell-ms

    It’s such a sleasy thing that there is a web site devoted to exposing this activity. http://www.boycottnovell.com. If you wondered why Ubuntu switched away from Xen it is explained here.

    We can only hope that organizations making deals like this ( Novell, Xandros, Linspire ) fall into obscurity though boycott.

    Even the GPL v3 was changed to prevent this.
    See Richards Stallmans comments on this:

    http://www.fsfeurope.org/projects/gplv3/tokyo-rms-transcript#novell-ms

  19. Jo B.

    Unfortunately you fail to mention that Microsoft has indemnified the developer you quote. ( Novell )

    No, you’re wrong. Microsoft indemnified Novell’s customers, not Novell.

Comments are closed.