Sunday, August 19, 2007

Open Source

Steve K. sent me an email yesterday, containing this response to something positive I'd said about open source software:
From your mentioning of open source, I’m kind of gathering that you’re a fan of it. I’m not sure I am. It seems like often when I’m looking for a solution, the open source world wants me to download the latest source code, plus the source to 3 other open source projects that this one depends on, and then compile the whole mess to get it going. I usually don’t want to mess with all that. I know there are exceptions to this.
I've seen this general kind of perception from quite a few people before, and I vaguely remember when I first started using some open source software I had a similar reaction. It's just so darned different than the commercial software world, where all the software comes neatly packaged (usually in a box!), with manuals that follow a general convention, and so on.

But different isn't always bad, and I've come to truly appreciate the differences in open source software – to me, the pros far outweigh the cons. And with experience and practice, it turns out that many of my initial perceptions – like the ones that Steve K. still has – weren't true at all.

For example, the issue about needing to build open source software from the source code. By definition, this is possible to do with all open source software. However, I use many packages on a daily basis where I have never even downloaded the source code, much less built it. For example: Tomcat, MySQL, Hibernate, Apache Web Server, MantaRay, JFreeChart, OpenLDAP, Ubuntu, Ethereal, OpenPERL, and many, many more. These include both complete, stand-alone applications and software components. The last time I can remember actually building an open source package from source code was JSON.org's Java implementation, which I extended slightly.

Ok, so maybe I didn't have to actually build these things. So what? Why would I want to use these open source things instead of commercial products?

That's an easy one: because they're better. Just plain better. I don't mean that all open source packages are better than all commercial packages – but the actively worked on open source packages are consistently better.

There's a good reason for this, and it's not magic: visibility. Every line of the source code for an open source package is available for scrutiny by the best software engineers in the world (all of them!). There are no secrets. Open source software cannot hide its dirty laundry behind a corporate firewall or PR machine; it's all there, for everyone to examine. The culture of every active open source project I've ever run into is all about quality – whereas the culture of every commercial project I've ever been involved with (and that's many of them!) is all about time-to-market.

This is a profound difference, and it shows up in another way as well.

Every programmer who's been around more than a few weeks can tell you horror stories about this or that bug they've run into with an operating system or an application. I have personally run into dozens of bugs in Windows, Microsoft SQL, Visual Basic, Norton Utilities, and a long list of other commercial applications. These are very frustrating situations to deal with, sometimes raising challenging or even impossible obstacles to getting your commercial software finished on time and within budget. The vendors tend to not be cooperative in the first place, and even when you can convince them that they've got a bug, you won't have a fixed release in your hands for months or even years.

This problem simply doesn't exist with an actively developed open source project. First of all, there's no mystery about whether there is a bug – you can even go prove it yourself if necessary, by examining the source code. However, I have only had to go that far just one time in many bug submissions to open source projects. By far the most common response from the open source communities has been along these lines:
“Gee, thanks for finding that bug! You're our hero for the day!” Then, a few hours to a few days later, I'll get an email that says “On that bug you submitted – we have a fix, and it's available in this build. Would you test it for us?”

How refreshing is that? My favorite experience like this occurred with MySQL. A couple of years ago, I discovered a bug with CBlobs in their Java SQL driver implementation. I reported it with a code example. Two hours later, I got an email with the binary of a new build attached – and my bug was fixed! The next day that driver revision was posted on the MySQL site. That example is my favorite mainly for its contrast with Microsoft SQL. About five years ago, after a big battle with their support people, I finally got Microsoft to acknowledge a bug in one of the SQL functions. That was the last I ever heard about it, after repeated inquiries over the next couple of years. I've stopped caring about this stupid bug, but the point is that the bug is still there, five years later.

Open source is better. That's why I like it and advocate it. The bumps in the road on open source are real (though getting better all the time) – but they are a small price to pay for the overwhelmingly better quality of the open source products…

Louderback on Linux?

Jim Louderback is a very well-known figure in the world of technology journalism. He's just resigned as editor-in-chief of the venerable PC Magazine to become CEO of Revision3 (a “new media” company focused on Internet video). In the same column where he announced his departure, he had this to say:
Maybe it was something in the water? I've been a big proponent of the new OS over the past few months, even going so far as loading it onto most of my computers and spending hours tweaking and optimizing it. So why, nine months after launch, am I so frustrated? The litany of what doesn't work and what still frustrates me stretches on endlessly.



I could go on and on about the lack of drivers, the bizarre wake-up rituals, the strange and nonreproducible system quirks, and more. But I won't bore you with the details. The upshot is that even after nine months, Vista just ain't cutting it. I definitely gave Microsoft too much of a free pass on this operating system: I expected it to get the kinks worked out more quickly. Boy, was I fooled! If Microsoft can't get Vista working, I might just do the unthinkable: I might move to Linux.
If you're not familiar with Jim Louderback, this is along the same lines as a priest or minister announcing one day that everything he's been telling you is wrong, and there really is no God. At least not one named Bill Gates.

I've already seen commentary elsewhere lauding this column as a significant defection of one of the loyal Microsoft fans. Having dealt with PC Magazine many years ago (when I was working for Stac, and we were getting Stacker tested by the magazine's test labs), I have an entirely different take on this. I suspect Louderback hasn't changed his real position at all – he's felt like this about Vista (and Microsoft) right from the beginning. What has changed is this: Jim Louderback is moving to a job where he no longer needs Microsoft as a customer, so he's now free to speak his mind. PC Magazine gets lots of advertising dollars from Microsoft, and believe me: no matter how much the magazine proclaims their independence, they are not independent of their biggest advertisers. Of course they're not, as those advertisers are what feeds everybody who works at the magazine…