In a recent meeting of Zalando Tech’s Open Source Guild — our informal, bimonthly gathering of FOSS advocates and evangelists — we discussed our now-published open source principles and the importance of Principle #1: “Do ‘Open Source First.’” In other words, if your Zalando project can also be useful to the tech world at-large, “release it as open source from the start.”
In creating chimp, a new deploy tool for my team, I didn’t take an Open Source First approach. In retrospect, this was a big mistake. While developing the project, I repeatedly told myself that I would “do it soon,” but never got around to doing it at all. The reasons: It was my first Golang project, and I didn’t even know how to write a for loop over a map or do other pretty basic things. I was uncomfortable about showing my Golang coding skills to the world, and consequently was uncomfortable about showing the project. Moreover, chimp started as a hack (wait — what project doesn’t start as a hack?) and at first I wrote a lot of bad, useless code.
In hindsight, developing chimp with an Open Source First mindset would have made my concerns moot. One reason is that developing for “the world” can be a great incentive for getting things right the first time. When you tell yourself, “I’ll make this better for open-sourcing later on,” you postpone taking steps and making improvements to ensure high quality.
Furthermore, you lose out on a lot of positive feedback. At Zalando, our engineering teams are small and busy, and relying on colleagues for everything testing- and review-related isn’t always practical. There’s a lot of knowledge on the Web we can take advantage of by making our work open. At minimum, people will comment on projects they find interesting and will suggest improvements.
Finally, open-sourcing projects from the beginning is good for increasing security. Thinking from the outset about protecting the secrets and sensitive data touched by your project reduces the chances of making public something you don’t want to share.
Image via Jessica Duensing/Open Source Way.