Home > Alex, General > Microsoft and Mono

Microsoft and Mono

February 21st, 2009

The Linux Outlaws Podcast recently (in ep. #75) had an interview with Miguel de Icaza on the topic of Mono. Since this is often a heated topic among Linux hackers, I figured I’d chime in with my two cents.

Miguel is well know in Linux land, having started the GNOME desktop and countless other desktop applications for Linux. He’s done more for Linux in the past decade than most (including myself) will ever dream of doing, so critiquing such a leader can’t be done lightly.

Miguel unfortunately started out as a typical C-only guy who looked on C++ as large and useless. For years with GNOME he and application developers (myself included) slaved away using the C-based GTK+ library to make graphical applications. Man-centuries were wasted dealing with cumbersome C and its unforgiving API style. C++ was ignored, almost laughed at, despite the fact commercial C++ GUI libraries have been the norm. To this day, GTK+ is still an utter failure with respect to commercial application adoption.

Eventually, even Miguel realized that C was not the language for desktop application development as it was hurting GTK+ adoption. Rather than embrace C++, he threw out the baby with the bath water and embraced C# itself for GNOME application development with the Mono project.

The Mono project is an open source implementation of Microsoft’s C# language and runtime for Linux and other operating systems. Although one goal of this project is very honourable (allowing custom/vertical/boring applications from Windows-centric shops to be usable under Linux), I think in general Microsoft is making a sucker out of the Mono developers and users, and here’s why:

Microsoft was once an innovative, competitive company. That however, was along time ago. They’re now a convicted monopoly who still to this day function primary to lock people into their various technologies. I don’t want to sound like a typical “Microsoft is evil” parrot but this is what a monopoly does. I can’t fault them for it, but let’s not be naive. I can spend a blog post alone on Microsoft’s various transgressions, but for now I’ll simply rat off areas which they really like to maintain their monopoly lock-ins: file servers/smb, office formats, web browsers/ActiveX, web browsers/IE stagnation, media formats/codecs, flash/Silverlight. Heck, I can’t even access my company’s MS Exchange web interface in Firefox without getting a substandard interface to email. They can’t (well, don’t want to) even make a website without trying to lock-in you into Internet Explorer on Windows.

Microsoft is not stupid and understands that platforms are really about capturing and holding developer mind share. Java and similar truly multi-platform technologies that they didn’t control was viewed as a huge threat to the Windows empire. So Microsoft “embraced and extended” Java-principles, gave it a new name (C#) and injected a boat load of Windows-specific stuff into it. We can debate the finer differences between the languages until the cows come home, but fundamentally, at their core, they’re identical languages, except that C# isn’t multi-platform and is very Windows-centric. By the way, Adobe’s flash/Actionscript is the next threat and target after Java, so look out for a serious assault on that front from Silverlight.

Given this, it’s easy to see why Microsoft likes the Mono project. They get to pretend C# is multi-platform (“see, we’re not a monopoly!”) and friendly towards Linux and open source, but they don’t have to devote any of their own resources to it. Furthermore, Mono on Linux will never be a first class citizen (like in Java) and will always be a version or three behind, lacking in proprietary features. To get the “true” C# experience you’ll still be sold a Windows system. Microsoft gets to point to Mono and claim that C# is multi-platform, but will then tell you you must run their version on Windows to get the true, modern and full experience. This basically relegates Mono to (using the colloquial term) being Microsoft’s bitch.

Although I used to code a lot of Java, I’m not really a Java proponent. But honestly, if the Linux desktop needs a garbage-collected, byte code-interpreted, type safe and object-oriented language, then Java is hard to beat. Decade or two of testing, mature IDEs, plethora of libraries and truly multi-platform (first class citizenship for Linux) and now open source (I hear?) are all features that would be stupid to ignore. But for some reason, Novell decides to chase Microsoft’s ever changing specs while having to rebuild everything from the ground up.

Miguel ends off the interview with what I think is a little Stockholm syndrome. He says that most people unfairly demonize Microsoft, ignoring the specific points (like the above) those people make. Heck, he excuses Balmer’s public demonization of Linux as the spouting of a sales man, ignoring the fact that this is the CEO of the big ship Microsoft. One simply needs to use non-Microsoft operating systems and applications in a Microsoft-based shop to truly understand the breadth and effect of their monopolistic lock-in.

But alas, I realize that there are other factors here in Novell’s decision to fund Mono. Novell is scrambling for money and business opportunities, looking for any edge against Red Hat, even if that means dancing with the monopoly Microsoft. Although you can’t fault Novell for doing what they think is in their best business interests, let’s not get delusional into thinking Mono is on some level playing field with Microsoft.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • DZone
  • Reddit
  • TwitThis

alex Alex, General , , ,

  1. alex
    February 26th, 2009 at 11:22 | #1

    ps. Microsoft now seems to have started suing open source software/Linux users/developers. Are Mono users next?

    “The question for the community will be: why should they deal with a group whose influence takes second place to Microsoft’s overall objectives of protecting patents and selling Windows? This at a time when Microsoft has been reaching out to open-source developers to help plug-ins and models that will extend Visual Studio 2010 and its new Oslo modeling platform.”

    from El Reg: http://www.theregister.co.uk/2009/02/26/microsoft_tomtom/

  2. Takla
    February 26th, 2009 at 16:33 | #2

    You do indeed sound like “a typical “Microsoft is evil” parrot”. As for the stuff about MS being a convicted monopolist….it’s true and it’s also trite to recycle this fact and only barely relevant. The reason it seems important (if one feels software is more important than other parts of life such as food, water, shelter, universal suffrage, racial, gender, religious discrimination etc) is that MS has been unusually successful and also has an extremely and perhaps uniquely pervasive presence, being found in almost every household and business in the developed areas of the world. It’s not that MS is especially immoral or unethical. You only have to look at pharmaceutical, chemical or tobacco companies to realise that from a different perspective MS can equally easily be seen as ethically positive or neutral. MS aren’t poisoning whole cities like Union Carbide (Bhopal) or pushing cigarettes to children in the third world (hello British American Tobacco) or encouraging pregnant women to use drugs which cause sever birth defects (think Thalidomide). In my opinion at least half your article is tunnel visioned, unintelligent, thoughtlessly regurgitated nonsense that can be easily deconstructed by anyone who doesn’t subscribe to the same set of pre-packaged quasi-religious views.

    I’m writing from my Debian desktop which doesn’t contain any mono libraries or applications, a choice made only on performance grounds and for the same reasons that I don’t use any free software Java based apps. Mono is free software by any standard and people making snide and sly remarks about Miguel de Icaza doesn’t change that. Stockholm Syndrome indeed.

  3. alex
    February 26th, 2009 at 17:09 | #3

    Thank you for your comment.

    I’m not sure what MS has to do with world issues such as hunger or pharmaceuticals, as that’s beyond the scope of my post. MS is still a monopoly, even if software operating systems aren’t a basic need for human life. These are just facts, I don’t see how this can be perceived as religious. I need to state these facts (even if we’ve all heard them a hundred times) to frame my views on Mono.

    I never said Mono isn’t free software. I’m just saying they’ll never attain compatibility with the latest MS versions. It’ll always be in catch up mode. There will always be pain with it. I’m just hoping that people are aware of this going in – that is all.

    I’m writing this from my Ubuntu desktop. I could have just as easily wrote this from my Windows XP development box or one of my XP laptops, though. I’m not sure what this proves :)

  4. Takla
    February 26th, 2009 at 18:58 | #4

    Part of the point is that ‘convicted monopolist’ is trotted out unthinkingly and regularly as a kind of stock shriek of moral outrage. It looks terrible until you consider that almost every business in the world would happily act in the same way, and in fact many try to and do. Microsoft got convicted not because they did anything more terrible than anyone else, but because they were more effective. I mentioned areas like pharmaceuticals because moral/ethical judgements made/asserted in the world of software development/distribution look very different, and often ridiculous, when given a broader context, and if you want to make ethical judgements, including (dubious) assessments of others’ psyches, then a context broader than that of a software focused monomaniac (excuse the pun) is useful. Microsoft produce some very poor operating systems, they don’t respect the end users, they are dominated by their media industry partners, they say some unpleasant and provocative things about their competitors, they have devious lawyers and so on. Gosh. They are horrid! But it still doesn’t make mono any better or any worse. It’s just a cheap and unpleasant way of criticising a person and a project. If your argument had any real depth you could argue the facts not the personalities. Your article is essentially an ad-hominem argument where Mr de Icaza and Microsoft are the personalities derided. It’s dressed up a little better than the usual /. or forum rant about MS or Mono or Mr de Icaza but in essence is the same.

    I mentioned that I was using Debian *as context*, a way of indicating that I have no particular positive feeling about Microsoft products. I realise now that this was a concept too far.

  5. alex
    February 26th, 2009 at 23:12 | #5

    I don’t trot out ‘convicted monopolist’ unthinkingly, I do so with a purpose in an attempt to explain how Microsoft operates with respect to technology lock-in. Microsoft does what any for-profit company would do in its position and that is maintain its monopoly status while maintaining profits. This isn’t evil, this is being a good corporation. It is up to governments to take apart monopolies and let the capitalistic process start anew. Weather any governments have done this (or want to) I’ll leave for another day’s discussion.

    I don’t attack Mr de Icaza personally (as I don’t know him), and I highly respect the work he’s done for the Linux Desktop. He is one of the big leaders in the community. Regardless, that doesn’t make every decision he makes perfect. In my personal opinion, stressing C, ignoring C++ and going the C# route was/is a mistake, as outlined in my post. Nor do I agree with his defense of MS in his public statements in the podcast. These are my personal opinions and I’m entitled to them.

    I don’t criticize the Mono code itself, which I’m sure is of high quality. Again, I’m just saying they’re always going to be chasing ever changing Microsoft standards, and always playing catchup. That is all.

    Please don’t put words in my mouth.

  6. Terry
    February 27th, 2009 at 12:56 | #6

    I really do agree with Takla here. For whatever reason many OSS enthusiasts seem to love making straw man arguments against anything related to Microsoft. Microsoft being a convicted monopolist has nothing to do with whether C# and Mono was a good idea but yet you included this in your biased argument. Microsoft made a usable language in C# to help people get their job done something that C++ really fails to do. I support Mono because if I *do* have to target the *nix systems with a product I know I can get a reasonable product out the door quickly. Java is FAR TOO VERBOSE AND COMPLICATED WITH LITTLE REWARD. C# is a SUPERIOR EVOLUTION OF JAVA because Anders Hejlsberg was able to design it based on 20/20 hindsight of the failures of JAVA and it eliminates many of the bungling errors of segmentation faults and memory leaks of C and C++.
    Miguel de Icaza made a wise and prudent choice going with C# for Linux desktop applications.

  7. alex
    February 27th, 2009 at 13:52 | #7

    They’re not straw man arguments. MS’s monopoly position guides their decision making in all their business areas, including not (directly) making C# on Linux.

    I just guess ultimately we’ll see in a year or two and what percent of C# apps or silverlight apps are actually usable under Mono/Linux.

  8. Aaron
    February 27th, 2009 at 15:24 | #8

    I have to agree with Terry. I’m 2 years out of college and got my first job at a company that uses C# and ASP.NET. I was a PHP / MySQL web developer for 5 years prior, and I have to say that despite being a fan of FOSS, ASP.NET for web development is SO MUCH more time effective. I am thrilled to be able to move projects over to Mono and have had great success doing it so far.

    Alex, your main issue that Mono will always have to play catch-up to the MS releases is valid, but from a practical standpoint I don’t think it is detrimental. I recently went to one of the Visual Studio/SQL/Windows 2008 launch events and trainings to see the latest and greatest. In one of the seminars they did a hand raising asking how many people had migrated to .NET 3.0, how many were using WCF/WPF, and a bunch of other year-old and two-year old language improvements. The truth is, maybe 10% of the hands went up. Adoption of the new stuff and especially incorporating it in larger projects with existing coding standards takes a long time — most people weren’t beyond .NET 2.0 framework. I believe Mono is already fully compatible at 3.0, or further.

    I and other developers I work with are already evaluating if we can move some projects to Mono. Hell, I even attended SoCal Linux Expo last week for the first time because I wanted to see what else was out there (and learned a ton!).

    Also, I think the analysis about Java is fair, almost all my university schooling was in Java, and C# borrows from it in the areas I liked, and improves some of the areas I didn’t like about Java. The languages are so similar though, in my opinion it would be really hard for Microsoft to go after Mono on C# considering how much Microsoft “borrowed” from Java. Same with Moonlight, especially considering how MS folks stayed up late night before the Obama inauguration to help get Moonlight capable of streaming the video, can they turn around and sue Novell now? Anyways, it’s a good debate. Viva Mono & viva Miguel!

  9. Roy
    February 27th, 2009 at 15:59 | #9

    Bottom line is that “Linux developers” have already rejected Java for C#/Mono on the desktop. Java has lost the Linux desktop and lost it years ago.

  10. alex
    February 27th, 2009 at 18:15 | #10

    @Aaron

    I guess I’ve just seen too many Windows-centric projects, and am very skeptical that Windows developers look forward to other platforms when building their applications. When it comes time to port it, if it’s not easy, they give up and ignore Linux (and why shouldn’t they, it has a tiny desktop market share). I think you’re overestimating Mono’s current compatibility greatly. But I wish you luck in your project and would love to hear that you had a swimmingly easy time in your port.

    @Roy

    Lost it to Mono? I don’t have any Mono applications (large, non-core-system applications) installed, yet I have a plethora of C++ and Java desktop applications. This is especially true when you look at commercial applications, who are more pragmatic and conservative when it comes to choosing languages and libraries. I’m not biased against Mono apps though. If I find one that I like, I won’t think twice about apt-get’ing the required runtime.

  11. Tim
    February 27th, 2009 at 20:02 | #11

    “Again, I’m just saying ther’re[Mono] always going to be chasing ever changing Microsoft standards, and always playing catchup.”

    And what is Microsoft supposed to do about that? Give Mono access to their code before its finished? Update the language specs before they’ve been implimented by Microsoft (not possible, specs change during implimenation)?

    C’mon. Mainly, you’re trying to justify your dislike for Microsoft, even after it has enthusiastically supported Mono.

  12. alex
    February 28th, 2009 at 11:27 | #12

    @Tim

    Microsoft could just make, release and support C# + runtime on Linux themselves. You know, like Sun does with Java. That would show they really care about multi-platform support.

    Back when MS was pushing DCOM, they did the exact same thing. They contracted out the DCOM support on UNIX to a third party developer, and pointed anyone to it if they asked about non-Windows support. It too played catchup and constantly fought for relevance.

  13. Dan
    April 23rd, 2009 at 14:10 | #13

    Excellent summary of the problem. When the courts shot down Microsoft’s bastardization of Java, MS chose to create a competing language instead. It’s obvious C# was never intended to be anything other than a Java killer. Microsoft then, predictably, flexed the muscles of it’s monopoly to promote c#. Yes, their monopoly status is HIGHLY relevant.

  14. April 23rd, 2009 at 15:44 | #14

    @Dan
    I agree they wanted a Java killer, but also C#’s purpose was to be “the language of .NET”. It basically demonstrates all the features the .NET CLR is capable of. They couldn’t do it with VB.NET because they (I suspect) didn’t want to overwhelm existing VB’ers with a tonne of new features.

  1. No trackbacks yet.