Currently, Janitor’s biggest growth bottleneck is the shortage of available Docker container hosting:
Relying exclusively on sponsored hosting means that we can’t grow very fast (i.e. whenever we get a new sponsored server, we’re super happy and can invite more users, but pretty soon that server is full and we’re back to resource shortage / not being able to invite more users). This slows us down.
Additionally, dealing with the constant resource shortage makes us an ops/infra project, as opposed to adding value as a software tools project (because we spend most of our time cramming as many containers as we can into a limited supply of servers + having to find new tricks to make containers use less disk; RAM; or CPU). This makes us focus a lot of efforts on domains where we don’t add value.
I have a few ideas that could allow us to spend fewer efforts on container hosting, and more on solving actual software development problems (see Master Plan), while also allowing Janitor to grow much faster (i.e. not require manual invites anymore).
1. Bring Your Own Hosting?
I’d like to get rid our email invites. Instead, I’d like anyone to be able to sign in to Janitor, and then see a checklist like this:
- [ ] Set up Docker container hosting
- [ ] Review your settings and configurations
- [ ] Pick a project and start your first container
“Docker container hosting” could be a new tab in settings, and it could have an option called “Request free/sponsored hosting” (i.e. that would be our current “invite required” system, where we manually approve open source developers and let them use our sponsored servers).
But this section could also contain another option called “Use your own Docker hosting”, taking you through this flow:
1.A. Add your Docker server manually
- What is your server’s hostname or IP address?
- Please make your Docker daemon serve the Docker Remote API via TLS, like so (sample
- Please clone Janitor; configure its proxy like so (sample
janitor.jsonconfig); and then run it
1.B. Or just run our “Janitor agent”
It would be great to automate the above flow, or a similar flow, using an agent. I think we could do it like Datadog, which provides a simple Docker one-liner:
docker run -d --name dd-agent -v /var/run/docker.sock:/var/run/docker.sock:ro -v /proc/:/host/proc/:ro -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro -e DD_API_KEY=abcd1234 datadog/agent:latest
Maybe our one-liner could run a privileged container that phones home to janitor.technology, then offers to run any Janitor container for the owner on their server, and route any authenticated requests to it.
2. Connect your favorite cloud platform
We could also write integrations with OVH Cloud / DigitalOcean / Google Cloud Platform / etc, which would allow you to easily connect Janitor to your favorite container hosting platform (and let it responsibly use your free/paid resources there).
This has the benefit of completely externalizing the hosting / infastructure management (we don’t need to do it; our users don’t need to do it; it’s a service provided by the chosen cloud platform), allowing us to focus on building a great development experience; and our users to focus on using their containers to develop great software.
But it requires users to set up a separate hosting account (potentially with billing), and to give Janitor limited access to it (maybe we need to set up a maximum monthly budget or something similar).
Note that some platforms offer sandbox containers, which are good for temporary web-app-like environments (i.e. don’t compile things on them): Heroku has a free tier with free tiny containers, and OVH Cloud has super-cheap sandbox containers.
3. Or simply pay for your hosting?
We could save our developers even more time and cognitive overhead (i.e. choosing an appropriate cloud platform, and then tracking costs & resource usage) by allowing them to simply provide a credit card to pay for their hosting, letting us interface with cloud platforms and manage container hosting for them (but since they’re paying, it simplifies our job because we can just use a cloud platform instead of running everything on our own dedicated infrastructure).
For example, we could imagine having a simple 5€ / month “web app development” hosting option for small projects, or a 30€ / month “compiled app development” option for projects like Firefox and Chromium that need a lot of power, and this would be enough to cover super fast container hosting for an amazing developer experience. And any excess income could go directly toward more sponsored hosting for open source developers (e.g. we could say something like “if you like Janitor, please consider supporting it by paying for your hosting”, and the monthly bill could act like a recurring donation).
Please let me know what you think about these ideas. I’m very much looking forward to solving our hosting bottleneck, thus opening our doors to many more projects and users!