cat /dev/DiBona/brain: Considering Mono

What are the implications behind Microsoft's support for Mono, and what are the repercussions for free software?

This may be stating the obvious for a number of users, but I thought I'd spend some time pointing out that Microsoft needs Mono a lot more than it likely is comfortable acknowledging. We Linux users can become very single OS-focused at times, thinking of the world as being black (XP) or white (the penguin, natch). I do not mean this as a criticism per se, but it is something I myself have been guilty of, having barely gotten my toe wet in the FreeBSD waters. So, I thought I'd project it onto a number of my colleagues in the Linux community--you don't mind, do you?

Languages, however, don't have this luxury; they must work on as many of the major platforms as they can to attain the popularity and ubiquity necessary to be used on a large scale by professional software developers. Exceptions abound, of course. Consider, for instance, embedded languages--small c and the transputer language Occam (specifically designed for old school multiple processor inmos transputer cores). But, for the most part if you look at how languages spread out and become popular, you can see them spread from platforms ranging from the largest machines to the smallest handhelds.

If your goal is ubiquity--and when has ubiquity not been Microsoft's goal?--then the ability to run your code on other platforms is vital. Thus, Mono is vital if Microsoft wants .Net to overtake Java, which it seems to want real bad, but perhaps not bad enough to make a version for Linux, BSD and the other major UNIX platforms. For Microsoft, reaching out to UNIX seems to include only investing in it and not actually porting tools.

My excuse: I've been thinking a lot more about .Net and Mono lately, because I am advising a company using Mono as a backend framework for a really cool piece of software. I've also looked into the suitability of the language for a teeny side project that I'm looking at as an excuse to learn the language.

After some consideration and a little bit of coding, I've found there are some very real barriers to cross-platform .Net adoption. I'm thinking mostly of the lack of a cross-platform UI toolkit. The only people addressing this lack seem to be the Mono guys. Thus, if .Net is to succeed as a preferred language where Java currently holds sway, then Mono is a vital part of that equation. If it didn't already exist, Microsoft would have to make sure that it did.

Regarding user interfaces, GTK for Mono isn't there for all platforms and winforms running on top of winelib, and the rest is underway. Is that an installable, maintainable way of providing winforms? It strikes me that this might be too brittle a solution, but I haven't found any real holes in the approach. If you have, say so in the comments, but this could be a real barrier for software with real user interfaces attached. A Mono winforms-compatible layer is key to Mono being able to compete for desktop applications and for Linux to act as a first-class platform for .Net applications.

The question for the Free Software community to ruminate is this: Is supporting Mono supporting our own desktop downfall? A statement attributed to Steve Ballmer at a party a few years ago would support this possibility. To paraphrase, when asked about Mono, he shrugged it off with a statement alluding to the fact if Mono got too popular, that's what lawyers are for. Mind you this is friend-of-a-friend kind of hearsay, but it is worth noting regardless.

Because Mono works off the ECMA spec for C# and the CLI, and because Novell has the legal resources to make the idle-lawyer threat less effective, I don't think this is some long-plotted submarine trick designed to disrupt free software adoption. In the long run a healthy Mono that can run .Net apps natively is as important to Linux as a good JVM is--that is to say, very important.

Chris DiBona is the Co-Founder of Damage Studios, a San Francisco based game company working on the next generation massively multiplayer on-line game, Rekonstruction. He was formerly an editor for and was the co-editor of Open Sources - Voices From the Open Source Software Revolution.



Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Re: cat /dev/DiBona/brain: Considering Mono

Anonymous's picture

Real world Java apps.

Re: cat /dev/DiBona/brain: Considering Mono

Anonymous's picture

You're assuming that microsoft actually wants to make their products cross-platform. I doubt that very much these days. If the .NET platform seems cross-platform capable in any way, I think it's because microsoft doesn't want to get tied to x86 in the long-term. ie, when x86 dies, or cellphones or x-boxes overtake them to become the dominant platform, MS wants to just port a basic toolkit (.NET), and announce their full product range for that new platform. As far as unix goes, they really don't care, and don't want to have to care either.

The only thing mono can do is justify using .NET, for the people who might waver on full commitment to MS. It's a mistake, imho.

Re: cat /dev/DiBona/brain: Considering Mono

Anonymous's picture

Cross-platform computing started with UNIX and the C programming language, taken to greater heights with a successor to C++, Java.

People worry too much about Mono and MS

Anonymous's picture

One of the more frustrating things (at times) with open/free software is that a lot of people have opinions... most of them not developers. It's real easy to stand on a soapbox. This includes me. I dabble. Mostly I perl and shell script.

I also happen to love Python and GTK2. What keeps me from falling head-over-heels-lost-forever is the fact that crossplatform design is work for the end-user.

