Why do programmers write Free Software?

Why do programmers write Free Software?

First off, free has two different meanings. Most times it is used in this wiki, Free means free-as-in-speech. But since the GPL (which is the license most open-source software is released under) doesn't prevent third parties from redistributing the software for free, most libre software is available for gratis, at least in some form. So if it is free-as-in-beer why do people write it?

Distribution Vendors
Some libre software is written by the distribution companies that sell distributions. But this is just a small bit of the libre software that is available. The code that the distribution companies write tend to be the "glue" that holds the distribution together: such things as the installer, package managers, and shell scripts. While we're on the subject of distribution companies:

A Side Topic: Why do most distributions have a free version?
To begin with, the actual operating system is basically free (gratis, if you're keeping track). There several entire distributions that are entirely free. (Debian being the obvious example.) So the operating system is a very small piece of what you buy when you buy a Linux distro.

Except for a very small percentage for physical reproduction and shipping of the media the distro comes on, most of your money actually goes for technical support. Now technical support doesn't matter very much for home users. But it does matter to big companies who will loose hundreds of thousands of dollars or even millions for each hour a big server is down. So the main market for distribution companies is the corporate buyer.

Now a corporation doesn't need the latest, flashiest new features. What they do need is the "Five Nines of Quality", which means that a server will stay up 99.999% of the time.

So the distribution companies give away versions of their distribution that are loaded up with the newest, flashiest (and sometimes buggiest) software for home users to test, so they can work out almost all the bugs before they entrust it to the big corporate users they actually make their money from.

Spare Time Programmers
Far and away, the biggest source of libre software are programmers who code up a piece in their copious spare time. These can be amateur coders (amateur doesn't necessarily mean bad!), programming students (like Linus when he first started on Linux), or professional programmers in their spare time (or on stolen company time, like when Ken Thompson coded up Unix). The main motive for them to do this is to "scratch their own itch". They have a interesting problem, or they need a tool, and they sit down and code it up, and then share it with their 6 billion closest friends.

There is also something to be said for ego boosting. Getting a piece of code into a famous piece of software like the Linux kernel looks quite good on the resume.

Programmers Working for Companies that Use Libre Software
Some big companies who use Libre Software in their internal operations find it's easiest to hire programmers to modify the code for their own uses. These programmers, like the spare time programmers, tend to be self-selecting. They gravitate towards a piece of software they find interesting and work on it.

Under the terms of the GPL, these companies are not obligated to give their modifications back to the community. However, they often do backport their modifications back to the original project, to save themselves the trouble of remodifing the next version of the program when it comes out.

Software Bounties
Sometimes there are itches that programmers don't find very interesting. But a user, who can't code well enough to scratch it themselves, finds themselves with a very annoying itch. They also can't afford to hire a programmer themselves. But they can donate to a software bounty, in the hopes that other code-illiterate users have the same itch, and that together, they can build a big enough bait to attract a coder. This, so far, hasn't been done a lot, but as more users who aren't programmers themselves hear about libre software, it might pick up.