Oftentimes when I'm reading about some program, be it GNOME Do or Banshee or something else, I see people writing that they use mono -- and the implication is pejorative. Why is this? Are these comments made on practical grounds, ideological ones, or something else?
5 Answers
Ideologically
Mono is supposed by some to be supporting Microsoft and its .Net platform. Some people believe this is counter to the goals of Ubuntu, or at least their own personal goals, and they want to avoid that.
Sorry for the wiggle words, but I'm staying objective. The discussion of whether Mono actually does this, and even whether supporting Microsoft is a good or bad thing, belongs elsewhere.
Practically
Programs which use a virtual machine (as those written in Java and C# do), tend to use more memory, in my experience, compared to equivalents that don't. This generalization doesn't always hold. While there are users for which this is a valid concern, people often worry about performance more than necessary.
For example, I'm using a laptop with only 1GB of memory: this used to be huge. The machine is starting to show it's age, but I can still run most things comfortably. Users with 4GB of memory will not notice "memory hogs" nearly as much and should focus on other concerns. (And I'll come back here in 5 years and laugh at that 4GB number.)
-
4Well c# is not purely running on the Virtual Machine. At least not in the normal way. It can do Just in time compilation from byte- to machine code, like java, plus ahead-of-time compilation to machine code in with exceptions (normal case), and full old-school compilation (doesn't however on most platforms). It's not the same as Java or Parrot in that sense. More of a hybrid. For this reason, in the real world, it's very likely your critical inner-loop heavy-lifting-code will be compiled to native machine instructions in mono. – Stefano Palazzo Oct 29 '10 at 15:22
-
1@stefano: I mentioned memory usage, not execution speed. In fact, keeping multiple copies of the code around so the JIT can do its work uses more memory. – Oct 29 '10 at 15:28
-
You're absolutely right of course. I just wanted to mention that CLI bytecode is a hybrid compiled-/interpreted language with jit on top of it. To differentiate it from Java. – Stefano Palazzo Oct 29 '10 at 15:40
-
Java has a sophisticated JIT infrastructure, too. This is in no way unique to Mono / .NET. – RAOF Oct 29 '10 at 16:27
-
3It is not only that. Mono might very well infringe some of Microsoft's patents which gives Microsoft the possibility to sue someone one day as Oracle does against Google over java patents. – txwikinger Oct 30 '10 at 00:43
-
1@txwikinger mono is protected by the legally binding "Community Promise" in which Microsoft promises not to sue implementations of the open standard which mono implements. – trampster Nov 01 '10 at 23:25
-
5Sorry, but there is nothing in the "Community Promise" that is legally binding. – txwikinger Nov 02 '10 at 02:58
-
2@txwikinger It is legally binding check out the question on this page. http://www.microsoft.com/interop/cp/default.mspx – trampster Nov 02 '10 at 08:07
-
1@trampster: And you rely on Microsoft in regards to legal questions? That is like to rely on the prosecution to defend you in a criminal trial. In any case, AFAIK there is no court judgment confirming the legality of the "Community Promise", in fact, I know at least one case declaring part of it illegal. – txwikinger Nov 02 '10 at 10:50
-
1I don't think it's harmful that Linux (and consequently Ubuntu) supports Mono/.Net - I think it's terrible that Microsoft isn't doing it themselves. – Nathan Osman Apr 23 '11 at 16:11
-
If you want to take a layman's look at what Microsoft says about their Community Promise, also look at counter-points, including the (obviously biased) analysis by the FSF. – Fred Nurk May 14 '11 at 02:56
Some people believe that Microsoft holds software patents over aspects of .NET, and that as an implementation of .NET, Mono violates those patents. Thus these people feel that using Mono could leave one open to patent lawsuits.
I suppose Mono is so controversial because patent law in general is controversial. But then there are specific instances where entities that promote Mono have made agreements with Microsoft that look a lot like patent agreements, which could then be seen to strengthen Microsoft's argument for the validity of any such patents. (Of course, Microsoft hasn't actually provided any proof that the patents exist, thus maintaining a state of uncertainty, just as with their claim of patents violated by the linux kernel.) These agreements result in feelings of betrayal and distrust from other community members, because the agreement seems to hurt the community as a whole (by increasing the perceived patent risk) while benefiting the entity that made the agreement with Microsoft. So that leads to another reason that Mono is controversial: because some of Mono's main proponents have made controversial agreements with Microsoft.
By the way, I should mention that I write from the perspective of a spectator, and I have no detailed or specific knowledge of the whole situation. I've tried to remain unbiased and have mostly eschewed proper nouns so as to avoid dragging this question into the controversy that it asks about.
Edit: In the comments, someone pointed out that Microsoft has a community promise not to assert patent rights against .NET implementations. But the promise has enough legalese in it that I don't feel I can really be sure that the promise provides air-tight protection without hiring a lawyer to go over it. After reading it, I can think of some potential loopholes that could allow Microsoft to assert patent rights over Mono, but since IANAL, I have no idea whether any of these loopholes are legally defensible, or just my misunderstanding of Microsoft's legalese. So while the community promise is encouraging, it certainly cannot end the controversy among over Mono's possible patent liability.

- 4,426
-
3This should be the accepted answer really, it's the only one that actually answers the question. People are hesitant to use Mono because the fear of being sued by Microsoft. – Oct 29 '10 at 14:00
-
1Should be mentioned here that Article 52 of the European Patent Convention specifically prohibits patents on software "as such" (Art. 52/2). Which means that at least citizens and organisations in EU member states are basically safe from things like Microsoft's licensing campaign. (this last statement is under heavy contention) – Stefano Palazzo Oct 29 '10 at 15:29
-
1Despite Art. 52/2 there have been successful software patent claims in Europe. – txwikinger Oct 30 '10 at 00:51
-
This answer is not complete without a discussion of the legally binding "Community Promise" which protects mono from patent suits by microsoft. – trampster Nov 01 '10 at 23:15
-
-
-
1@trampster: The CP covers ECMA 334 and 335 rather than all of C#, and as those were published in 2006, anything new added to C# is explicitly not covered. Do you expect Mono to stay 5 years (and growing) behind .NET in order to use the CP? – Fred Nurk May 14 '11 at 03:06
-
Xamarin (company who maintain mono) and Microsoft are now partners, Microsoft are promoting Xamarins mono based android and IOS solution to .net developers, and providing discounts to people who purchase Xamarin tools. Microsoft is encouraging people to use mono, they are not going to sue your for using it. – trampster Nov 25 '13 at 00:08
Mono is a open porting of Microsoft .net.
On the ideological ground, this makes use of a closed technology for open technologies and that may not coincide with some ideals of GNU, and/or Linux.
On the practical ground, Mono is not (for now) supporting as much functionnalities as .NET does in its 3.5 version. However, it allows to program in C# (and other .NET languages) for Linux, which I think is a good thing and would be impossible without Mono.

- 298
-
9The basic core of .NET is an open technology/standard (even if Microsoft's main implementation is not open, C#, basic parts of the standard library and the runtime are published as ECMA standards). – JanC Oct 29 '10 at 09:52
-
-
@JanC: Parts of Mono (System.Windows.Forms) are not part of the ECMA standard. – Broam Oct 30 '10 at 05:52
-
@Broam: of course, but nobody uses that anyway (if people would really use it, there wouldn't be so many bugs in it ;-) ), and certainly not for developing linux or cross-platform applications. – JanC Oct 30 '10 at 07:51
-
1Actually mono is not a port, it is a from the ground up free software implementation of the EMCA open standard. And is covered by a legally binding "Community Promise" to not sue implementations of that open standard. – trampster Nov 01 '10 at 23:28
-
1@Broam System.Windows.Forms in not in ubuntu by default. And is not required by any of the common mono apps. – trampster Nov 02 '10 at 07:02
As others have stated there are two main reasons:
1) Ideology: Users aren't comfortable with the idea that Mono is based on a closed source Microsoft product. However, Mono itself is open-source.
2) Patents: This used to be a major concern which has since been addressed by Microsoft when they applied the Community Promise to ECMA 334 and ECMA specs 335. Unfortunately a substantial portion of people are unaware of this.

- 150
-
4The argument is that the community promise is not enough - it's not a question of awareness. – Broam Oct 30 '10 at 05:53
I don't use Mono because
- Microsoft alleges IP infringement without specifying what is being infringed and they have refused to clarify on Mono, only saying that Novell users are protected. I do not believe Microsoft's community promise until they back it up with actions.
- Mono licensing is complicated. It is hard for a legal expert let alone an ordinary user to understand as parts are licensed differently. Nothing in open source is so complicated to undestand.
- Miguel de Icaza promised but has failed to deliver on his promise to release ECMA compliant source code in a timely fashion
- the landscape is littered with companies that followed Microsoft's standards because for them standards exist to be broken and keep others at a disadvantage
- there is no need or demonstrable benefit to having .NET on Linux, little has been ported over from other platforms and anything native to Linux could be written other languages
- Mono is a needlessly divisive issue; it distracts us and plays into Microsoft's hands by keeping from more important issues
I think that anybody can and should use Mono if they want, but users who don't want it should not have it put on by default.

- 28,740

- 476
-
I do not believe that Microsoft has ever alleged patient infringement in mono. It has however promised not to sue in a legally binding manor. – trampster Nov 01 '10 at 23:31
-
unreal engine requires several mono packages; tho, I believe, being all opensource; one day, may be, they could be replaced by something that we could stay tranquil about. – Aquarius Power Aug 11 '15 at 01:21