If I made something COOL in PyGTK... I could show it to THREE people. Of course, there's more online but I mean people around me.

If I made a cool app in Mono/.NET, I can give it to everyone. Sure, Java lets me do this... if people install Java, and many (most?) don't. I don't like the Java language (tho I'm not qualified to say this, spending only a few days on it).

I want something that lets me target Linux, and EASILY install on a friend's Windows PC. One API, and two easy to use interfaces (windows forms, or, GTK if you can get people to install it).

There were lots of ways Open Source/FS could have fixed this years ago, and they didn't. Python and Perl and TCL could have worked on a common runtime - they didn't. They could have worked to make Tk better -- they didn't. They could have helped GTK along, but that's a different project right? They could have worked on a common API (whenever it makes sense... and it sometimes doesn't) and they didn't. We're now hearing about the GNOME and Mozilla team talking about better integration. This is positive and everyone wishes the talks happened sooner.

Microsoft did a lot of planning work on .NET, and invited folks to join them. They also filed for patents, and Balmer makes "sure you can trust me" comments (you know you can't).

In the end, I think Balmer wants to confuse us, and keep us from adopting .NET and then when we keep running 50 different API's, well, we had our chance. MS will not even sign a nondisclosure when they consider buying someone's tech... they're going to leave wiggle room to threaten us -- that's just that.

I don't think Microsoft is prepared to sue people who write free software, and use "MS patents" or their API. Literally there are too many poster children we could hold up... MS sues 12-year old programmer etc.

If they go after Novell, that's Novell's problem they are a business. Novell's strategy will be to give stuff away and win contracts for service & development. MS might respond legally, but I'm sure GNOME or Mono will not be the true target... and again this is IF MS ever brings out the legal team.

Worrying about GNOME adopting mono is unfounded. Some apps will be written in it. Some won't. Some people will actually RE-WRITE .net GNOME apps as C/GTK... let them. They'll get tired quickly. The same mindset advocated assembly apps when the desktop was 8 or 16 bits.

I can't wait for a fully working winforms, and for all this stuff to work on OS X and FreeBSD. There's a huge demand for total crossplatform compatability, and this means Mono has a lot of catch up work to do.

I think Mono will do good, but people shouldn't complain about what they are doing. It is wrong. You have to risk failure to gain real ground. If Mono fails, we'll learn something from it. We all know we'd survive just fine if Redhat went away tomorrow... because you can't bet the farm with Open Source/FS. Someone fails, and someone picks up the pieces. Like Nautilus. I want, hope and believe Mono is doing a great job. I'll be so happy to see development "easier" to make, and distribute.

Re: People worry too much about Mono and MS

Anonymous's picture

>if people install Java, and many (most?) don't.

Where did you get this info from?


Re: cat /dev/DiBona/brain: Considering Mono

Anonymous's picture

Red Hat's Desktop is here, with integrated support for IBM's Java...

Microsoft Shared Source CLI

Anonymous's picture

I don

Only the core classes and read the terms of the shared source li

Anonymous's picture

Only the core classes and read the terms of the shared source licens

The issue of submarine patents

NZheretic's picture

As a long time critic of Mono projects position on the Microsoft patents, I was relieved that after more than a year since the patent issues were raised, Miguel and Novell legal staff stated that Novell would be conducting a formal patent review of Mono. It has been month since the announcement, anyone know when the results of the formal patent review will be published?
Because patents cover functionality, even if the project is split into two distinct partitions of ECMA-based and non-ECMA components, how easy is it going to be for the third part developers adding components to the ECMA-based partition to know that he is not treading on Microsoft's patents by implementing functionality defined in Microsoft's .NET patents?

For example, XmlRpc.NET's use of XML will likely confict with Microsoft's patent application 20020059425 : Distributed computing services platform.
Although there is prior art examples of individual technologies such as the JVM etc, Microsoft patents such as the one mentioned, define and claim the interoperation of the components on the .NET platform.

In my opinion, there is NO way to work-around the issue, no amount of renaming the API calls or reimplementing the methords used will invalidate the patents.

Re: cat /dev/DiBona/brain: Considering Mono

Anonymous's picture

I wonder what the implications for software development on Linux would be if Java was open sourced.

Re: cat /dev/DiBona/brain: Considering Mono

Anonymous's picture

But then again, there is the symbiotics of Java and open source --
JBoss CEO Opposes Open-Source Java.

Re: cat /dev/DiBona/brain: Considering Mono

Anonymous's picture

I am very sceptical about Ximian's ability to produce Mono in anywhere close to fully functional capabilities, even with the backing of Novell. The entire .NET framework is massive, I shudder to think how many resources Microsoft devoted to it.
The support is so slow as to be unusable. I know this will improve, but having looked into the Mono project with interest, I get the overall impression they have bitten off more than they can chew.