Sunday, December 13, 2009

War over code... *sigh*

I don't like talking about this, since it seems to fuel the fiery pits of hell that flamewars come from. But, I'm extremely irritated about it, and some of the stupidity going on is ridiculous.

What am I talking about? I'm talking about the usage of Mono for Linux applications.

For years now, Linux software developers have been able to pick whatever language they want to write code in. If said developer chooses Python, C, C++, Perl, JavaScript, PHP, or even Java, people are usually fine with it. Granted, some people grumble about Java code because Java has the reputation of being rather slow, but other than that, it doesn't matter too much.

If a developer chooses to write software in C# or Visual Basic .NET, then people get up in arms about it. There are some developers that want to bring C# in as a core supported language for GNOME software, which would inevitably make Mono a required dependency of GNOME.

But there are a lot of 'freetards' (borrowing from Linux Hater, while I don't like a lot of what he says, the word is very appropriate) that believe Microsoft will kill us all through C# and patent attacks. Nevermind that a legally binding agreement exists that Microsoft will not sue us all to kingdom come.

A valid point is that the Winforms, ASP.net, and ADO.net stuff in Mono isn't covered. People seem to miss that all that stuff can actually be STRIPPED OUT of Mono. Mono doesn't have to use the .NET interoperability libraries. You could just use GTK#, IronPython/IronRuby, IKVM, etc. instead.

The technical aspects of Mono have also been debated. Here is a list of Pros and Cons for Mono by me, note that they are accurate as far as I can tell. If there needs to be a correction, let me know and I'll fix it.

Pros:
  • Works on x86, x86_64, PowerPC, ARM, SPARC, and other platforms seamlessly and without modification to source code.
  • Rather complete and mostly platform independent. The runtime itself can run on Windows, Mac OS X, Solaris, Linux, and FreeBSD. Mono is extremely portable.
  • Supports multiple programming languages. Mono nominally supports C#, VB.net, and Java. It can suppport Ruby, Python, PHP, etc.
  • Code from multiple languages can be mixed together.
  • Can be compiled ahead of time or JIT-ed depending on your needs.
  • Lets ASP.net web applications run on Linux servers rather than require Windows.
  • Licensed for usage with open source and proprietary applications. The core of Mono is under LGPL and most of the libraries I believe are MIT X11 licensed. There are also several libraries and toolkits licensed under the MS-PL, which is very similar to licenses like the Three-Clause BSD license.
Cons:
  • Rather large. The Mono runtime uses a lot of disk space, I think somewhere around 400MB?
  • Uses a bit more memory than conventional optimized C/C++ programs. Note the optimized bit. If the application isn't written very well, then Mono actually uses slightly less!
  • Does not integrate well into the application binary execution mechanism on any platform. This could be improved in a number of ways, but in order to remain compatible with .NET Framework, I don't think this will happen for quite some time.
  • Winforms is ugly on EVERY platform. This is the unfortunate consequence of trying to make Winforms work on any platform that Mono can run on. I think its supposed to support using Windows visual styles when run under Windows, but that doesn't happen.
  • GTK# doesn't quite play nice yet on Mac OS X. I can forgive this because GTK+ (which is what GTK# binds to Mono) only very recently stopped requiring X11 to work on OS X, it will take time for it to be adapted to work well under Mac OS X. Be assured that they are working on it though.

As far as I'm concerned, as long as your code is good, open source, and works, I'm happy. Try to write the best code that you can, and hope for the best. I'm not a fundamental open source purist. I understand that any system needs a mix of both to do well.


Mono is not the only issue in regards to the "war over code." There are issues within the community regarding the very idea of mixing with proprietary code. Much less talking about it, apparently.

Because of issues like these, however, projects are feeling a split in opinions. There's even somebody calling for GNOME to remove itself from the GNU project (If you want to read through the entire thread about it, here is a link.)

Another hotcake recently (one that personally affects me a great deal more than Mono does) is Oracle Corporation's pending acquisition of Sun Microsystems.

A reminder: Oracle Corporation already got the go-ahead to acquire Sun from the U.S. government. The European Commission is the one holding up the completion of the deal. In all practicality, they could just go ahead with the process. However, the result would be that EU would lock Oracle out of European markets, and that would be a Bad Thing(TM).

Personally, I have no feelings against Oracle Corporation. Heck, I once wrote a personal website that used Oracle DB several years ago (No, it was never online, this was before I had internet access. I experimented a lot with FrontPage and ASP back then. It was a lot easier to organize my music and videos that way) and I found Oracle DB to be quite reliable. And they do release and support open source work. But, I digress.

Oracle would be very stupid if they were to let MySQL fall to pieces immediately. I could see them transitioning people to their Express Edition for low to midrange stuff that MySQL targets, but I doubt they would kill it right away. I could even see them open sourcing the Express Edition, to assure people that it would be universally available. However, these holdups make me far more worried about MySQL's future than Oracle ever really could.

As a result of this mess, lots of forks of MySQL have shown up, each more worrying than the last. I'm not going to discuss the forks right now, that would be reserved for another time. But each fork makes MySQL's future a bit more uncertain. Nobody likes dealing with forks. Especially not CMS developers. Forks are hell to support, especially when some features are dropped just because they want to.

Now, its not all horrible. MySQL cannot be completely killed off until the last DB developer stops working on it. It is still licensed GPL. PostgreSQL, while usually overkill for low to mid range usage, is also an option. Even Enano CMS supports PostgreSQL as of 1.1.x. As far as developing MySQL, there is only so much you can do with it. Bugs have been mounting and its getting quirkier to deal with on some platforms. But it is preferable to set up over PostgreSQL, which can be difficult to set up properly, unless you use a pre-configured stack.

Michael "Monty" Widenius, one of the co-founders of MySQL AB and founder of Monty Program AB, is asking for people to help "save MySQL." He has stated before that Oracle would have a conflict of interest to develop MySQL and should sell it off. I don't know if he is right, but I personally don't think so... yet. We'll see about that. Eben Moglen from the Software Freedom Law Center believes that Oracle acquiring MySQL would not necessarily be a bad thing. Richard Stallman of the Free Software Foundation, unsurprisingly does oppose the acquisition. What is surprising is that he defended the dual licensing model.


This debate is ongoing, but I think the resolution will be very soon. Personally, I think that the best solution would probably be to have Oracle purchase Sun and spin MySQL off into its own Foundation, funded by Oracle. But, I don't think that would be the most economical solution. Quite frankly, I don't really know what would be the most economical solution.

We will have the wait and see...

UPDATE (12/14/2009 @ 12:43PM US/CT): Oracle posted a detailed set of commitments to supporting MySQL to "reassure the Commission." These reassurances are great, but they aren't in a legally binding form, and that will almost certainly cause several to worry. I hope that Oracle Corporation will offer a legally binding message to prove this reassurances.