Why do programmers write open source software?

- Robin 'Roblimo' Miller -
"What motivates people to participate in the open source community? Is it creativity, or what? There's a lot of work involved, and the remuneration must be minimal. What do open source developers do for a source of income?" These questions were recently asked on a journalists' email list I belong to. Here is an edited version of my reply:

Creativity is an important factor, but it is far from the only reason programmers "participate in the open source community."

A majority of people who write open source code do it as part of their jobs. Apache was originally written and is still maintained primarily by network admins and programmers who need reliable, low-cost Web server software and believe it's better to pool their efforts than go it alone. Many Linux kernel improvements come from programmers who work for companies that depend on Linux in one way or another, ranging from small consulting firms up to multinationals like IBM, HP, and Computer Associates. Intel and AMD have helped the Linux kernel scale to multiple processors and support 64-bit CPUs. DARPA has partially funded development of the ReiserFS journaling file system (which I use) and has also provided support for OpenBSD and some OpenBSD-generated security features like OpenSSH (which I also use), but seems to have had some problems recently with public comments made by OpenBSD project leader Theo DeRaadt, and may withdraw some or all of its OpenBSD funding.

There's also a substantial (growing) crowd working on free or open source software that is also the "base" for a commercial product. OpenOffice development is sponsored by Sun Microsystems, and OpenOffice is free, but Sun rolls OpenOffice improvements into pay-for StarOffice. MySQL is available either free or in a commercial version with added configuration tools and other proprietary bells and whistles, and at least half a dozen popular Web content management and ecommerce packages also fall into the dual-licensed, dual-branded category. Think of this as a formalized, legal version of the old Adobe marketing program, where Adobe winked at Photoshop "piracy" by home users and small-time graphics artists because they all got used to using it and, when they got jobs at companies with money, they all asked their bosses to buy Photoshop for them.

Academics also tend to be prolific open source producers. Astronomers write astronomy programs, engineers write engineering programs, economists write economics modeling programs. Naturally, most of this software is used for research in some way and is subject to peer review, so it is usually open source. Students, too, write open source code as practical exercises, and some of it is pretty darn good.

Another big motivation for open source programming is someone saying, "I want a program that does ____," and either one doesn't exist or it is too expensive for him to buy, so he decides to write his own -- and asks other people who want a similar program to help out. This is how Linux got started. Linus Tovalds wanted a cheap or free Unix-like operating system kernel he could run on his home PC -- as a learning tool while he was a college student, no less -- so he wrote one. Many other people around the world wanted the same thing, so they chipped in to help develop it. The GNU tools developed by the Free Software Foundation got added and made the Linux kernel the heart of what we now call the "Linux operating system" even though it is technically "GNU/Linux." Later a whole bunch of corporate users decided it would be a good idea for them to help develop Linux, too. These people and companies weren't developing Linux to benefit mankind. This was merely a synergistic side effect. They wanted the operating system for their own use.

The Free Software Foundation (FSF) wants to create free software for everyone. It's the organization's long-term social goal. Some people contribute code. Others, including foundations, corporate sponsors, and individuals (like me) contribute money. Many programmers get paid by the FSF to create free software that is intended to benefit everyone. This is no different from supporting free symphony concerts in the park if you think classical music should be available to all, regardless of ability to pay.

An interesting note about open source programming is that having your name on a project can be a nice resume boost. Open source projects not only give young programmers valuable experience, but give potential employers a way to evaluate their work by looking directly at source code they have written, something they can't do if an applicant has only worked on proprietary software. There is also the possibility that your open source project might spin off a commercial product that will make you a lot of money. Security expert Marty Roesch, for example, has built a successful business based on his open source Snort intrusion detection system, which he originally started writing as a hobby project.

Using an open source license for your software means that everyone to whom you sell or give your program gets access to your source code and is free to modify and redistribute that code. It does not necessarily mean you have decided to program for free all night while working in a gas station all day to pay your bills. And if you have created or have helped create free software that a company like Citibank or a government agency like the Department of Commerce wants to use, but wants to have modified to fit a specific need, there is no reason you should work for them for free.

Proprietary software houses charge corporate and government customers an arm and a leg for program customization, usually much more than the license fee for the software upon which the customized program is based. Smart open source programmers have figured out that they can charge just as much as proprietary software vendors for customization, installation, and support services, and that by eliminating license fees they can easily win most price-based bidding wars against proprietary software vendors while keeping their profit margins more than high enough to support themselves adequately.

In other words, there are many reasons besides altruism or the pure joy of creativity that prompt people to write open source software, and many of those reasons are just as selfish as writing proprietary software because you get a paycheck in return -- which can be (and often is) a fine reason to write open source software, too.