Points about the relationship between Mono and .NET that some recent news has raised.
One of the common points debated around Mono is its relationship to .NET, and within that relationship there is a specific critique I’d like to look at a bit closer: Mono is basically trying to re-implement .NET, which is developed by Microsoft with its massive resources and own best interests at heart, Mono is destined to be forever trailing, incomplete and the less preferred choice in comparison with ‘real’ .NET.
There are a lot of issues around this.
For one thing, it plays into the Microsoft / Team Mono dance where they try to pretend .NET is “safe”, when it is only a very limited and well vetted sub-set that was submitted for ECMA’s rubber stamp. By now, Team Mono has all but discarded any pretense at sticking to the ECMA-only portions of .NET. (They haven’t discarded the half-truth that “it’s a recognized standard” as a defense, though, to my wide-eyed shock.)
But to me another interesting point is how Team Mono tries to play down the Microsoft = .NET = Mono equation when defending it. Let’s look at some recent Mono news and see how the equation holds!
A joint .NET/Mono code conference
There is an upcoming .NET/Mono “code conference“. I think this illustrates how reliant Mono is on .NET combatibility and how closely it must conform to Microsoft’s roadmap and goals for .NET in general.
MonoDevelop
MonoDevelop is going to be the “Eclipse of the .NET community“, Mr. De Icaza tells us. Putting aside the obvious jokes, I think this is another good illustration of how the entire focus of Team Mono is – and must be – on conforming to .NET.
Here’s one of the highlights on the new MonoDevelop release: “MonoDevelop can be used to develop ASP.NET MVC applications on OSX and Linux and Silverlight applications on OSX and Linux.”
That’s just what I was saying Linux needed the other day: more Silverlight applications. In fact, I was discussing how promoting Silverlight development in no way whatsoever helps Microsoft lock-in, and quite the contrary actually encourages the spread of software freedom under every definition known to mankind. Because it is Microsoft that is internationally recognized for leverging its considerable power to promote user freedom and interoperability through its file formats and development technologies we absolutely need more of that being produced in the Linux world, which tends to use proprietary and obscured formats and languages
So MonoDevelop is a big win there. Congratulations.
Come with me if you want to live
Mono can not survive without very close compatibility with .NET, and MonoDevelop can not survive without catering to .NET developers. Developers who, as I have said many times, care very little indeed for cross-platform development. They care about Windows development; ”cross-platform” is theoretical for the overwhelming majority and “open-source cross-platform” produces either blank stares or giggles.
The simple and irrefutable fact of the matter is that it is Microsoft that solely drives the direction and development of .NET, and they are simply enjoying Team Mono’s bewildering desire to work as proxies for Microsoft.
What’s amazing to me is that Mono apologists try to pretend like this isn’t the case – that they are some sort of “independent” project with only the most vague and distant ties to Microsoft. As if implementing a feature or two before Microsoft does, or even one or two that .NET proper doesn’t support makes you “independent”. Nope. Just makes you “incompatible”.
The real case is that if Microsoft announces a feature in .NET, Team Mono will begin implementing it, and if Microsoft announces a depreciation, Team Mono will follow suit. They aren’t leading the way – they are simply doing Microsoft’s work for them.

