My Great OSS Sin

At my previous job, I was part of the original team that tried several of the existing tools to setup a vanilla Kubernetes cluster on AWS. We tried kube-aws, kops and looked at others and decided that none of them was perfect for us.

Many had shortcomings, mostly because of some limitations or bugs which were perfectly natural given the state of the Kubernetes project itself. We decided then to start from kube-aws, customized the configuration and never really looked back from there. We released our configuration as open source (and we even got some GitHub stars, yay!) but the configuration itself was never a project designed to be usable right out of the box for anyone else, for a lot of reasons including that it had a bunch of optimizations that were designed to work with our tool to update the clusters. The aforementioned tool was also not open because it relied on more assumptions and homemade tooling that wouldn’t have been valid or good for a wider audience.

I was myself opposed at releasing all of those things in the open because it provided, according to me, little to no benefit to other people outside of the organization. The real pity is that we/I never had the time to really look back and understand if we could just merge or integrate the project with other ones or just collaborate with others and I see the same happening in other opensource tools in the Kubernetes ecosystem today (again, kube-aws, kops). A colleague (hi Martin), hinted at possible collaborations and merges but I never really listened to him carefully and he eventually desisted. He was right and I had no ears to really pay attention to his reasoning. And that’s my mistake.

At my new job, I had to setup a Kubernetes cluster. The situation, from the tooling point of view, is a lot better than it was when I started looking in 2016, but still lots of tools are not complete nor perfectly fitting my wishes. And the former Kubernetes configuration which I helped develop is there, essentially unusable for me now. This is what it represents for me today: a good configuration for a best in class Kubernetes setup and at the same time my failure as a developer who firmly believes in open source and in building usable projects and communities around projects.

Looking back is always tough and I often need a special point of view to be able to fully do it. I am not sure what I would be doing differently if I could go back: probably rush the setup a little bit less and don’t aim at the moon from day one. Probably design for one cluster before designing for 30, probably deploying a full production one before deploying 30. And surely I would take less shortcuts that will get technical debt in with very little time to pay it back.