Linux Today: Linux News On Internet Time.

A Guest Essay In Favor of Mono (#1)

| | Comments (42)

Here we go, the first response to my invitation to anyone who wanted to have their say on the value and benefits of Mono, why it does not represent a threat to Linux, and anything else they might want to say about it. Thank you to Jo Shields for writing this. --ed.

Update 6/12-- in the interests of completeness, here is Mr. Shield's preamble from his blog:

This post is a repost for something I sent to Linux Today. Their original message was here, where they invited people who don’t think Mono causes AIDS to justify themselves. I replied here. This is a repost, for the benefit of assorted aggregators. Some context may be lost by not reading the original “invitation” first.

Thank you Jo, I was very worried about AIDS. I feel better now. --ed.

by Jo Shields

I am a member of the Debian Mono Group, Debian CLI Applications Team,

and Debian CLI Libraries Team. I've been working on packaging for the

Mono stack and applications which make use of it in Ubuntu (and Debian)

for just under a year. And, fully aware of the flame war, threats and

personal attacks which will follow, I'm going to take you up on your

"invitation". I speak for myself here - not for the Debian project, nor

Ubuntu, not for the Mono project, nor for my employer.

Your request was for "a calm presentation of why Mono is desirable, why

it is not a threat, and why it should be included in Ubuntu by default".

I'll answer these three questions individually, then offer a general

comment on your post, as well as the wider "anti-Mono" movement. This

message is GPG-signed to ensure it is published unedited. The message

as-sent will be made available at

http://retro.apebox.org/herewegoagain.txt to allow people to verify

authenticity signatures themselves.

== Why Mono is desirable ==

That's a question which depends on whom is being asked.

If you're asking a user, then the answer is "it's not", any more than a

Scheme compiler or LOLCODE interpreter.

If you're asking a developer, then the answer is VERY different. Mono

provides a well-balanced framework to enable Free Software to be

developed quickly, effectively, and efficiently. By "balanced", I mean

it is unlikely to win every single contest that one can throw at a

programming language - memory footprint, execution speed, availability

of libraries, and so on - but does fairly well in ALL of them.

Speedwise, Mono is much faster than Python - up to several hundred times

faster according to some benchmarks. It has a fraction of the memory

footprint of Java applications. It has modern features such as garbage

collection which make it easy peasy to write code with compared to

malloc()-happy C or C++. It is a well-balanced framework. As such, for

people looking to write apps for a Free Software environment, it offers

a compelling choice of framework on which to build. Several apps which

have only existed for a short time - such as GNOME Do - make full use of

functionality provided by Mono in order to be written very quickly and

easily, compared to chasing SIGSEGV around due to human errors

inevitable with C-based development. Mono was first conceived as a way

to escape from the absolute horror of maintaining a large GUI C codebase


Taking it further, Mono on the whole also enables easier migration - for

both developers and users - from legacy CLR frameworks such as

Microsoft.NET. Students who learn Visual Studio.NET at University can

take their skills and directly apply them to creating or improving Free

Software on their shiny new Ubuntu installations, without the need to

learn a new language. Businesses with investment in .NET-based

applications can look at replacing their servers or desktops with Free

Software. Whilst providing .NET compatibility has always been a

secondary goal, it is an extremely popular one, which has prompted a lot

of input and development work from assorted people into the Mono


It should be noted, however, that this use-case (Windows migration) is

not cause for including Mono by default (any more than, say, Wine), and

indeed, the libraries required to run the majority of Microsoft.NET

applications are excluded from Ubuntu installations due to lack of


== Why it is not a threat ==

This is a question which will cause nothing but angry flames - although

it certainly won't harm your page hits and resultant ad revenue.

Mono is not a threat because it is not special in any legal regard. Many

people have spent hours if not days and weeks attempting to explain

this. I'll try to do so again. There are a whole smattering of reasons

why it's not an issue, covering a wide range of topics. I'll present

these points individually.

* Mono is not the result of any deals between Novell and Microsoft. Mono

was started 4 years before that unfortunate deal took place. Mono gets

no special treatment under that deal. It is not mentioned in the deal

(as with other apps). This is important to note.

* Mono is covered by the OIN, as with most other major Free apps. Patent

attacks against Mono carry the same risk to attackers as attacks against

any other OIN entrant. Attacks against Mono would risk patent "world

war", which Microsoft cannot win. Such an action would harm their

business - and lose them money.

* Mono implements an international standard - albeit one from a

convicted monopolist. If this is a problem, why do people use C, the

standard from convicted monopolist AT&T? Mono implements an improved,

Free replacement for a proprietary offering. If this is a problem, why

do people use GNU (which provided an improved, Free replacement for

proprietary UNIX)?

* Regardless of whether or not any specific patent licenses over ECMA

334 and 335 cover Mono's implementation of those standards, if indeed

such agreements are available (ITWire's curlish "attempt" to secure such

an arrangement aside), the fact that statements have been made in public

supporting the idea of royalty-free licensing essentially reduces the

financial impact of such infringement to zero. If Foocorp has a license

to use patents, under a "non-discriminatory" license, and did not pay

for them - then it would be discriminatory to change anyone else for

them (breaking the signed terms regarding patent licensing), and as

such, those patents lose any financial value. They may, however, still

hold non-financial value (such as their use in defending against

patent-related attacks), hence not making the patents "free for all" in

any understood sense.

* Mono cannot be "disabled" via an incompatible change to Microsoft.NET,

for two reasons. Firstly, such a change would also break every single

existing app for Microsoft.NET (in fact, if it were to happen, then the

best option for those users would be to run their apps with Mono

instead). Secondly, support for Microsoft.NET is a secondary goal for

Mono - if Microsoft change something in .NET 5.0, then so what? It

doesn't prevent Banshee or GNOME Do from compiling and running fine on

non-legacy systems like Ubuntu.

* Absence of "patent protection" is not the same thing as "patent

violation". If I offer to sell somebody a promise not to sue them using

any of my patents, their taking me up on my offer is no guarantee that I

even have anything valid to sell them - merely that they are willing to

buy it. If Jim buys protection from any patents I hold, it does not mean

that Jim is infringing on anything specific - nor that if Ted does the

same thing, that Ted is violating anything either. If a house insurance

policy includes flood protection, it does not mean that your house will

be flooded - and not buying flood protection does not mean that you will

be flooded either.

* Patents covering a specific implementation detail of a project cannot

kill it dead - the example here is Freetype. Apple made some patent

threats against the Freetype developers, for using their proprietary

hinting data stored in TrueType fonts. You'll notice that Freetype still

exists today - this is because the specific METHOD that apple laid claim

to was worked around, and auto-generated hinting data used instead.

Apple's threat was diffused, and the project went on. Suggestions have

been made by FUD vendors that the Linux kernel contains a number of

patent infringements - if specific details are ever provided, then those

specific infringements can be worked around. A patent infringed in the

Linux kernel would not cause all GNU/Linux distributions to be shut down

overnight - and it's disingenuous to suggest that any other Free

Software is any different on that front. Even if a fundamental patent is

infringed in Free Software, it's no big deal - as a core change can be

made, and applications etc which expect the "old" way can be modified to

work with the "new" way, easily. Only proprietary applications cannot be

fixed in the event of radical change - and proprietary apps are a

secondary concern.

* The layering of escape routes is extensive in Mono, especially Mono in

Debian/Ubuntu. In the first instance, the contentious Microsoft-sourced

non-ISO libraries such as System.Windows.Forms are not included by

default, and are rarely used in Free applications anyway (because

WinForms looks like ass, amongst other things). If a reason is found to

remove these non-standardised libraries, then bam, they're gone -

without harming Free apps. Secondly, if a more severe change is

required, then the Mono packages can be patched to remove the

infringement. If more drastic changes are required, as mentioned above,

then the applications can also be patched to support any core changes.

And, taking it one step further, if the whole of Mono needs to be

pulled, then applications can be ported. The porting process would

potentially be slow and painful, and cause great harm to an

application's future rate of development (although no worse than if the

app was written in the target language from day one), but nobody who has