#1 by Richard on September 13th, 2009
Hello,
I thought I’d give a proper response to some of these points, mostly because I’m up tonight anyway. This is relevant to the discussion at hand; the following quotations are particularly relevant:
(I’ll call this “[A]“)
(I’ll call this “[B]“).
Now:
1. .NET, which is developed by Microsoft with its massive resources and own best interests at heart
Foundational to capitalism, and democracy, is the idea of entities with their own interests finding common ground and working towards a common mid-term goal, whilst retaining individuality and independent long-term goals. There is nothing wrong with this at all.
2. Mono is destined to be forever trailing, incomplete and the less preferred choice in comparison with ‘real’ .NET.
forever trailing: Due to [A], Mono will necessarily trail Microsoft’s .Net API. This is both accepted and expected. However, trailing != “forever trailing”. Mono trails the new APIs by a matter of weeks, and implements features very quickly — far more quickly than, say, C++ compiler vendors have bothered to implement C++0x features and standard library changes, despite the standard being essentially fixed for some time.
incomplete: Please take a look at this. I think that it will change your mind.
less preferred choice: In fact, many companies and projects use Mono right now; some (such as Mainsoft) base an entire product line on Mono technology. In previous posts, I’ve already mentioned the superiority of Mono.Cecil and Mono.Cairo for work that I’ve done.
3. There is an upcoming .NET/Mono “code conference“. I think this illustrates how reliant Mono is on .NET combatibility and how closely it must conform to Microsoft’s roadmap and goals for .NET in general. and if Microsoft announces a feature in .NET, Team Mono will begin implementing it, and if Microsoft announces a depreciation, Team Mono will follow suit
See [A]. Yes, cross-platform interoperability requires this, and that is a goal of Mono. This does not imply that Mono must conform to Microsoft’s goals for .Net in general; see [B] for differences; furthermore, see here for technology sets/modules that Mono has simply decided not to implement.
4. the entire focus of Team Mono is – and must be – on conforming to .NET. and it is Microsoft that solely drives the direction and development of .NET
No. See here for the foci of the developers. You will notice a large number of items — dare I say “most items”? — outside of the “Microsoft-compatible stack” heading.
5. That’s just what I was saying Linux needed the other day: more Silverlight applications.
See [A]. In order to provide Unix developers with the choice to create these, Silverlight support has been added. I see nothing wrong with this.
6. Microsoft that is internationally recognized for leverging its considerable power to promote user freedom and interoperability through its file formats and development technologies we absolutely need more of that being produced in the Linux world
Microsoft has gotten considerably better about interoperability than they were 10 years ago. Give credit where credit is due; there is improvement, and Silverlight is part of that improvement. It communicates by default over standard HTTP to any standards-compliant web-server, and uses standard XML as an internal format. Provide them with some positive reinforcement, Jason: the carrot as well as the stick.
7. the Linux world, which tends to use proprietary and obscured formats and languages
Unfortunately, 10 years ago, the Linux world was no better. Take a look in /etc right now, and you’ll find a different format configuration file for ALSA, iptables, sshd, Samba, fstab, … you name it. Download a tool that’s written in Perl, and you might have to configure a Perl file before it works. Download something in Python, and you could be writing Python-style arrays in your config file. Freedesktop.org has done a lot on this front, and more power to them — but a lot remains to be done.
Essentially, I wouldn’t be calling the kettle black on this issue until matters are substantially better in pot-land.
8. Mono can not survive without very close compatibility with .NET
Incorrect. Mono can survive, but not live up to all the aims of [A], since they would sacrifice cross-platform compatibility.
9. MonoDevelop can not survive without catering to .NET developers
Where is your evidence for this statement? I find it difficult to believe. If your source is the Black Duck survey, let’s say that I find it to underreport certain things (such as Haskell usage, which is sitting at zero).
10. Developers who, as I have said many times, care very little indeed for cross-platform development. They care about Windows development; ”cross-platform” is theoretical for the overwhelming majority and “open-source cross-platform” produces either blank stares or giggles.
I find this to be a bit insulting. Paint the lot of us with the same brush, will you? I happen to know plenty of open-minded, cross-platform-aware software developers. Of course, I also know some of the ilk you mention, and my professional opinion is that they are simply inferior programmers. Leave them to their bigotry, and may they get what they deserve. Don’t tag us all into the same misguided group!
11. [Mono isn't] some sort of “independent” project with only the most vague and distant ties to Microsoft. As if implementing a feature or two before Microsoft does, or even one or two that .NET proper doesn’t support makes you “independent”. Nope. Just makes you “incompatible”.
Here you seem to want to have your cake and eat it! If Mono developers come up with some promising and awesome technology (such as DBLinq), they’re incompatible. If they don’t, they’re blind followers. Well, they’re not blind followers, as I’ve pointed out above; and they’re not incompatible, either. How can this be?
It’s mostly due to the magic of namespaces, and the nature of MSIL. If you have your own API, you put it in your own namespace, and it doesn’t conflict with any other API — even if that other API implements exactly the same functionality, with exactly the same class and method names. If you compile to MSIL, you can run things compiled with Mono on Windows, and things compiled with csc.exe on Unix, with no issues. The result is that no “incompatibility” arises.
Goodness me, this has been a long post. I should probably have sent it to you as an article submission. Ah, well; live and learn.
#2 by Jason on September 14th, 2009
Richard,
I’ll comment just a bit on a few of the points you raise!
1. (capitalism, democracy, and “best interests”)
The issue – where something becomes “wrong” – is when the “best interests” of two entities come into direct conflict.
This is the case with proprietary software and Free and Open software. Even in the best situations, with people of extraordinary sensitivity and ethics, the combination/balancing of the two is a very difficult task.
Microsoft is not burdened with people of extraordinary sensitivity and ethics.
2. (forever trailing, incomplete, less preferred)
I see your counter-points, but they all mitigate and explain my point, rather than overcome it. So, at best, you are arguing that the point I make here may be true, but is not really that big a deal.
Fair enough to let each judge the severity for themselves.
3. (conforming to Microsoft’s goals)
I’m not sure what the link you provide is supposed to prove. That link gives three classes of .NET functionality that Mono is not trying to implement:
1. Depreciated APIs.
2. Windows-specific APIs.
3. Large projects that they simply don’t have the resources to tackle.
To me, that doesn’t argue well against the concept that Mono is trying to track as closely to .NET as is possible / feasible for them.
4. (focus of development)
Again, I’m not sure this link argues well that any sort of majority focus is on “non-Microsoft compatible” stuff.
Indeed, it seems quite strange to begin arguing that Mono is some sort of “stand-alone” project. The real-world value of Mono is directly proportional to how well it clones .NET. There can be some additional value in things like a nicer IDE, or a new class, but those are incidental to the core purpose of being a clone of .NET.
7. (Linux uses proprietary and obscured formats)
I think this is a very poor rebuttal here. The differing formats of configuration files is regrettable, but it is not intentionally malicious, focused on locking out competition.
There is no real comparison between Perl using Perl and Python using Python, and Microsoft using undocumented APIs, or intentionally breaking APIs to harm competitors, or changing and refusing to document file formats, and so on and so on.
9. (MonoDevelop can not survive without catering to .NET developers)
You ask me for my evidence here. It is my understanding that MonoDevelop is trying to be the “Eclipse of .NET development”, virtually everything I read about it revolves around integrating Mono with something and assisting Mono development.
Since Mono development is, in effect, .NET development – and since MonoDevelop is so strongly focused on that ecosystem, I’m not sure what use a non-Mono developer would have for it. Mono developers are .NET developers, with few exceptions.
Saying all that shorter
I guess the theme of disagreement I’m picking up on here, is that I see Mono as a clone of .NET, with very limited opportunity or value outside of that role. I do understand there are some non-.NET things that Mono does, but the core value is in cloning .NET.
#3 by Richard on September 14th, 2009
Hello,
It’s good to get a response on this one, and I thank you for providing a response that you’ve clearly thought over. We can come to agreement on (2), and I agree with your reasoning on (7) — although I would point out that this behaviour has been notably reduced or absent altogether from much recent Microsoft software. On the remaining points:
1. I would submit that there’s been some change on this. Some has been driven by the good work of the FSF’s enforcement policies. Some is being addressed by corporations such as IBM and Google, and organizations such as the CodePlex foundation. I hope to see much more progress on this in the coming years, until we come to a point where extraordinary sensitivity on either side is not needed.
3. An example might serve to illustrate. Microsoft’s goal is to use WPF for all of the desktop flashiness, and Mono is not implementing WPF. Therefore, they’re not following the Microsoft desktop “roadmap” in that area, and that’s fine: they don’t have to.
4. I’m not sure why the link doesn’t convince you. You say that the “real-world” value of Mono is proportional to the accuracy of cloning, but there are projects which derive a lot of real-world value from various projects (such as Gendarme, GTK#, Cecil, etc) that aren’t replications of the Microsoft stack. Whilst Mono isn’t a stand-alone project — and it cannot be, since an aim is cross-platform compatibility — it is clearly a project that does provide value from independently-developed modules.
9. MonoDevelop has survived since its inception without catering to Windows developers (I think that you mean Windows devs when you say .Net devs?); it’s only the latest beta which brings support for Windows. I doubt that it could have reached its current level of maturity without feedback from developers, so it seems safe to assume that it is being used, and is successful within its existing market segment. The charge of catering to platform idiosyncrasies could be leveled at SharpDevelop, since they essentially use MS project files and solution files, and rely on the MSBuild process. MonoDevelop doesn’t. Therefore, I think that MonoDevelop could easily survive without catering for the Windows platform, but not necessarily expand its market share.
To eschew verbosity
Clearly, a primary consideration, and much of the value, comes from cross-platform compatibility with Microsoft’s .Net stack. This is explicitly laid out in [A]. However, to so greatly discount the value provided by independent Mono projects seems unwarranted.
Where the “core value” of Mono lies is a subjective question — a project that’s reliant on Mono.Cecil would disagree with your assessment of the situation. Conversely, a project that relies on the WinForms API would find more value in closely tracking Microsoft’s .Net API than in non-Microsoft-stack APIs. As is frequently the case with “value” questions, the best answer is (and will remain for the foreseeable future) “it depends”.
#4 by Lex on September 13th, 2009
Who cares about mono when there is Java?
#5 by Jo Shields on September 14th, 2009
Anyone who wants a decent framework. Duh.
#6 by Lex on September 14th, 2009
Anyone who wants a decent framework will go for the original (Java), not a second grade non-portable rip off (.Net) and certainly not the third grade rip off of a rip off (Mono).
#7 by Richard on September 14th, 2009
Wait — “original”?
Surely you’re not calling that abominable hybrid of Mesa and C++ “original”? Not that those were any more original, of course: Mesa is a cheap knock-off of ALGOL, and C++ blatantly copied C. ALGOL, in its turn, was a back-handed slap at FORTRAN, and C stole so much from B that it could hardly be called original. FORTRAN and B, o’course, were just fancy-schmancy sugar on top of assembly language — which was hardly original itself, since makers stole opcodes and orderings from each other willy-nilly.
… or how about this: we’ll all agree that this talk of “copying” and “rip-offs” is an idiotic playground argument in the first place, and judge on merit instead. We all stand on the shoulders of giants. ‘course, if you feel differently, please do continue to post comments about how James Gosling’s penis is ever-so-much-larger than Anders Hejlsberg’s. That would certainly make for riveting reading.
#8 by Jo Shields on September 14th, 2009
One day you might understand what you’re talking about. That day is not today.
#9 by Lex on September 14th, 2009
I’m sorry, I did not realize you hold the authority to decide who understands what they are talking about and who does not.
Please accept my deepest apologies, because your last statement clearly underlined that I am wrong. You have made me understand the error of my ways.
So from now on, I shall only use Mono, on top of Windows 7 and Visual studio as my IDE.
Thank you!
#10 by Jo Shields on September 14th, 2009
You’re not helping your position, you know.
If your brain is incapable of parsing the reasons why Mono may be preferred over Java (and they’ve been repeated ad infinitum, including on this blog, so you can’t simply claim ignorance) then there’s simply no hope for you being mentally equipped to make a well-informed opinion.
There is a PLETHORA of reasons why Java makes for an inferior development platform for Linux desktop development, before you even consider differences in the languages between Java and C#. Until you are capable of comprehending why those reasons are put forward, you’ll continue to look like a stupid idiot when making comments like “Who cares about mono when there is Java?
” without a word of justification to back them up beyond “old == bettar lolololololz!!”
#11 by Lex on September 15th, 2009
JVM happily runs a many different languages. Don’t like the Java language? You have a choice of Scala, Jyphon, JRuby and Groovy (of the top of my head).
As a platform, JVM is far superior than .NET, for many reasons. The main advantage is being truly portable, not to mention being ubiquitous on many devices and architectures.
The main disadvantage of mono is having rude people like you on their side treating everyone else like idiots. But I must thank you personally, because you make the mono camp look bad, hopefully turning developers away from mono in the process.
#12 by seller_liar on September 17th, 2009
The stupid thing is monodevelop does not work with mono for windows.It requires net framework 3.5
Monodevelop creates artificial dependency in .NET 3.5 .It does not help free opensource if a software requires proprietary software to run . And does not free the user from .NET.
#13 by Jo Shields on September 17th, 2009
Wow, seller_liar, if only we were all as super smart as you.
Try changing the shortcut from “MonoDevelop.exe” to “mono MonoDevelop.exe”, assuming you have Mono installed and in your %PATH%
#14 by seller_liar on September 18th, 2009
Ok, but In requirements list , it cites .NET 3.5 .Is Novell promoting .NET framework instead mono.
#15 by seller_liar on September 18th, 2009
Ok, but In requirements list , it cites .NET 3.5 .Is Novell promoting .NET framework instead mono?
#16 by Jo Shields on September 18th, 2009
More Windows people use MS.NET than Mono. The Windows version using MS.NET proves a point more than anything else – that Mono apps are cross-platform (even big complex apps), and the fact that you can run the same executable under Mono only proves that point further
#17 by seller_liar on September 18th, 2009
Maybe C# is superior in some languages technologies. But java have a lot more of libraries and the Sun implementation is free. Sun does not attack free software like microsoft.
We need to see the global situation instead of focus only in language features.
#18 by Jo Shields on September 18th, 2009
That’s a significantly more sane line of reasoning than “Java si teh bettar” as seen above.
#19 by seller_liar on September 18th, 2009
But novell still promotes .NET instead mono .
And java is better in a global situation is a valid argument.
#20 by Richard on September 19th, 2009
I’m not sure if you’ve seen Jo’s reply? Why make people download an additional 77Mb when they’ve already got a compatible CLR+Framework sitting on their machines? And one that’s auto-updated by the vendor, too…
… look, I’m sure that Novell could put up a link that says “Hey, if you want to burn some bandwidth, download this totally unnecessary additional package”, but do you think anyone would click on it?
No, it isn’t. In my experience, “global” situations occur precisely never.
#21 by seller_liar on September 19th, 2009
I don t have .NET installed .It’s every people which have ..NET installed. Recommend proprietary software to run free software is a mistake.
Novell does not even cite .NET alternatives or tips to run using mono for windows. Novell does not even recommend to using mono to run monodevelop.
Mono for windows have gtk# installed because this is large.
#22 by seller_liar on September 19th, 2009
hey trolls ,I know the real intentions from novell .It’s recommend .NET instead mono for windows .
#23 by seller_liar on September 19th, 2009
Fix : It’s not every people which uses .NET .
#24 by shinigami on September 21st, 2009
Does it really matter, all of this chatter,- now that mono and its enforcers are destined into obscurity, via now at least two distributions refusing to ship with it , and the strong stance of the FSF etal ?
I suspect ubuntu and others may follow , now apparantly at least since Mark is considering inching his way towards acceptance of kde and hopefully , [USE: -mono] . One would really hate to see gnome left alone supporting mono, but if thats their fate who are we to resist . May fate smile on those who bear the burden of full disclosure and unwavering commitment to freedom.
I also want to take the time to make a huge reference to something that may have gone unnoticed , but brought to my attention through a friend:
” MonoDevelop can be used to develop ASP.NET MVC applications on OSX and Linux and Silverlight applications on OSX and Linux ” &
” In fact, I was discussing how promoting Silverlight development in no way whatsoever helps Microsoft lock-in ”
It is intriguing you mention that:
http://stargate.mgm.com/photosynth/index.html
I see plenty of lock-in ( where in other news: we see lock-out to thwart conversation ) here and it’s a sad day for users of free Opearting Systems that are there for reasons which we dont really need to go into here, suffice to say they are now second class citizens if their intent is to remains fans of certain publicly viewable entities apparantly
Whatever the intent was, the result is undeniable because while said friend tried to get it working through the ‘mono links’ , it never did. I think they gave up, and I dont have linux installed right now ,but suffice to say its not the cross-platform friendliness it was ever meant to be it would seem. I had more friends verify on their ends, and it didn’t work in their choice of distributions either, and if your mileage varies, feel free to report it, but so far I’ve not had any replies from mgm.
How ironic huh-
The very people the almighty mono/Microsoft camp wish to include through shouts of equality and ‘promise’, are the very ones being shunned. Is this why Fedora restricted use of moonlight ?
I imagine some around here are gloating and with no surprise whatsoever as the signs were longgg ago forthcoming if you were paying attention.
I suspect the FSF is, as well as fedora and GnewSense [ though I disagree with other things they do ] for their common sense approach to this whole sad affair. I wonder if its too late for Ubuntu, but I wonder if the time will come when no one will care, because trust has been shattered.
#25 by Jo Shields on September 22nd, 2009
Well bugger me sideways, you surely ARE the one true leader of the Free Software community