Open source is a fact of life at most organizations today. Even if you don’t directly publish open-source software, you are almost certainly using it. If you or your company use Microsoft or Java-based development tools (either for internal applications or external products), you are leveraging open source. Even the browser that you are reading this blog post on is likely based on open source (including Chrome, Firefox, and even the more recent versions of Microsoft Edge—it uses Chromium, an open-source browser framework). IT professionals and developers use a long list of open-source tools in their daily work.
OK, Open Source Is Everywhere. What Does That Mean for Me?
There’s plenty of debates on this, but my belief is that not all independent software vendors (ISVs) can or should release their software as open source. However, I do think that every organization can and should contribute to open source. We benefit from it, so we should support it. If we don’t, we stop getting the benefits of it. Contributing to open source can also benefit your developers—it helps them develop new skills, get exposure to other approaches, and build their careers.
Isn’t Open Source Free, Though?
Open source isn’t free. Yes, you can download the source code without paying for it. And, most of the time, you can download the end results of open-source projects and install it just like you would with a commercial package, only you don’t have to provide a credit card.
However, “free to you” does not mean that it was free to create the software. At a minimum, time was invested—and time is not free for most people. In many cases, these projects are a labor of love for an individual or small team of people, who give up large amounts of personal time in order to create and maintain them. In other cases, one or more companies are sponsoring the development of the open-source software and assigning their (paid) employees to the development of the project. In both cases, there is cost for the software to be created.
Are you obligated to support open-source software development? No, but if you don’t, you might find that something you depend on is no longer available or supported because the people or organizations working on it could no longer bear the cost of the development.
We’re a Closed Source Company—What Can I Do?
As I said above, I don’t think every company needs to release all of their code as open source. It’s not practical for many companies and, realistically, it doesn’t actually help the open-source projects that you benefit from. However, you can do 3 things to help support open-source projects:
- Support them financially—Many open-source projects offer ways to donate. This is a simple but direct way to support projects. It helps offset the costs associated with running a project and shows that the work is appreciated. It also allows the project maintainers to invest that money where they feel it would add the most benefit.
- Contribute back to the project—It’s not uncommon to encounter something that you have to “work around” in an open-source project. It might have been designed for one scenario and your scenario is slightly different, or perhaps you just need an additional option for how it is configured. Rather than simply building the necessary code and moving on, consider whether it could be submitted back to the open-source project, thus improving what’s there for everyone.
- Recognize that the maintainers are often doing the work on their own time—It’s not uncommon for maintainers to receive communications such as, “[Thing X] is a bug. Please fix it.” Then, a day or two later, to receive a follow-up message: “[Thing X] is still broken! Why haven’t you fixed it yet?” Respect that the maintainers are often working on the project in their own time or in addition to their normal work. Be sure to show patience. Better yet, see #2—if the fix is that urgent, why not make the fix yourself and contribute it back to the project?
Outside of supporting the projects that you use, it is worth considering whether you can open source some parts of your code. Generally, if it’s not core to the application and it doesn’t give away a competitive advantage, this should be possible. For example, SentryOne released a .NET unit test generator extension for Visual Studio as open source. It’s a tool we created internally to make building unit tests easier, and although we find it very beneficial, it isn’t proprietary.
As I mentioned earlier, contributing to open source helps keep those projects alive so that we can all continue benefiting from them. Leveraging open source reduces support and maintenance efforts in our own development.
Additionally, it’s valuable for developers to contribute to open source. Doing so gives them exposure to coding practices and problem domains outside the scope of their normal work, which makes them better developers. In addition, it helps them be more visible in the industry and encourages them to give their knowledge back, which is great career development.
Overall, the benefits of supporting open source outweigh the investment, particularly if you actively focus on leveraging existing or upcoming work to help drive contributions. In many cases, the actual investment is to build or extend the open-source code like you would anyway, but share the outcome back to the open-source project. Financial contributions are great for when you don’t have the need to modify the project, but are using it heavily.
By contributing back, you ensure that the open-source projects that you depend on continue to grow and flourish.