written an app they care about would simply throw their hands in the air

and say "never mind, it was fun, but the Man says I have to stop now".

== Why Mono should be included in Ubuntu by default ==

It shouldn't. Not in the sense that has been publicised on blogs,

newsgroups, forums, and so on. We don't want Mono installed by default

on any distribution. Mono is a software platform, and software platforms

are boring at a user level. Ubuntu shouldn't ship with Java, Scheme,

Assembly, LISP, etc, frameworks by default either. They are not

interesting to users.

What we want by default are GREAT APPS. A user should boot an Ubuntu,

Kubuntu, Xubuntu, or whatever CD and say to themselves "Wow, this Free

Software stuff is great, I definitely don't need Windows anymore". All

Ubuntu derivatives, as with all distributions of Free Software seeking

to convert people to Free Software, should be chasing the best

applications available. In the case of Ubuntu, a decision was made to

include a note-taking application and a simple photo library manager, by

the Desktop Team.

They determined that the best note-taking application to offer their

users was Tomboy. Tomboy has a feature set far greater than the "Sticky

Notes" applets provided in both GNOME and Windows Vista, and can be seen

by new users as an easy replacement for Microsoft's proprietary OneNote

product, which retails for ~£80. The only other comparable GNOME

application is Zim, a "Desktop Wiki". Zim is a high-quality product, but

