If you work for a company that does development, you should really look at open sourcing some of the internal tools that people inside your company have written. I’m talking about the ones that all your other developers use and are pretty cool. You know the ones I mean. I’ve been thinking about it a lot recently and I think that it’s a big win-win .
You might think that your are giving away your really valuable intellectual property, the thing that gives you an edge over your competition, I’m here to convince you that you are not.
Don’t open source the core of your company if you don’t want to (I wouldn’t). What makes your company tick, the heart, you shouldn’t open source that (unless you really want to, I’m not judging). Google has huge IP in search engines and artificial intelligence that they don’t open source, however:
Your company might not be a google, you might only have one or two tools with only hundreds of lines of code that you feel comfortable to open source. You should do it. I will go into the reasons why later in the post.
Your people are what give you an edge over your competition not the tools they use.
The number one reason for your success or failure is your ability to attract and retain highly talented people. Your idea might be the ‘next big thing’ however without the right people around to execute it, it’s worthless. Pick any hugely successful company and you will find a collection of highly motivated and highly talented people working for that company. Your code is valuable, but the people who wrote the code and maintain it, that’s where the true value in your company is.
Once again I would like to emphasise, I’m not talking about open sourcing your core business. You could, but I probably wouldn’t. I’m talking about the tools that your developers have written that other developers or people inside your company use and say are cool.
So WHY should you do it?
0. The video that started the thought process for me: Watch this video, especially the beginning 10 minutes or so.
1. The company will get better: Releasing those tools to the public will force you to look at the tools and improve them, polish up those APIs, refactor that monster class etc. This is about your reputation and you and your developers don’t want to release sub standard code. Your developers will look long and hard at the tools and make them better, it will improve your developers skills and the tools.
2. Help attract talented developers: Having tools out in the developer community will help you attract new talent. It helps you create a reputation for your company as a cool place to work. Most developers have a few open source tools right now that they love and look up to the company. Google is often seen as a great place to work at. A big reason for this is because they have so many open source tools, that most developers have used something created by Google. Your open source tools could help you develop a reputation. If your tools become popular other developers will contribute code, you can then look at these contributions and find talented developers there.
3. Give back to open source community: Your products currently have been developed on, or are running on, or have been tested on some really cool open source products. See this as an opportunity to give a little back to the open source community.
Side Note: If you are using some open source tools at the core of your business you might think about getting some developers to contribute to those tools. Or maybe provide some financial backing to some of the open source projects you use. It’s a cool thing to do and will help your reputation.
4. People will make your tools better: If your tool provides a lot of value to other developers or people and it’s open source people will be able to give you feedback and even help out by sending some code your way. It’s a cycle of help and growth.
It will require a bit of effort, these tools will need to be maintained, pull requests will need to be handled (I’m assuming you will be using GitHub).
I think it’s important in this day and age for companies that hire developers to have an open source strategy, a foot print in the community. Also when I was looking for new work the first thing I did when my recruiter sent me information about a company was check for their GitHub account. And if I do it, other developers are doing it too.
Until next time, may you learn and grow from others and help others learn and grow.
P.S. Here are some GitHub accounts of some big companies and their open source tools: