Everware: Reproducible and Reusable Science | #mozsprint 2016

Tim Head and Igor Babuschkin are two particle physicists who want research to be more reproducible and reusable. I met Igor in after his team won the 2014 CERN Webfest. The following year, Tim pitched Everware, letting you easily run other people’s code, and together with the team who joined won ‘Best Technology’ at the 2015 CERN Webfest.

Since then, the two have been part of the team working on Everware which lets your run jupyter notebooks directly from a GitHub repository. I interviewed Tim, Igor and the rest of the team to learn more about Everware and how you can help during our Global Sprint, June 2-3.

mozsprint_interview

Why did you start Everware?

We were frustrated by how hard it is to try out other people’s research code. People expect to spend a day or two (or even longer!) trying to get code that has been shared with them working. There had to be a better way. The idea to build a web platform to easily launch jupyter notebooks was born.

Several of us are based at CERN. Every summer there is a hackathon: the CERN webfest. In the summer of 2015 Tim decided that instead of just talking, the webfest was the perfect occasion to start prototyping. He got together with @anaderiRU to construct a pitch. We persuaded several more people to join us: @OmeGak, @ibab, @ndawe, @uzzielperez, and @AxelVoitier.

After the weekend we had a little demo and collected the prize for best technology.

Can we make it easier to create reusable science?

Sometimes yes, sometimes no. Some parts of science are really, really hard to make reusable. We are targeting data analysis and other science done using computers. A large fraction of this research could be much easier to share.

Right now it is still pretty hard to make the code for your research easy to reproduce and reuse. You have to be an expert on a lot of technical stuff. This is where we come in. We are building figuring out for you which tools to use and how to combine them. The goal is to come up with a winning recipe that is useful to researchers while they are doing their research project. As a side effect they are making their code easier to reuse by others.

Our approach is centered around git repositories. All your code goes into it, together with a text file (Dockerfile) that describes how to create the environment in which your code runs. This means a computer can now recreate exactly the environment you used. Your code is guaranteed to work, and behave like it did when you last used it.

For example, my research code from CERN uses several big software libraries that are foreign to most non-CERNiacs. As a result getting others up to speed takes a long time. However if I bundle my code in an everware-compatible way I can send a GitHub link to my new collaborator and they can get going understanding the science instead of battling with libraries and compilers.

How is this different from Binder?

Everware and Binder both allow you to take a GitHub repository and run it “in the cloud”. From the user’s perspective, they are very similar. The differences appear when you try and setup your own instance of Everware, for example for your university group or team at work. Everware is an extension of JupyterHub which means it only has very few dependencies. So it is very easy to set up and get running.

We are also working on building tools so you can run code locally on your computer using all the goodness of Everware without being tied to using a particular server.

Can I try Everware now?

Yes! Visit https://everware.rep.school.yandex.net and sign up for our beta. As we are letting you run arbitrary code on our computing resources we need your email address and name, because: security. You can also visit our GitHub repository https://github.com/everware/everware to learn how to setup an instance for you and your friends.

What do I need to make my GitHub repository Everware compatible?

The magic sauce used by Everware is docker containers. These are like super lightweight virtual machines. To make your repository work with Everware you need to create a Dockerfile in it that describes how to set up all the libraries and tools needed to run your code. Check out our Getting Started guide for some instructions.

What kind of skills do I need to help you build Everware?

If you are a graphic designer or UI person, we would love to hear from you. We realise that we are better at crafting pretty code than good looking UIs ;) Obviously programmers and techies are also welcome. Some of the tech we use: python, jupyter, docker, git, HTML, CSS and JS.

We would love for lots of normal people to try and use Everware. That way we learn what works and what doesn’t work, needs improving, and what new features people want.

What are you hoping to do at the Mozilla Science Global Sprint, June 2-3? Can others help you here?

At the Global Sprint we would like to help as many people as possible to “everware-ise” their research code and help them setup their own Everware instances.

We will also work on the tools for running Everware compatible repositories on your local machine. We have only just started thinking about what they should be able to do, so there is a lot to do.

As usual, while working on the project we will discover lots of things that don’t work or need improving. So we will sprint on those issues as they come up.

Bonus question: Where is your Research Fox sticker?

Tim’s is sitting on the dinner table waiting for Tim to buy a new laptop.

Igor’s sticker is on his laptop, where it has received countless compliments and where-can-I-get-thats.

IMG_20160412_132035

Come join us wherever you are June 2-3 at the Mozilla Science Global Sprint to work on Everware and pick up your own Research Fox! Have your own project or want to host a site? Submissions are open for projects and site hosts.