There's been a lot of talk about the three big "open"s in the computing world today -- open-source OSes, open-source applications, and open standards. I'm going to talk about each one of these things in turn over the course of the next few blog posts, and examine how they fit together and complement each other.
The other day I came across an analogy coined by someone else that summed up nicely what an OS is for, and fits into how I wanted to talk about what an open-source OS is for. An OS (so goes the quote) is like a rack into which device drivers and system APIs are slotted; those things are done once so you don't have to do them again. An open-source OS provides not only this, but an additional level of documentation for the world at large, in the form of the source code. Once done, it's done in a way that can be expanded on to a degree that isn't always possible in a system where all you have are APIs.
The most common complaint I hear about open-source, especially on the OS level, is "What good is this to me? I'm not a programmer." I can see where that argument comes from, as I'm not really a programmer, either. But the thing people miss with this argument is that we live in a world with others -- that while I might not be a programmer, I may be no more than a step or two away from someone who is (hello, Google!) and who can help me if I have some extremely specific problem that hasn't been solved in a generic way by an existing commercial solution. If I have to dig for a solution to a problem, doesn't it make more sense to look for a solution that benefits more than just me alone?
In short, this sort of grousing isn't really a complaint about open source, but a misperception of why it's useful. It's a little like complaining that your car doesn't fly, when, in fact, it gets fantastically good gas mileage. Open source doesn't magically turn everyone into a programmer, no. But it makes it that much easier for people who are programmers to work a little more magic for everyone else. Source code is no substitute for a good user's or programmer's guide.
The real advantage of open-source OSes is that they provide a framework for solving problems that by their very nature need to be close to the hardware needed to implement them. And, those solutions can remain open-ended -- that someone else can, in theory, continue where you left off, and maybe contribute something back to you. Even an open-source project that doesn't have anything to do directly with your own work can still be useful.
Everything from a Linux rescue CD to a music player or phone that runs Linux is an implementation of this philosophy. This isn't to say that the problems can't be solved any other way -- think of the phones that run some variety of embedded Windows, for instance -- but that this way of solving it opens possibilities that might not have existed before.
But, again, what's all this mean for users, people who aren't programmers, and never want to be one? What I'm thinking is that a user might not immediately benefit from open-source OSes as much as heor she may benefit from open-source applications, regardless of what OS those apps run on, open or not. That's what I'll talk about in the next installment.