In a comment on another post, I mentioned that one of the problems I had with Team Mono was I think there is way too much infatuation with Microsoft technologies.
Jo Shields responded by saying, in part, “The majority of us just don’t care about Microsoft” and that “The ones who obsess about Microsoft day in and day out are the critics.”
I thought this was a point worth some consideration, because the underlying message is something like this:
Me: “You guys sure do love Microsoft. You are infatuated with Microsoft.”
Them: “You just see Microsoft behind every corner. You are obsessed with Microsoft.”
So, is that true? Are mono critics obsessed with Microsoft? Is it reading something into the debate that doesn’t need to be there?
A bit of meta before we get started
One of the things I want to try to do on this blog is respond to comments from pro-Mono people - as I did here, for example. What’s strange to me is some of the things I’m being challenged on:
- Does Novell promote Mono in GNOME?
- Does Team Mono give off a we-love-Microsoft vibe?
These seem so self-evident to me that I wonder how anyone cognizant of the debate can question them. In one way, I welcome them, because – to be quite frank – I think they represent an easy point to prove. In another way, I don’t like them because they require a lot of time to search out quotations and link references and so on. One feels if one only provides a single example, then someone will say “Oh, you are just cherry-picking quotes.” But, if you provide a ton of quotes, well that’s not a very exciting blog post, is it?
In the interest of brevity and to display ever more of my sparkling wit, I am going to lean to the side of focusing on just one example. I welcome feedback on that aspect of things. The last one was more link heavy if you like that sort of thing. I can go either way. I’m bi-linkual.
A bit of justification
As I have said time and time again, mono apologists love to portray mono critics as raving lunatics, howling at the moon and slinging feces wild-eyed into space. It’s offensive and insulting, but it never lets up. Perhaps this point is something that is not so controversial and I can at least illustrate why I think what I do and have a chance of it being understood.
I’m not expecting agreement, but I would appreciate understanding.
And now, on with the quotes:
Let’s hear from Miguel de Icaza himself:
So [Microsoft is] providing us with specifications, they are providing us with tech contacts, so whenever any specification is not clear, we have access to their engineers.
[...]I find Silverlight incredibly appealing – you get C#, you get a DLR (Dynamic Language Runtime), you get a fantastic graphics engine with a fantastic animation framework, you get video, you get audio, multi-language compatibility and so on and so forth. And I get a JITted language also, and a static language with dynamic features that beats Javascript out of the water.
[...]
So if I would have my choice today I would probably rewrite the gnome panel completely with Moonlight.
I picked this one because I think in 4 short sentences it illustrates most of the points that I see over and over again:
- It is a representative quote – it’s given as part of an interview, not a twitter, blog entry, or part of a flame war on Slashdot. So it comes across as “official” Team Mono/Novell stuff.
- It boasts of the “exclusivity” that Novell/Team Mono enjoys with Microsoft. Even if you don’t think this is a problem, I hope you can see how it could be perceived as offensive.
- It constantly and unconditionally praises the technology. Everything is always “fantastic” or “superb” or “awesome” or “brilliant”. It comes across as worshipful, fanboy stuff.
- It insults alternatives. Team Mono is not only always singing the praises of Mono/Moonlight/Microsoft, but it is a rare opportunity to degrade an alternative that passes by.
- It promotes Mono/Moonlight as absolutely the right choice and ready for the most key parts of major projects.
On top of that, running on about Silverlight is a quadruple offense:
- It has all the negative baggage that Mono has.
- Plus, there is no ECMA/ISO standard to hide behind.
- Plus, there is the incredibly offensive and anti-community Covenant.
- Plus, de Icaza often talks about the exclusive help the Mono Project is getting from Microsoft. So good I mention this one twice.
Now, I’m sure yourself or Mr. de Icaza can justify and explain these sort of quotes – or maybe you don’t see anything wrong with them at all – but from my lights they are pretty close to the “infatuation” side of the relationship chart.
Now take dozen of quotes like this, about numerous Microsoft technologies. Add a dash of defense of Microsoft some mono apologists engage in. Stir in a pinch of the attacks/snide remarks on the GPL and Stallman and Free Software ideology in general. Blend with Novell stressing they are not “open source”, they are a “mixed source”. Splash reports of Mono developers jet-setting it around Redmond and interviewing on Microsoft media outlets. Top it off with over $400 Million dollars from Microsoft to Novell and I think you can see – I hope you can see – how outsiders might think there’s a bit of infatuation indeed for Microsoft in Camp Mono.
Another note
Also in that same comment, Mr. Shields says:
Is there some Microsoft connection there if you trace it back far enough? Sure. But the same applies for plenty of stuff, e.g. Javascript (especially AJAX) and people aren’t remotely as obsessive about the links there. No really, check the names on ECMA262 and ECMA357.
I think the casual down playing of the relationship between Microsoft and Mono here is another thing that sets off warning bells. “Trace it back far enough”? Come on, man, that’s like me saying if I trace my family tree back far enough, I’ll run into my father and mother. It’s not some byzatine, ancient relationship. It seems an attempt to decieve – I am willing to accept that might not be the intent – but the point of this whole post is to try to get across how things are perceived. I’m not trying to get mono proponents to necessarily agree I am right in my thinking, only that it isn’t as crazy as Tom Cruise On A Couch.
I bring this up because the downplaying of the relationship that Microsoft has with the project is another factor that adds to the perception that Mono and Microsoft are buddy-buddy. Like you are “covering” for a friend: “No no, Ubuntu-chan, Microsoft was over at my house last night, that couldn’t have been him Fedora-chan saw down at the juicy bar with those “technical evangelists” and patent lawyers bribing government officials. He may have cheated on you in the past, but he pinkie swore he wouldn’t do it again. And I for one, believe him!”
Well there you have it
Render your verdicts! Did I make a convincing case, or did I just fling feces into the sky? Should I have just given 3 dozen links and insulted someone instead? Should I have went to bed two hours ago? Only after I wake and read your replies will we have the answers to these questions and more…

#1 by Anonymous on July 17th, 2009
Jason,
It’s refreshing reading an article where every second word doesn’t link to a previous article.
As a “mono fanboy”, and as someone who’s written C++ and Python, let me give you my perspective:
I’ve noticed that writing powerful applications is only easy enough as the APIs abstract out the code that is repeatable. Along with the API, we should be able to easily incorporate code from external sources (libraries, and the likes).
The best thing I’ve ever had the honor of working with and few others have is Google’s internal development tools. I worked there for nearly four months and the mind boggling APIs for everything from logging, parsing, map-reduce, machine learning – all put together in an unbelievably powerful build system which integrates strongly with perforce source control. I wish I could tell the world how incredible it is with C++, but unfortunately I can’t. Those people use so much open source that they feel strongly that they “owe” the community to give back their modules and libraries whenever possible.
The next comes in with python. The stdlib is fantastic, and I fell in love with it the first day (so did xkcd). Importing a library is simple and everything is so easy. Unfortunately python code is incredibly hard to maintain once it grows big. A project I wrote for a security company to detect certain vulnerabilities became very hard when it crossed the 2500 line boundary. It’s even harder when you work with a team, you don’t know how to use someone else’s api unless you plough through their code and see how things work. No editor can offer information regarding types and methods existing in a class (due to dynamic typing and inferring types is hard), and support for object oriented programming – interfaces, and stuff like that was missing. Implementing common design patterns is difficult.
Python is fabulous for scripting, but it is difficult for teams, and is a nightmare to figure out what went wrong, and realize that there was a typo in your code.
I haven’t written much of java to comment, but whatever little i worked with it, it was nice but it failed to integrate nicely with the desktop. Swing based apps would look out of place and we were forced to move our comet server from jetty(java based) to orbited(python based) due to performance constraints.
Now, we come to C#. C# is worthless without a good development environment. All classes are bundled together in a single project which compiles to a library or into a executable. Now these libraries (called Assemblies) can be referenced directly from external code, even dynamically if required. This means that you don’t need a “development” version of a library to use it. This means that if you just load a library inside your project, you get code completion and a good idea of how to use the library by just looking at the listed members. MonoDevelop is new, but is *really* good for writing gnome-based applications.
The .net api is good. It’s one of microsoft’s flagship products which is used as the standard for all platforms – mobile, xbox, windows, etc. If 25 million (or so) people have experience using this framework, and generally positive ones, you can be sure that there might be something appropriate and good about it. Silverlight is something I haven’t had much experience with, but it allows creation of visually stunning applications with near-freeform flexibility. It enables near-complete segregation of design and functionality and tries to use what people have learned from web-design to apply it to desktop programs and web applications. I’m not a big fan of moonlight though and haven’t bothered installing it. I am aware of a framework based on QT called Qyoto built by Eric Butler, but it seems to be out of maintainance. You can see an example of the Synapse IM client to see what kind of great UIs can be built.
Add to that, there are features like Linq (allows SQL like queries on lists, giving it an almost ethereal slightly lisp-like functionality), reflection (code inspecting code), Delegates (somewhat like function pointers, but strongly typed), the “object” model, which allows you to write applications which behave similar to dynamically typed ones, etc. Add to that the “Event” model allows creation of listener design patterns effortlessly.
While people consider managed code as a big advantage, using Boost’s smart pointers usually help with C++, but relatively fewer people use boost’s technologies. QT is also a great toolkit offering tremondous flexibility but most of the time, the signals and slots are workarounds to implement closures when there aren’t any solid closure support. There are a lot of great libraries which are compiled from any source (C/C++) which can be used by P/Invokes in C#, which means that you aren’t constrained to only IL assemblies built from C#.
In other words, C#/.net is actually pretty good for a developer, and except for the Microsoft label on top of it, there aren’t any significant issues that we see. The “bloat” can be disproven and it actually works really well, because the standards and APIs were designed because of sevaral years of insight into what software developers need. I’m personally very excited about F#, which would allow calling .net assemblies and will be functional with a syntax similar to OCaml. I wrote some F# and can’t wait to see it work on Mono eventually.
For me, I want my applications to help end-users, and regular people. I like knowing that I’ve made someone’s day a little easier. My temporarily-abandoned project http://code.google.com/p/diagnosis-helper/ would be a lot simpler to re-implement in Mono from python for several reasons. I really wish that everyone stops worrying extensively and reach a compromise so that we can start writing useful apps, faster, with less crashes. I want linux to come with great apps, *killer* apps, like Amarok, which makes people *want* to switch. And if a tool that can help most developers use existing knowledge, learning resources, and APIs (along with some other caveats) make the development of these apps easier, then I start to feel it’s worth the compromise.
In other words, a lot of people see mono as good technology and good code, rather than Microsoft technology and Microsoft code.
have a great weekend!
(Disclaimer: I’m a student, not an astro-turfer of any sort, I know how you people like to assume the absolute worst)
#2 by Miguel de Icaza on July 17th, 2009
There is no “exclusivity” in access to Microsoft. Thousands of developers get access to Microsoft developers every day. You just have to be willing to engage in a discussion, a conversation and participation.
Nothing is preventing you, or anyone else to engage Microsoft.
Our Silverlight agreement deal is the result of engaging Microsoft: we wanted Silverlight on Linux as open source, and they wanted to see Silverlight on Linux. We worked out the details, and next thing you know, they are helping us.
The same can be said about pretty much *every other Microsoft partner* that they work with. Except that living in a hate bubble will not really help you get closer to them any time soon.
#3 by vexorian on July 17th, 2009
And it is working so wonderfully. With Silverlight developers having to do extra work to make their thingies actually work on moonlight, that assuming they care at all… We have reached a stage in which Silverlight is advertised as cross platform and as working in Linux, while the reality is that not even the Obama coverage guys could make a video streaming app that didn’t require them to manually port to the ‘Linux’ version, and thank God that for know they actually did the manual port. We shall see if these guys will ever be so interested once Silverlight becomes yet another defacto standard.
You say hate bubble. Why is it necessary to trivialize the arguments against Mono rather than actually deal with them? It is easy to reduce it to blind hate about MS. Yet it could actually be that we have a point in not being able to be very impressed by attempts to make apps require Microsoft technology.
There are two possibilities, either when we were born we somehow came with the predisposition to hate Microsoft for the rest of our lives, as we don’t like how the word sounds! … OR it could be that we bother more about long term effects of choices rather than short term, while that anonymous guy could be right that he would have it easier coding in Mono. It does not make the users’ lives much easier to have slightly faster releases. If anything it is just a short term thing. We just think that in the long term it may not be good for users.
As a user I would like my music player in ubuntu not to change every six months, just because some guys thought that the awesome MS Tech to replace developers is fantastic and thus we need to replace the currently working and still being developed app with something that run in Mono and lacks features. I’d also like it so companies running Linux distros don’t risk getting sued just because some body around the head in gnome decided to put a notes widget in it that requires Mono technology.
We don’t hate MS, we just don’t trust MS, and how could we trust MS? Their list of antecedents is way too scary. Some guys love to pretend that they have changed and now they design good apps and everybody can contact them and use their apps without any future risk. Of course, there is no company more eager than MS to have people doing code that is convenient for them. So they are for sure going to help you. But how’s that for users? Did we forget win32, directX or {cite new example}? Maybe it would be easier to trust MS if they wouldn’t keep showing total eagerness to sue companies running or distributing Linux and get money from them because of some imaginary IP. Or if they didn’t try so hard to block any OEM iniciative to bring netbooks with Linux… Did you hear Melco just decided to pay Microsoft for Linux?
So, with Moonlights we have that one covenant, with Mono we have zillions of covenants. Like the exclusive deal with Novell that we are urged to pretend not to exist else we get called radical zealots. The community promise that besides of being just a promise and containing GPL FUD and all, states MS will still sue if you don’t stick to the standard. Where’s the forking freedom of free software and open source in that?
Anyway, MS’ actions towards Linux even now in 2009, show that they do hate Linux and open source in general. Though we are apparently not able to have reciprocal feelings, we should at least take this information to make cautious decisions. That’s before rushing into making gnome’s music player depend heavily on – what’s ultimately their technology, their patents, their covenants , their deals and their promises. To me it sounds like a rational thing to do. Though I take it you’ll still call it a hate bubble.
Amarok, that one killer app was written in C++. Users don’t go wondering about complaining that it was not written in Mono or how it’s interface isn’t moonlight.
#4 by Jason on July 17th, 2009
@Anonymous
Thanks for the considered post.
One small point: If you link to your own project you aren’t exactly anonymous anymore. Which means you don’t need the disclaimer at the bottom. Drop me an email if you want me to fix things up.
@Miguel
“There is no “exclusivity” in access to Microsoft.”
Really? Anyone can implement Silverlight? The Covenant is for “downstream” receipients of Novell.
Anyone can distribute Moonlight? The Covenant says “so long as it is not bundled with a Linux operating system other than Novell-branded operating system software”
Sam Ramji seems to think that Moonlight is a joint effort between Microsoft and Novell..
Those sort of things sure do read like “exclusivity”. And this post is about how things looks from the outside. I don’t think it is “hate” to read things that way.
“Nothing is preventing you, or anyone else to engage Microsoft.”
Well, except dignity and integrity.
Sorry. Seriously though: I don’t have to “engage” Stallman to hack on emacs, why should I have to “engage” Microsoft?
They (and you) are the ones talking about how they are suddenly all about Open Source. So why all the Covenant/Promise/Patent Deal stuff?
I don’t want to engage with Microsoft if it means NDAs, patent agreements, and setting myself in conflict with the community. If it means stabbing an Open Source company in the back to gain a bump in this quarter’s profits. That is not the FLOSS way. That is the good old fashioned corporate way.
#5 by Yaro on July 17th, 2009
It comes as no surprise that team Mono is so obsessed with Microsoft… they have Miguel de Icaza, who called OOXML “superb” and has an orgasm just about every time Steve Ballmer says something.
.NET is for lazy programmers who don’t understand procedural software development. These guys seem to overlook that an inline function is faster and accopmplishes the EXACT SAME THING .NET does: Trying to make life easier with a heavily repeated procedure. But thats why functions exist in the first place! Sure, you’d have to write the procedure yourself, but that’s my point: REAL PROGRAMMERS AREN’T LAZY. They know.NET means overhead just because they can’t be bothered to implement a common procedure.
It’s the same reason I despise Java as well.
#6 by Jason on July 17th, 2009
@Yaro
“Real Programmers aren’t lazy’
Heh. Don’t tell Larry Wall that!
#7 by Anonymous on July 17th, 2009
Jason,
I will make a suggestion to you – try and write a simple scale calculator (you know what I’m talking about) in C#. I assure you that you’ll notice a significant difference from what you’ve worked with before.
Patents will always exist, and after you’ve tried your hand writing some code using this stack, you might change your opinions. There seem to be two battles that are going on – one with people who are cautious regarding mono and advice against it, and the other with companies who might have patents over it.
What I don’t understand is that if any company could sue us regarding Mono why haven’t they done so already for nearly seven or so years.
I’m not worried that Mono is safe or not. I just feel that even if there is a risk, it’s worth that risk. I’m sure that once you just give it a shot you might change your perspective on how the battle must be fought, and your idea of victory might be altered.
#8 by Jason on July 17th, 2009
Anonymous,
I didn’t explain this to you before but I did attempt to implement such a program in C#. I didn’t get very far. Granted, that was C# 1.0, and I’m sure there have been many improvements since then.
At that point (1.0) I felt like I wasn’t seeing what all the hype was about. This was on genuine .NET Windows stuff.
I got real far real fast under Ruby and Python, but Ruby performance was too slow. Python is a little slow, but I haven’t attempted any real optimization at all, either.
To be half-serious, I’m scared to try Mono for my pet project! What if I like it!?!
#9 by saulgoode on July 17th, 2009
I can think of a few different reasons a patent holder might wait several years before openly threatening lawsuits, or even choose never to litigate at all.
Firstly, they might wish to encourage widespread adoption of their technology before exploiting it for financial gain (AKA a free introductory offer). For example, the GIF image file format employed LZW compression methods that were patented in 1985, yet it was not until 1994 before they chose to enforce those patents (after it had been deployed extensively on CompuServe and elsewhere). A more recent case involves the MPEG4 video format built upon technology patented in around 2001 and yet has since been under a permissive, royalty-free license which is set to expire at the end of this year, meaning websites hosting MPEG4 files will need to pay royalties until the patents expire about a decade from now.
Alternately, a company holding a patent might opt to use the patent to convince clients to choose their products rather than a competitor’s which hasn’t provided proper licensing. In this scenario, it doesn’t even have to be the same product; for example, a salesman for the patent-holding company might offer a customer promises not to sue over their use of a competitors unlicensed product in exchange for them purchasing a completely unrelated application.
#10 by Jason on July 17th, 2009
@saulgoode,
Thank you for covering that point!
I often say that IF Microsoft wanted to sue for patents, now is not not the time! It would make no sense whatsoever! Better – much better – to wait for the suit to do the most damage.
I’ve been thinking on why some people think the other way (“If they would have sued they would have sued by now”), and I think it is because there are two basic ways to think of the situation:
1. Microsoft wants to “protect its intellectual property” – these people think Microsoft would sue as soon as possible
2. Microsoft wants to “destroy Linux” – these people think Microsoft will sue as late as possible
That’s best way I can sum it up right now, at least.
#11 by Dan Serban on July 17th, 2009
To the lack of forking freedom I would add the lack of freedom to implement just a subset of the specification. The lack of these freedoms makes Mono non-copyleft for all intents and purposes.
Someone on the legal team at TomTom might have asked a similar question up until a couple of months ago.
“If anyone could sue a Linux using company over patented VFAT file name extensions, why haven’t they done so already for nearly xyz or so years?”
Just because something hasn’t happened so far doesn’t mean it will never happen.
#12 by Anonymous on July 17th, 2009
there’s something funny about the tomtom case to me. Why did they sue regarding VFAT patents? I checked out an article by Bruce Perens (someone I really look upto), and saw that these are the patents that were in question when tomtom were sued:
* 5,579,517 Common name space for long and short filenames.
* 5,758,352 Common name space for long and short filenames (again).
* 6,175,789 Vehicle computer system with open platform architecture.
* 6,202,008 Vehicle computer system with wireless internet connectivity
* 6,256,642 Method and system for file system management using a flash-erasable, programmable, read-only memory.
* 6,704,032 Methods and arrangements for interacting with controllable objects within a graphical user interface environment using various input mechanisms.
* 7,054,745 Method and system for generating driving directions.
* 7,117,286 Portable computing device-integrated appliance.
Now, funny thing is that a lot of devices probably violate these patents. A friend of mine who’s studying IP Law and is interning in a law firm told me that this is pretty common: If a company ever does decide to sue, then they bring the entire arsenal out so the rulings are in their favor.
He followed the Tomtom case earlier, and he mentioned that the main patents infringed were the one on vehicle systems or something – yet nobody mentions that. If you have to sue someone regarding something, you probably want to bring out everything you’ve got. Some people felt that FAT is trivial and common, and seemed like a potential threat.
While I’m not worried about MS using Mono to take us down, I am concerned that it will add to the number of patents that they can use to incriminate other companies if they ever choose to.
For some reason the company seems to be interested in leveraging open source to whatever they do. Since they’re a publicly traded company their goal is to make lots of money. While they could’ve done some nasty stuff in the 90’s and early 00’s, it’s hard to say whether such mass eradication of a platform is possible and is seen as a strategically positive move by anyone.
#13 by Michael Z on July 18th, 2009
“I will make a suggestion to you – try and write a simple scale calculator (you know what I’m talking about) in C#. I assure you that you’ll notice a significant difference from what you’ve worked with before.”
This is poppycock. c# is just like Java, except more complicated (all that syntactic sugar might make using it easier, but it is a more complex language). The libraries even have the same sorts of issues – except Java’s have gotten somewhat better simply because they’ve had longer to get better (e.g. deprecated `first-runs’ at container classes and the like).
C# (and Java for that matter) is pretty much like any other procedural language when it comes down to the nuts and bolts. And the GUI toolkits are no better than any other modern toolkits (including the C ones like gtk+). And to top it off the documentation is really awful, now I think about it. After coming from the GNOME world, using .NET in visual studio was a very unpleasant shock to the system.
Back to the original post – Miguel is a pretty easy target in the fawning over MS front. Must’ve been the only human on earth who thought COM was a good idea for example
#14 by Robert Millan on July 18th, 2009
I think what Miguel tries to say is that we don’t get protection because we’re in a hate bubble. IOW, if you learn to love thy master instead of criticizing him, you can benefit from his indulgence.
#15 by Jo Shields on July 18th, 2009
If COM is a bad idea, why does OpenOffice.org (UNO) and Mozilla (XPCOM) use it?
#16 by makomk on July 20th, 2009
Jo: well, aside from the fact that neither of those are Microsoft COM (just work-alikes), and lack COM’s more interesting quirks…
Mozilla has actually been carrying out a major deCOMtamination project over the years to remove as much use of XPCOM as they can. Supposedly, they were planning to strip it out totally in a future release. It uglifies the code and leads to unnecessary bloat, apparently.
OpenOffice.org – well, anyone using that as an example of good code is probably insane. It works, don’t get me wrong, it’s just a bit of a nightmare internally.