nbrunner - running notebooks in the cloud


nbrunner uses the interactive ipython notebook to give you an environment in which you can easily share and run other people's code in the cloud.

Have you suffered from instructions, tutorials or examples that don't work? Are you interested in reproducible/reusable data analyses? Want to steal parts of someone else's code? A notebook by itself is great for sharing a small bit of code, but for a whole analysis or project you need more than just one notebook. 

nbrunner uses docker, jupyter and github. The idea is to go to a website, and type in the URL of a github repo. The server then starts a docker container, clones the repository there and connects you to a ipython notebook server running inside the docker container. The repository can contain any kind of code you like. The only promise you have to make is that there is a notebook which describes each step. In the notebook you can "knit" text describing each step with the code (in bash, R, python, cling/CINT, Haskell, ...) to run it.

The project combines http://nbviewer.ipython.org and http://tmpnb.org to make it very easy to quickly look at and run someone else's notebook. This means you can quickly see what effect your changes would have.

Goals of the project

There is a super-super prototype version here: https://github.com/betatim/tmpnb. At the hackathon we will build a version that can be used by normal people. Clear UI, working backend, no random error messages, setup a CERN openstack machine as demo, etc

A list of more ideas to work on:

* a good landing page that explains to people what this is, how to use it

* web itnerface that allows normal people to use it

* make an example repository that contains some interesting code for people to clone.

* a useful docker image with analysis software already installed (based on REP image?)

* spin up docker containers on other cloud services (CERN openstack, EC2, azure) via docker machine

* ability to clone svn repositories

* allow creation of arbitrary docker containers via Dockerfile in the repository

* implement CERN SSO or github OAuth

Skills being sought

Python (jupyter, tornado webapps), docker, HTML5 and CSS, git, github, JS.

References and background material


You should be familiar with python and git. Jupyter uses tornado (http://www.tornadoweb.org/en/stable/) so take a look at the docs/examples of it beforehand. Everything else is optional.

Tim Head: https://betatim.github.io - @betatim - <thead@cern.ch>