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?

  • 3
    why is no one calling for open office to be removed as it to implements Microsoft technologies (document formats)?
    – trampster
    Nov 1, 2010 at 23:43

5 Answers 5



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.


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.)

  • 4
    Well 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. Oct 29, 2010 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.
    – Roger Pate
    Oct 29, 2010 at 15:28
  • 3
    It 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, 2010 at 0:43
  • 5
    Sorry, but there is nothing in the "Community Promise" that is legally binding.
    – txwikinger
    Nov 2, 2010 at 2:58
  • 2
    @txwikinger It is legally binding check out the question on this page. microsoft.com/interop/cp/default.mspx
    – trampster
    Nov 2, 2010 at 8:07

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.

  • 3
    This 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.
    – Sergio Tapia
    Oct 29, 2010 at 14:00
  • 1
    Should 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) Oct 29, 2010 at 15:29
  • 1
    Despite Art. 52/2 there have been successful software patent claims in Europe.
    – txwikinger
    Oct 30, 2010 at 0: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 1, 2010 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, 2011 at 3:06

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.

  • 9
    The 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, 2010 at 9:52
  • @Popinou: I never had a problem with missing features in 3.5.
    – user4482
    Oct 29, 2010 at 22:03
  • @JanC: Parts of Mono (System.Windows.Forms) are not part of the ECMA standard.
    – Broam
    Oct 30, 2010 at 5:52
  • 1
    Actually 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 1, 2010 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 2, 2010 at 7: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.

  • 4
    The argument is that the community promise is not enough - it's not a question of awareness.
    – Broam
    Oct 30, 2010 at 5:53

I don't use Mono because

  1. 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.
  2. 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.
  3. Miguel de Icaza promised but has failed to deliver on his promise to release ECMA compliant source code in a timely fashion
  4. 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
  5. 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
  6. 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.

  • 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 1, 2010 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. Aug 11, 2015 at 1:21

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .