Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

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?

share|improve this question
3  
why is no one calling for open office to be removed as it to implements Microsoft technologies (document formats)? –  trampster Nov 1 '10 at 23:43

5 Answers 5

up vote 32 down vote accepted

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

share|improve this answer
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. –  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. –  Roger Pate Oct 29 '10 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 '10 at 0:43
5  
Sorry, but there is nothing in the "Community Promise" that is legally binding. –  txwikinger Nov 2 '10 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 '10 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.

share|improve this answer
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 '10 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) –  Stefano Palazzo Oct 29 '10 at 15:29
1  
Despite Art. 52/2 there have been successful software patent claims in Europe. –  txwikinger Oct 30 '10 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 '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 3:06

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.

share|improve this answer
4  
The argument is that the community promise is not enough - it's not a question of awareness. –  Broam Oct 30 '10 at 5:53

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.

share|improve this answer
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 '10 at 9:52
    
@Popinou: I never had a problem with missing features in 3.5. –  acidzombie24 Oct 29 '10 at 22:03
    
@JanC: Parts of Mono (System.Windows.Forms) are not part of the ECMA standard. –  Broam Oct 30 '10 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 '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 2 '10 at 7:02

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.

share|improve this answer
    
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 '10 at 23:31

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.