it was decided by the desktop team to use Tomboy instead, as it is

easier for non-technical users (and is the default application in its

class as picked by the GNOME project).

They also determined that the best photo manager to offer was F-Spot.

F-Spot is directly comparable to Apple's proprietary iPhoto application,

or Google's proprietary Picasa application. It is NOT directly

comparable to "file browser" type applications such as gThumb, as one of

the key features of photo album applications is allowing you to tag your

photos with important metadata - gThumb works on a per-folder basis, not

on a "all my photos" basis.

Both Tomboy and F-Spot require the Mono JITter, and a set of libraries

such as GTK#, in order to execute. So in order to offer these

best-of-breed Free Software applications to new users (determined to be

best-of-breed by the Ubuntu Desktop Team), parts of a Free Software

runtime are required - the same way including the GNOME System Monitor

requires GTKmm. As long as Tomboy and F-Spot are best-of-breed, they

should be included - and with that, whichever libraries they happen to

use. If other Free applications surpass one or both of these, then they

should be used instead - if a Mono-based application surpasses a

different application in a different class, it should be used instead.

This is not based on preference for a given framework - although it is

my personal belief that a high-level language such as C# or Python

enables developing such an application much more quickly and easier than

C would.

== The post on Linux Today ==

Your initial post makes it clear that you are not even-handed on this

topic. Here are some specific phrases whose purpose is to "throw mud",

and show your pre-determined judgements on the topics you claim to want

to hear about. It is THIS, clear preconceptions and bias, which compel

those with plenty of insight on Mono-related topics, not to bother.

Which leaves only the anti-Mono people to pretend they have a majority.

"There are other, better applications that could be included" - Name


"forcing Microsoft technologies" - Help! Help! I'm being oppressed! No,

not really. Good technology is good technology, and Not Invented Here

never helped anyone. None of the Desktop Team are pro-Mono (most of them

are Python fans), and no unilateral decisions are made over which

applications to include. Nobody is "forced" over anything. No

Mono-related packages have been marked as Essential:yes.

"unholy embrace into Ubuntu" - Demagogy. Microsoft are a corporation,

not a supernatural entity. Suggesting any level of "unholiness" gives

far too much credit to them. They are a corporation, with a wide

selection of idiot senior managers, and a limited selection of competent

developers. Nothing more.

"Mono fans have been creating a giant ruckus in the Ubuntu forums" -

actually, it's the anti-Mono crowd responsible for this. If you refer to

accusations of censorship, then you're being mislead (or intentionally

misleading). Those who read the specific details of those accusations

can find rudeness, threats, arguments, and worse - with anti-Mono people

at the core. Childishness does not win arguments - nor friends amongst


"have not bothered to say why removing Mono from the Ubuntu installation

CD" - To this, I offer a quote from Thomas Jefferson - "Ridicule is he

only weapon which can be used against unintelligible propositions. Ideas

must be distinct before reason can act upon them". Demands to remove

Mono from a default Ubuntu system are not based on any rational

suggestions - there are no packagers offering superior replacements,

only people demanding that because in their personal ill-informed

opinion everyone will be sued to death, that Mono applications should be

purged. This is, in short, software terrorism - demanding a change in

someone else's policy and telling them they are not Free to make their

own choices, based on personal politics. Rational minds can dissent on

questions of Mono, but until there are adequate replacements for Mono

applications, complete with functional migration path, the choice is

simple - make Linux suck more by moving to an inferior default

application set, or "make do" with Mono. It should be noted that people

with rather more to lose than random anonymous people on web forums -

such as Mark Shuttleworth - have said on record multiple times that they

don't have any such fears. I would personally support a move from any

Mono-based application to a non-Mono-based one, with demonstrable

technical superioriority.

"simply including it in the standard repos is not acceptable." - It's

perfectly acceptable - however, it's not the only argument put forward.

Suggestions range from reclassifying Mono as non-Free (moving it to

third-class citizen status), to its complete removal from the archive,

to the expulsion from both Debian and Ubuntu for anyone who has worked

on Mono packaging. Free apps in general should be in the standard repos

- regardless of their implementation framework - but if a specific

application is best-in-class, it should be included by default.

"The inability of Mono fans to answer that simple question has me a bit

bothered, as though there is a deeper agenda." - If you want to make

accusations, make them plain. Don't play the Fox News game of "well, I

find it *interesting*" - call a spade a shovel. If you have specific

accusations to make about people who are not anti-Mono, then make them,

or to put it bluntly, don't spread lies.

== The anti-Mono "movement" ==

Some people are "for" things. They are for Freedom, or for technical

superiority, or for a sports team, or whatever. Some people are

"against" things. They are against political candidates, or Microsoft,

or people from certain places, or whatever. Some people define

themselves on the basis of what they want, others on the basis of what

they do not want. Mono causes immense anger amongst that second group -

specifically, people who use GNU/Linux not because they are "for"

anything, but because they are "against" Microsoft. This can be easily

seen - using names like "Microshaft" or "Micro$oft" or similar childish

attempts to define a "them and us" situation and ridicule the "them".

Mono is symbolic - it is Free (something they are supposedly in favour

of), but Free on the basis of something sourced from the Great Satan -

an inexcusable mix.

Many of those who advertise themselves as anti-Mono are, quite frankly,

frightening. Calling for the deaths of Microsoft employees (see

comments on Boycott Novell), or trying to have people who make positive

comments about Mono fired (see recent comments on Ubuntu mailing lists),

or making insinuations about anyone who does not agree with them (see

pretty much every news post on Boycott Novell itself) - this is ugly

behaviour, the absolute worst kind of advert for the "Free Software

community" imaginable. If people want to be "against" Mono, then there

are sane ways to do it - for example, by working on or packaging

alternative software. Calling for people to be expelled from Free

Software communities because they don't work on apps you like is, in

short, the antithesis of supporting Freedom. If the anti-Mono crowd want

to be taken seriously, then they need to UNDERSTAND what they fight

against - they need to have sufficiently intimate knowledge of what Mono

is, how it works, and why, in order to know where to direct their

energies (and general shouts of "ZOMG! MICRO$HAFT!" isn't

well-directed). I would LOVE to see some high-quality apps for GNOME

written in, say, Java or Python - as the competition would only result

in better applications.

However, the vast majority of the anti-Mono crowd are not developers or

packagers - they are back-seat drivers. They make proclamations about

how other developers (who are surrendering their time to developer Free

Software) should instead use the framework of THEIR choice, not the

developer's. This is another reason why anti-Mono arguments are given so

little respect - the sheer cheek, the PRESUMPTION that they somehow are

in a position to make demands of other developers, is galling. Free

Software is a meritocracy - those who do things earn respect. Until the

anti-Mono crowd actually make a contribution to Free Software, they will

continue to be treated as cranks - and their questions left unanswered.

In the end, there is nothing which will cause the Mono controversy to

disappear - as long as vague threats of legal attacks are manufactured

and fuelled by certain members of the community. Much like a

presidential birth certificate, there is simply nothing which will

placate those who have already made up their own minds without any

concerns about basis in reality or fact. Anti-Mono arguments based in

reality or fact are fine, and I welcome them - but I've very rarely seen

them. And even when they are offered, they are offered drowning in a

sauce of demagogy and FUD so thick as to obscure the salient point.

So, I think that's what you were looking for. Repost it or don't. It'll

make for a new chapter in the daily personal attacks I receive from the

oh-so-sophisticated anti-Mono crowd.

--Jo Shields

Comment and Contribute

    (Maximum characters: 4000). You have 4000 characters left.