Creating a new Binder-at-home tool

idea

#1

For a while I’ve been thinking about how to “take your binder home”. A site like mybinder.org lets you run stuff but you are limited in terms of CPU/RAM and can’t make your changes persistent.

What about a new tool that you run on your laptop that just uses docker and python (no kubernetes) so that you could take a binder link like https://mybinder.org/v2/gh/binder-examples/r and convert it to http://localhost/v2/gh/binder-examples/r and have it start locally?

We could add an option to the UI to add some persistent storage to your docker container so that you can save your changes.

This is a bit related to BinderHub for HPC


Thinking about reapplying to Outreachy in May 2019
#2

From a technical point of view I’d start with writing a small web server that can respond at that URL. It would use repo2docker to build and launch the container for you, then redirect you there.

You could also run this on a remote machine (though I’d say multi user and auth are out of scope for v1) like a powerful machine in a corner of your office or even a AWS/GCE VM that was spun up “just now” and that is billed to your credit card.


#3

If the initial use is for running locally v0 could be even simpler: command-line python script that takes the binder URL, builds and starts the server, opens the browser.

This also opens up options for things like putting a custom tag on the Docker image for full reproducibility. And would be really useful for figuring out why a new repo fails during startup on mybinder.


#4

That is what you get with repo2docker already, except for the browser opening part. I think we should add that.


#5

That’s what I thought, but I’ve never managed to successfully run repo2docker so I assumed there must be some other configuration required which could go into the wrapper script.


#6

If you have a working dockerd (running docker images or docker info in a terminal prints something that isn’t an error) you should be able to run repo2docker https://github.com/binder-examples/requirements to get started.

Going via a web server would give us a chance to add some additional UI (beyond just a CLI).


#7

In terms of strapline, this reminded me of O’Reilly LaunchBot (now deprecated?): https://blog.ouseful.info/2017/08/30/oreilly-launchbot-like-a-personal-binder-app-for-running-jupyter-notebooks-and-other-containerised-browser-apps/