REES stands for Reproducible Execution Environment Specification. It was conceived by the developers of Binder but its utility extends beyond Binder specifically.
This project is still in the design stage. It grew out of discussions at the Jupyter Community Workshop for Scientific User Facilities and High-Performance Computing.
A JupyterLab extension that lets you select a folder and choose, via command
or a context menu, "Make this into a repo2docker image."` (For simple
specifications, ones without apt.txt
or Dockerfile
, it might also be
useful to support "repo2conda" for an option that does not involve
containers.)
A JupyterHub Service that processes requests from (1). This service has permission to run docker and has access to storage where it can cache images.
A UI for building a REES It would have a section for "Add Python requirements," and a section for "Add system requirements," etc. This UI would be stand-alone---not a JupyterLab/notebook extension---and could be deployed in the same web app as (2). It might be written using Bootstrap, as JupyterHub itself is. (Since it is outside the notebook server, it would work for JupyterLab and classic notebook; it would not be a lab/notebook extension.)
A gallery of built REES-compliant images, with the ability to browse static renderings of the notebooks within them and then to launch them as named servers on the Hub, with the option to mount local storage for persistence.
Components 2--4 seem like they could be one web app, deployed as a Hub Service the same way nbviewer can be. Component 1 would be a very small labextension that knows where to find the service.