After having a great experience of making a couple of open source projects at work, I want to share my feelings about it. I believe that it influences daily work in a very positive way and will try to convince you to do some open source as well.
So, how can making your daily work open source help you to work more efficiently? Easy!
When you create a new project only for your needs, most likely it will barely scale, as it will be bound with some specifics of your product and your organization. Having open source in mind from the very beginning really helps, and I have discovered it on my own experience.
My project was created for the needs of my organization and everything was built based on the organization’s environment specifics. After some iterations of development, these specifics have started to kick me in the back. It was very painful to develop something on top of that, as these specifics were mostly “magic” scripts and numbers that normally wouldn’t make any sense when you think globally. After we had decided to go open source with this project, moving it away from these scripts and numbers was a disaster. Luckily my team helped me to finish this up and built everything properly. And you know what? After making the things right, the development process has been simplified a lot and the application itself has become better (in sense of clearness and performance). Thus, the fact that you have to make your project work for multiple needs and people, helps you to develop a better product.
I don’t want to make this ugly code open source!
That was the biggest issue that slowed me down while open sourcing my first project. What I’ve realized, is that it is useless to try making the code ideal before it goes open source. It doesn’t matter in which state your code is at the moment of open sourcing. Do the first step and improve it later, or even better, maybe someone from the community would help you doing that. Really, I had the project in the “code improvement mode” for almost a year.. And I don’t know how much time it would take to bring it to the current state if I hadn’t open sourced it as it was. So, don’t try to fix everything from the very beginning. The code is never perfect, so open source it and let the world deal with it.
Any feedback is incredibly useful
People may leave their feedback in different forms. Some of them will create issues or comment on them via GitHub or social networks, others will create pull requests with their ideas. And no feedback should be considered as useless. Even when the ideas are not really something you would go for, it can give you some other ideas or even a new perspective on your own project. Also the questions, that you may find stupid, can make you think about the quality of your documentation. One of my favorite questions is regarding questioning the feature or its implementation. These questions usually trigger a conversation, from which you can gather knowledge or new ideas on how to improve your project.
Overall, open source gives you a very nice feeling of doing the right thing, as your code lives in the wild and everyone, who is interested, can learn or get some use of it. Of course most likely you will not be able to open source your production code. However, the good candidate for open source is the tooling which you use to maintain, test or release your project. By making this code open source, you will definitely improve it. Eventually, improving the project that you’re using in your daily business, will help you to do your work faster.
In our team we have already open sourced two of our internal projects:
- Crep (Crash Reporter) is a part of the tooling for creating crash reports for our apps
- Calabash Launcher is our tool to run and inspect iOS integration tests
Making this two projects open source gave us a very good feeling about our work and brought positive team dynamics. After this positive experience we are looking forward to having more and more open source projects in the future. Stay tuned.