I think this is the right place for this discussion.
Which particular technologies, if any, did you have in mind? Which parts of āBinderā do you feel like would benefit from working with those technologies as well as those they use right now? In what kind of situations do you end up wanting for āBinderā but canāt use it because of the technology it uses/depends on?
I think we need to disentangle some of the tech. There are (at least) two things:
- repo2docker which create container images from repositories
- BinderHub which builds, starts, stops, controls containers
Despite the name repo2docker we have been trying very hard to make the ādockerā part of the name a implementation detail. For example we say that the intermediate Dockerfile
which repo2docker generates (and sometimes prints) is an implementation detail that could go away at any moment. This is meant to keep the door open for us to one day switch from docker to some other container image format/run time. Or maybe add an additional one (there is a PR aiming add adding podman as an example of this. PRs #848, #806). So with 20/20 hindsight a better name would have been repo2container
or some such.
BinderHub is ānothing butā a small web interface that launches repo2docker and then talks to some infrastructure to get the image scheduled, enforce network policies, resource constraints, etc. Most of the heavy work is done by repo2docker (building the container image) and by the infrastructure used to schedule the containers.
I donāt know if it makes sense to implement an alternative ābackendā in BinderHub or start a new project āBinderHub-on-some-other-container-schedulerā. The answer depends a bit on what this other-container-scheduler would be I think.
I think that repo2docker will always need some form of container runtime. A simple chroot
or BSD jail are probably not enough to provide the separation we need and ability to base the āimageā on ubuntu. So if people would like to have other container runtimes/formats supported then that would be worth sending Pull Requests to explore what that would look like.
So right now Binder (as the sum of BinderHub and repo2docker) rely on docker and kubernetes. These are (seen globally, average over all users) the market leaders or at least have the largest number of users. This is why we started with those first. Growing beyond that could/should be possible but how much effort that would require depends on what those other technologies are.
One thing I donāt know of is something as powerful as Kubernetes when it comes to scheduling, separating, resource constraining, etc ācontainer like thingsā on a multi-node cluster of VMs. It would be cool to learn more about what exists, especially if it isnāt based on docker containers.
Approaching the problem from a slightly different angle: there are plugins to the littlest JupyterHub (for example https://github.com/plasmabio/tljh-repo2docker) which allow you to build and launch things based on repo2docker without needing kubernetes. It is aimed at smaller scale (in terms of number of users and images) than a full scale BinderHub. As a result it is more friendly to other use cases like teaching.