Beware: another work-in-progress.

Open source is heralded as the future of software, and the solution to all our software ills – which are legion. Open source is also often cited as the main locus of innovation in software.

I disagree.

I think the locus of innovation and the future and the solution to our software ills is in functional programming and formal methods. Theory informing disciplined practice.

Now, it happens that much (if not all) of the software coming out of the FP community is open source; but it is innovative because it of its provenance, not because it is open source. It is open source because its authors – mostly forward-looking brilliant academics – want to share.

I get irritated with cheerleaders of the open source “movement” – such as O’Reilly – who crow about its superiority, its achivements, etc. One of the achievements of the movement is something called Perl, which is, in my opinion, the bane of anyone who finds beauty in simplicity and elegance. Perl is anything but. It is full of “magic”; it tries to guess what you mean; and its primary author is happy to believe that there’s more than one way to do it. Yes there is: the Perl way, and the right way. Perl’s semantics are .. anybody’s guess. For a simple. beautiful, and truly innovative language, choose the Lua programming language instead.

Open source is no more, and no less, innovative than closed source.

Both groups employ the same methodologies, the same (outdated, outmoded) programming languages, the same ad hoc, seat-of-the-pants, muddy thinking. The best open source projects are solidly mediocre. They might be more reliable than Windows, but that’s not saying much. There are exceptions, of course. There are a few truly magnificent examples:

These projects excel not because they are open source, but because their authors believe in, and practice, simplicity and elegance. I didn’t think much of MySQL until a podcast about it by the main authors. I was impressed with their philosophy.

A perfect example of this so-called innovation is the “LAMP stack”. This is a combination of Linux, Apache, MySQL, and Perl/PHP/Python. The pieces are all reasonably solid, stable, and well-engineered (within the limits of our current outmoded paradigm, of course. ;-), but they are a pain to configure, and a pain to glue together. Innovative? Hard to say.

Linux is a reinvention of Unix. There was a flame-war early on between Linus Torvalds (the Linux kernel’s initial, and primary, author) and Andy Tanenbaum (a noted operating systems researcher). Tanenbaum claimed – rightly – that Linux was obsolete as designed. Linus shot back – equally rightly – that he wasn’t interested in pushing envelope of research, but instead in getting something to work that would have reasonable performance.

Apache is, according to its FAQ, “a patchy server”. A bunch of source-code patches to the NCSA web server. A grown design that is anything but elegant. It has reasonable performance, and is very configurable (but difficult to configure correctly), but it’s a nightmare. Innovative? In small internal ways, maybe; but overall, no. In fact because of its place as the most popular web server, and its difficult administration, I think it’s a bottleneck to clever and interesting uses of URI space. It’s rather difficult to get Apache to serve up an abstract URI space, rather than the server’s filesystem.

MySQL is maybe the exception here, but again its main selling point is its (initial) internal simplicity. Is was designed to be simple, small, and fast. (Hmm – like all my favorite software.) It has grown some since, but I believe that the authors have likely done a good job shepherding it through adolesence; and unlike its many of its open source peers, it has very good free online documentation.

Perl/PHP/Python. Ah – where to begin?