People often wonder about what kind of software projects a company could or should open source. This is often considered a dangerous decision for a company, due to the risk of revealing inventions and losing strategic position against competitors.
The codebases of the most companies are made of business logic dominated repositories and tools/utilities built around them. Assuming that your company has a valuable business logic inventory, you should probably keep that code to yourself. On the other hand, side tools and libraries you have written are engineered with valuable man-hours. Since these are not the most critical parts and don’t have serious deadlines, your hackers were able to illustrate engineering beyond their comfort zone and were able to use their full imagination and came up with creative stuff –which you can open source.
Most of the time, with the tools and utilities you created, chances are high that you will need them again; maybe at another team, maybe at your next company or next job. At this point you should find ways to open source these tools and libraries developed in your company.
You will see that other people in tech companies (mostly not your competitors) will be delighted with your efforts in open source and will contribute back. They will find bugs for you, make it better and faster and even better and they will become good candidates if you are looking for hackers to hire.
By open sourcing your software, you will be coding at a much better level and quality to avoid the public eye’s bad criticism and this will make you a better engineer who creates maintainable and usable software. You will build your code on good abstractions, honor best practices, write better documentation (which is a good habit that every corporate developer should gain), and better tests.
Some examples of open sourced software from a variety of companies to convince you:
- Linguist by GitHub: a library to detect language of source files and binaries
- Guava by Google: extended utilities and functionalities library for Java
- MoSQL by Stripe: MongoDB to PostgreSQL streaming replication library
- PonyDebugger by Square: Native iOS debugging bridge on Chrome Developer Tools
- Rogue by Foursquare: Type-safe Scala DSL for MongoDB in Lift framework
- Brackets by Adobe: Web-based code editor for web
- Awesome projects by Twitter: Finagle, Bower, Zipkin etc.
One thing you should remember is that for most of the time, it is not the companies who are giving away source code, but it is the individual efforts that make it happen. They come up with these ideas and bravely debate against their managers and internal pressure to make a contribution to the public domain.
In the worst case, nobody will use your open source project, but GitHub presence of company will still look cool and you will be able to reuse code from your old company if you leave someday.
You should go now, find the reusable parts of your software, open source it (at least internally in your company), write tests, prepare human-friendly documentation, convince your managers and publish it.
Thanks to Burcu Dogan and Can Duruk for reviewing and editing this article.
Leave your thoughts