I sometimes get funny looks from people when I refer to computer software as "elegant". For most people, I think, the notion that creating software is something creative goes against all their preconceived ideas about what a programmer's working life must be like. After all, people just sit in cubicles and tell a machine what to do day in and day out, don't they? What could be creative about that?
For these people, the existence of open source software is a complete mystery (when they bother to take notice of it at all). It seems like some kind of socialist conspiracy. Why are all these people doing this boring work in their spare time and then giving it away? Orders from their communist overlords? Are they trying to undermine the capitalist system?
With this in mind, I thought I'd offer a gentle introduction for the general populace about why geeks work all day writing code and then go home and write more for free. There have been many excellent analyses of this phenomenon written for those within the geek culture (see particularly The Cathedral and the Bazaar) but I'm not aware of one that takes the time to explain to people who are outside the hacker tribe exactly what is going on.
If there is one analogy I can think of that bests explains to others the hacker urge to create software in their off-hours, it is this: Think of someone who is a writer. Writing is his passion. He has to pay the bills, though, so he takes a job as a copywriter at an ad agency coming up with slogans for products. It is writing and it is creative, but somehow it is not intrinsically satisfying. So at night he goes home and works on writing a novel. Hopefully the novel will be published, but even if it is not at least he is writing what he wants to write. This is the feeling that causes geeks to write free software.
But wait, you may be saying. The writer plans to make money on the novel by publishing it. The geeks are writing software for free. No analogy is perfect, so perhaps this is a place where it breaks down. Or perhaps not. Think about that writer indulging in his passion to write. If he knew when he started his novel that the only way it was going to be published was by putting it up for free on his web site, would he still write it?
Even if you don't accept that, there is something that separates the hacker from the writer in this analogy: his audience. Anyone who can read has the potential to appreciate the great artistry with which the novelist did his work. The same is not true for the coder. Users of the software are not the audience that can appreciate the elegance in the creation; to them it is just something functional they can run on their computer. The only ones who can truly appreciate the artistry that went into creating the software are other programmers. That is why open source software is in fact open source - the beauty lies in the source code, and in order to appreciate that elegance in another person's program, you have to be able to read the source.
In order to capture that idea, perhaps we can switch the analogy to aircraft designers. Anyone can look at a plane and appreciate how sleek it looks. They can also recognize that they meet their design criteria. But how many people can truly appreciate the artistry that an aircraft designer brings to a particular design. Really, only other aircraft designers. Do aircraft designers go home and create designs in their spare time? If their day jobs involve cookie cutter designs that they don't care about, I'm willing to bet that at least some do.
I should mention that there can also be great elegance in designing how programs are used by regular users. This is an exceedingly rare skill, though, and is not an esteemed part of hacker culture generally. This lack undoubtedly plays a large part in the public perception that creating software is drudgery and not creative in the slightest. The inability to promote great user interface design is one of the biggest failures of hacker culture in my opinion. I will probably write more about this subject later.
Anyway, I hope that is helpful for anyone who may have wondered why all this free software was showing up, as well as to anyone worried that open source might be undermining the capitalist system. It is more like a painter in Paris creating paintings and giving them away to friends after making caricatures of tourists all day. The world of commercial art is still safe.