We needed a way to reduce the overheads associated with onboarding new starters, so instead of a document giving a list of software that needed to be downloaded, e.g. Chef Development Kit, Terraform, Docker etc. etc. they could just download a single thing which gave them a ready made development environment whether they used Mac or Linux PCs.
Initially we used Vagrant for this, but that ended up not being the best tool for the job.
Then along came Docker for Mac, and we quickly realised that, by manipulating the GoLang Docker SDK, we could just run everything in containers.
Because we wrote this in Go, we could also interact with other Go SDKs for products and services we look after, like AWS and Hashicorp Vault, to prepare an environment for these containers.
This worked really well! Too well, in fact, as people from across the company started asking us "can you add XYZ to this tool?".
We didn't want our tool to become bloated, so we open-sourced the guts of our tool for other teams to create their own versions, with the tools they needed.