Is Free/Open Source Software (FOSS) really all about “freedom of choice?” Or is it really about simply “having a choice?” I believe it is the latter. I really hate to say it, too. I like the LAMP stack as the main front of the FOSS movement, and there is a lot about it that I find attractive. Frequent readers know that I give away gobs of source code in these posts and in my articles. Indeed, all of my recent articles that involve any code contain not just examples of the core code, but a full application with source code. That is fairly unusual in the .Net community, and my articles tend to use .Net since it is what I spend my days programming in lately. But as demonstrated by the somewhat rigid adherence to the LAMP stack, FOSS is not really about “freedom of choice.”
Indeed, having spent the last few years around the .Net community, I really miss my Perl days. Working, usable modules readily downloaded, great tools for free, and a great community. When you are in the world of proprietary, these things are just not as “out there” as I was used to in my Perl days.
But the more FOSS I encounter, the more I doubt the movement’s dedication to “freedom of choice.”
Sure, FOSS presents a great alternative to Microsoft, Oracle, IBM, and the other closed source software vendors. But unfortunately, FOSS does not seem to have many choices available within in for a lot of things. If you are not sticking to the LAMP stack, your “freedom of choice” can get pretty limited pretty quick.
The first limitation I keep hitting is the “L”: Linux. I run FreeBSD on my home server. As a result, I get to put up with documentation that tends to be fairly Linux oriented, the occasional installer that assumes the Linux directory structure, and other minor annoyances. But at least no FOSS ever made me install the Linux compatibility module like Java did. Then again, at least I am using FreeBSD; I would hate to be a Solaris admin trying to get support or help or even to get things working right.
Then there is Apache, the “big A.” Sure, there is the occasional piece of FOSS that uses a different Web server, typically when it wants a micro server for configuration. But luckily, there really is no good reason to be using anything other than Apache anyways, unless you need to run .Net apps or some other IIS-only software. Frankly, in many cases I prefer Apache on Windows to IIS on Windows. So while Apache-centric software is not a problem on a practical level, it is a violation of the “freedom of choice” principle.
And now we get to the real sticking point: MySQL, the “M” in “LAMP.” Do not get me confused, I like MySQL a lot. But the fact is, MySQL still is not at the same level of Oracle or even PostgreSQL on many levels. There are plenty of FOSS RDBMS’s out there as good, or better than MySQL, and many proprietary solutions that are much better than it in an enterprise setting. Sadly, I have encountered very projects that do not use MySQL exclusively for their backend, particularly Web applications. I have seen a few that will also use PostgreSQL. I cannot remember the last time I saw one that would work with Oracle, Ingres, Microsoft SQL Server, DB2, Sybase, or another similar database. It is really disappointing, because it effectively shuts out a lot of FOSS from big enterprise settings.
And finally, there is the PHP, Perl, and Python trio that make up the “P.” Let’s be honest, Perl and Python are really minor players much of the time. Perl is still heavily used in shell scripts, but it is increasingly rare to see it used as the muscle of a Web application or any other application. This is one area where a lack of choice really is not a very big deal. All three languages are perfectly fine, and it is not like you can (or should) expect a piece of software to be written in three or four different languages.
As much as I like the idea of the LAMP stack being a reliable standard, and appreciate it, I just find it rather odd that people claim that FOSS is all about “freedom of choice” when really it is simply an alternative. Maybe in the future, FOSS projects will be better modularized so that administrators can mix and match components as needed, but until then, the LAMP stack really does not allow much wiggle room within it. And that’s why I say that right now, FOSS is about “having a choice,” not “freedom of choice.”
Justin James is the Lead Architect for Conigent.