Thursday, 25 June 2009

Mono and FLOSS Zealots

I was reading Is Linux Suffering From Mono? the other day. This is an issue that crops up now and again- is Mono a traitor to the Open Source community? Quite frankly I think the argument that Mono is somehow going to be downfall of Linux is a pile of s!*@t!

The anti-Mono arguments all seem to revolve around the fact that it’s based on Microsoft technology and so is evil. The arguments are all very negative, full of speculation and FUD. Here are some of the arguments as I see them:

Mono is based on proprietary technology

Mono is an implementation of the .NET Framework, a Microsoft technology, but C# and the CLI are both ISO and ECMA standards. I reckon MS set out with the idea of creating a cross platform framework to encourage adoption and help compete against Java etc, rather than use it as a some kind of patent Trojan Horse (see below).

From a MS perspective there’s nothing ‘official’ about the Mono implementation of the .NET framework, but they certainly don’t have anything against it. In fact MS did work with the Mono team to produce an official cross platform version of Silverlight. Again, I think MS needed to do this in order to compete effectively with Flash (and the AIR) who obviously have a massive head start.

Microsoft will try to enforce Patents

I just can’t see this happening. Trying to enforce a patent after you’ve released an Open Standard and encouraged other implementations has got to be pissing in the wind. I’m no expert, but I just can’t see how this would ever work. I can’t see how it would fly legally, it would be bad PR and would damage MS’ relations with developers. I suppose it’s possible they might try to enforce some patent to do with the implementation, but anything in this vein could easily be worked around. The Mono team are pretty careful about this kind of thing (i.e. no copying of MS code!).

FLOSS Zealots

I’ll try not to get in to a discussion about the merits of Open Source versus proprietary software, but I have to say the FLOSS (or FOSS) zealots do get me going! These are the issues I have with them:

  • Their arguments are generally negative. They’re all about criticism (MS, or Mono or whoever).
  • Their arguments are hypocritical. “I want everything Free and Open” as long as it’s done the way I want, and you don’t use any software I don’t like.
  • They complain about companies spreading FUD, and then spout more crap and FUD than anyone else.
  • They apply double standards. Anything from someone they don’t like has to be meet their standards to a much greater degree than someone they do like.
  • They’re basically Fan Boys (or their opposite).

My Take

I actually quite like MS software and the development support they give. I have Vista on my desktop, C# is a good language, Visual Studio is a good development tool, .NET is a decent framework.

Within the company I work for .NET and Mono are great for the following reasons:

  • C# is a strongly typed OO language that has decent performance and string handling. XML and other string based technologies aren’t handled particularly well in C / C++!
  • Makes resourcing easier. C# is relatively easy for people to pick up- teaching web programmers C / C++ is probably not the best way forward. You can write Web Services and embedded programs in C#. Once you have a few people that know C# it becomes a lot easier to resource projects.
  • Multiple languages, one framework. This means you only have one Framework to learn and you’re able to choose the language (or multiple languages) for the job. One of the projects we did was prototyped in Python, made to run in IronPython (pretty easy) and then gradually replaced module by module by C# code.
  • You can develop and test on Windows, and deploy on Linux (ok so you have to test on Linux as well). Which is a good thing given most of us have Windows on our desktop. Most of our Linux machines are command line only, so less trawling through text files, more stepping through code in the debugger! Yay!

Go Mono! That’s what I say! :-)

No comments: