Recently I’m really frustrated by some internal tools in the company. Lots of people think the internal tools in big company should be much better than open source ones. Maybe that’s true in the past or in some other companies. But that’s not true in my experience. While we are seeing more and more companies adopting open source, I think it would be helpful to list some of its advantages. I know there are already lots of articles and people talking about this, but while I’m not in the position to make open source decisions for the internal tools I use, writing this article is at least what I can do.
Basically open source brings better developers and more users. All the benefits come from these. We will talk about these first and then the benefits they make.
Attract More and Better Software Engineers
An open source project is a perfect tool to show the engineers’ skills and experience. It’s human nature that wants to be acknowledged for something they’ve done. This is especially true for the ones who love and are good at programming. Open source project provides this excellent opportunity. Other than this psychic satisfaction, it also provides real world benefits: the ability to show the skills and experience enables better career opportunities. So it’s no wonder given the same circumstances, open source projects can attract better software engineers.
Even more, if an open source project is done right, it not only attracts people apply for the job to work on the project, it may also attract people or even other companies to work on this project for free.
Make Participants to be Better Software Engineers
Open source project not only attract better software engineers, it can also make the participants to be better software engineers. Since open source shows the code and commit history to everyone, code quality is associated to programmers’ reputation. The programmers have more motivations to write better code, instead of just make things work for now, which happens a lot while the project is under a tight timeline.
Attract More Users
Open source provides more features than closed source software: the user can see and modify the source if they want. Most open source licenses also allow the users to re-distribute the software with certain requirements. This is a big deal for lots of the users. Because it makes the worst case better: when the software is not maintained or going to the wrong direction, the user can continue to find some way to support it since they have the source code. It also makes the system more secure because they can better audit the source code to find security risks instead of treating it as a black box.
However, having more users can be a double edge sword sometimes. For some tools and infrastructure software, the company doesn’t get direct benefits from having more users. In contrast, the users can be competitors, and they can get benefits by not spending their own resource to write the software. But the company can actually get indirect benefits, which can overweight the short term hurts at most of the time. We will discuss this in details later.
Better Software Quality
I think this is the most important reason to adopt open source software. We always want better software if the cost is reasonable. Some people associate open source project with bad quality, but that’s obviously not true for widely adopted ones. For example, the most famous open source project Linux is the core infrastructure of modern Internet. Not to mention so many open source language compilers, interpreters and build tools. These tools needs complex skills to be developed, and most of them is well written and maintained.
The reason open source software can have better quality is because of the advantages listed above: obviously better software engineer will write better quality software. And with more users, more bugs can be found. And they may also able to provide some insightful ideas about how to improve the software from the user’s point of view. This doesn’t add a burden to the company: whether user reports the bug or not, the bug is there. If it’s important, better to fix it before it really break things. And for the feature requests, the company can decide how to implement them based on the priority. A user request doesn’t mean the company should always accept the request and spend time to implement it.
The software quality doesn’t only include the software itself, it also include the document and ecosystem. While there are more users, there will be more supports from the community and more software will be developed to work with it.
Less Time Needed for Onboarding New Hires
This is an indirect benefits from having more users. If the software is popular, lots of new hires already know how to use it before they come to the company. This can save lots of time depends on the complexity of the software. If we take account into the software quality and ecosystem improvement discussed above, the time saved can be much more.
Become the Industry Standard
This is another big benefits from having more users. Become the industry standard can combine the software with the companies’ strategy and get lots of reputation for the company. One example is Kubernetes. Google open sourced this technology to make it a final winner in the container orchestration area. Even its competitors like AWS need to support it in their product. I don’t think Google can get this kind of success without make it open source.
More Cost Efficient
As I said above, if an open source project is done right, it can attract lots of software engineers even other companies to contribute. This is basically free resource.
Feedback to the Community
While I listed all the real benefits above, sometimes we may need to think in a more idealism way. Open source started with the idea of openness, to make the code and technology available to everyone. While companies’ main focus is making money, why not have some effort to really make the world a better place on the way?