On Windows, Mac, and mobile devices, you can make a decent living selling software directly to users. On those platforms, people are accustomed to paying for applications (although many are free).
Things are different for open source software. You’re free to charge money, but what’s to stop someone from taking the source code and releasing an alternative?
Selling applications, physical products, and online services is also how the big guys make their money. Apple and Microsoft want you to use their programs on their machines. So if you’re an employee producing code to run on a commercial operating system, your employer is likely in the business of selling software.
Google differs in that it makes most of its money from ads, but Canonical took a beating when it tried something even vaguely similar.
In short, you need to take a different approach to making money in the open source world. How exactly do people make money producing Linux code and giving it away for free?
1. Asking for Donations
You go to an application’s webpage and see a donate button in the corner. Do you click it? Maybe. Probably not.
This is the problem with relying on donations as a source of income. Sometimes money comes in. Often, it doesn’t.
Patreon has helped out some members of the open source community, but many developers aren’t popular enough to attract a following monthly. Distros such as Elementary and Ubuntu MATE manage to bring in some revenue using this model, but the platform is better suited for content creators than software developers.
A few services take the opposite approach. Rather than being places to ask users for money, these sites provide a way for people to send tips to services they enjoy. Examples include Tip the Web and Gratipay.
Organizations have an easier time attracting donations than individual developers. Groups such as the GNOME Foundation, KDE e.V., the Free Software Foundation, and the Software Freedom Conservancy bring in enough donations to function. Open source enthusiasts donate to benefit a cause, and companies sometimes contribute big dollars to support technologies they benefit from. Some are willing to become corporate sponsors.
2. Working for a Company
Many developers earn their monthly income creating Linux code. They work for companies that, for one reason or another, have determined that supporting the Linux ecosystem is good for business.
Some are “open source” companies. Making free software is a key part of what they do. Red Hat is the largest example of this. Canonical, who makes Ubuntu, is another prominent one. Both make money by establishing support contracts with companies that use their products.
Others utilize Linux to achieve their own specific goals. Before Android and Chrome OS, Google didn’t market its own distros, but it still hired developers who had to work on Linux. Over the years, it has produced a number of Linux-compatible apps.
Most companies with Linux developers don’t contribute code back to the broader community. Many of them create or maintain the enterprise software necessary for a company to do its job. Linux, after all, is more prominent on servers than desktops. This reality has pushed even Microsoft to hire people who work with Linux.
But in some cases, there’s no way around working directly on the original open source project. Lesser known companies such as StrongLoop and Voxer pay some people to work exclusively or predominantly on Node. And because life isn’t black and white, so does Microsoft.
3. Going Independent as a Consultant or Contractor
A developer can make decent money going independent. Rather than join a company, they take their skills and work as a consultant. Many organizations need help starting an open source project, and a consultant can help them get off the ground. Others find that keeping a project going is even harder and turn to a consultant for help.
Many companies need help building or maintaining a Linux server but don’t want to hire someone for a full-time position. An independent contractor with Linux expertise can come in and take care of the job.
This work doesn’t always provide the steady paycheck that being an employee does, but it provide more reliable income than donations. It gives someone with plenty of Linux-related skills a way to subsidize all of the programming they’ve done for free.
4. Hunting Bounties
One innovative approach to paying developers is actually rather old school. Name a job you want done and put up a bounty. Whoever does the deed takes home the reward.
Bountysource is a website where users can contribute money towards these bounties. The reward doesn’t have to come from one source. Many people can toss $5 toward a project in hopes that if enough people jump in, a developer will find the reward enticing.
Unfortunately, the prize money doesn’t always match the task. The Elementary Project has embraced Bountysource as a way to attract help, but even with additional contributions from users, most jobs will net a developer $100 or less. That’s pennies compared to the money a programmer makes in the private sector.
Why Do They Do It?
Motivations vary from one person to the next. Many developers have an ideological belief that software should be free and open source. Or, at the very least, they believe that creating such software benefits the world. Other developers feel that they wouldn’t have success trying to sell their software, so they might as well open source it. Some come from the opposite angle — they see no reason not to open source their project. Tossing code on GitHub invites others to help out and make an application better than it would otherwise be.
Some are happy to use their skills creating software they enjoy after spending hours on less interesting projects for their day job. Others are students flexing their muscles for the first time.
At the end of the day, “free” labor isn’t free. Volunteers have to make money somehow. And while much of the software in your distro’s repos come from developers who work for free, many people are still paid to contribute to the open source ecosystem.
Do you get paid to work on Linux? Do you create applications? Work on servers? Produce the tools that run the web? What’s the money like? Share your experience with us in the comments!