Open source software powers the modern world. From operating systems to web servers and desktop applications, not only does open source deliver, but it provides truly competitive options. Given the prevalence of free and open source software, or FOSS, why are seemingly successful projects on the brink of collapse? The developers of TrueCrypt laid down their keyboards and walked away. Werner Koch announced that he was unable to justify further effort on GnuPG after 18 years. When critical security vulnerabilities were discovered, the OpenSSL maintainers revealed that they were grossly understaffed with a single full-time employee and averaging $2k per year in donations.
Those three projects alone are likely responsible for over half of the world's secure computing. I won't suggest that all FOSS developers should be rich, but anyone that makes that level of positive impact on society shouldn't have to choose between making further contributions or feeding their family. If there's an upside to these revelations, it's that the problem is out in the open. In response to the GnuPG article, the community stepped up with $135k in donations in a single day plus another $160k from just 3 companies. OpenSSL's announcement led to the Linux Foundation creating the Core Infrastructure Initiative to help fund core open source projects. If this money was available all along, why did we need an emergency to put the money where it belongs? It's time for us to agree that "free" software is about freedom rather than price.
Let's start by estimating how much a company saves by leveraging free software solutions. I'll try to create a very simple and conservative example of buying Microsoft Windows Server, which I've heard is a popular alternative. The cost for Windows Server 2012 R2 Standard is $882 per 2 CPUs. I'll use an average of 4 CPUs per server (50% with 2, 30% with 4, and 20% with 8 is an average of 3.8/each while 40% with 2, 30% with 4, and 30% with 8 is an average of 4.4/each). Facebook was estimated to have 180,900 servers at the beginning of 2013 and their active monthly users has grown by over 25% since then. If we add 25% to the server count to cover the user growth, they'd have around 226,000 servers today. With an average of 4 CPUs each, that's 452k Windows Server licenses at a cost of over $398 million. Google is estimated to have 1-2 million servers, which would require 2-4 million Windows Server licenses for a total of $1.76-3.52 billion (yes, with a B).
I'm sure Microsoft would cut either company a sizable discount to bring $398 million - $3.52 billion in revenues their way, but the point is clear: free and open source software brings measurable (and immeasurable) value to every company that uses it. Those estimates are for very large companies, but it's only 2 out of thousands and doesn't include .NET or other development tools, database servers, or desktop/office applications. I'm not picking on Facebook or Google here—both companies are known to give back to open source—but putting some numbers out there. There are countless companies and products that simply couldn't exist without the generosity and sacrifice of the open source community. If your company depends on FOSS, then you should care deeply about those projects—not just their profitability or potential extinction, but also how much attention the maintainers are able to devote to it. Don't wait for a project to announce that it's on the brink of collapse before showing your appreciation.
So how do free and open source projects get most of their funding? The most obvious source is donations, which seem to come up short. Very popular projects like Mozilla Firefox can sell branded merchandise to supplement donations, but that doesn't help small projects very much. As a project grows, funded features can start to drive some revenue. The most financially sound projects offer some combination of professional services such as support, consulting, and training (RedHat), a paid version of their product with extra/early features (MySQL), or software as a service where they charge to put the icing on the cake (WordPress). That gives us a number of ways to support our favorite or essential projects, so let's step up:
- Only choose FOSS when it meets your needs and you find real value in it. Being conscious of that prerequisite will lead to funding decisions that are grounded in reality.
- When asking a project to add a new feature, either offer to fund it in full or attach a monetary offer to help jump start the work while trying to rally others to chip in.
- If you're a C-level executive, approve some donations to projects that are critical to the success of your company.
- If you're in management or otherwise responsible for making product/software recommendations, include the cost of a support contract in your evaluation. Your IT staff will appreciate the option to interact with a knowledgeable expert if they ever need to submit a support request.
- If you're a consultant or contractor, politely suggest that your client contribute to any FOSS projects that you intend to leverage for a contract. For example, using an open source CMS easily saves 12+ weeks of your time, so a donation equivalent to 12 hours of your billable rate should be justifiable. From the client's perspective, that's a tremendous savings (97.5%).
- If you're a developer, ask your manager for permission to help implement a feature that will serve your company's needs as well as those of the project. Your company will reap the benefits of having more testers in the field and potential updates from members of the community.
- If you have time after hours to work on a project that your employer also uses, you could rest easy knowing your contributions will flow back to your company. This includes non-developers helping with documentation or other work.
- If you find yourself to be an avid or frequent user of a given tool or app, consider donating your time or money. Many projects, such as the FreeBSD Foundation, are structured as 501(c)3 or similar non-profit organizations. To maintain that status, they must receive a considerable portion of their donations from the general public, so even small donations help.
- Everyone loves free stuff: buy some branded merchandise from projects your company uses and give it away at your next company event or as employee rewards/appreciation.
These are just a few suggestions, but the key is to stop taking these projects for granted. How you choose to show your appreciation is up to you and will vary based on any number of factors. If you've had success convincing your employer or clients to help fund a free or open source project, please share your approach in the comments below.