everware

LHCb computing workshop

Annotate me

Questions, comments, graffiti? You can annotate this webpage. Think of it as scribbling on the poster to make it better.

Welcome

Everware is a project that allows you to edit and run someone else's code with one click, even if that code has complicated setup instructions. The main aim of the project is to encourage reuse of software between researchers by making it easy and risk free to try out someone else's code.

Reusable data analysis

Everware focuses on the data analysis part of scientific computing. Reusing and reproducing that should be as easy as pasting the URL of a code repository into a webpage.

Everware provides the infrastructure to make this a reality. Once you paste the URL of a git repository everware will then launch a custom docker container in which the code runs and connects you to it in your browser. This makes it super easy for you to try out someone else's code, modify it and take the parts that interest you and reuse them. It also means that reproducing and preserving an analysis comes for free.

Portable data analysis

Everware uses docker containers. Containers are lightweight virtual machines. They bring all the benefits of portability, isolation and control of a virtual machine without the resource hungriness and sluggishness.

Containers have little overhead, start in a fraction of a second and run on Linux, Mac and Windows. You can seemlessly transfer your analysis from your laptop, to your institute's cluster, to the cloud, or someone else's cluster.

Isolated data analysis

By running your data analysis in a isolated container you have full control over the installed software. This means you can pick exactly the versions you need for this project. You will not be surprised after a holiday that nothing works anymore, because someone somewhere changed something.

Requirements

What is needed for this magic to work? The only requirement is that the repository you want to try out contains a Dockerfile describing how to setup the environment for the analysis. Preferably it should also contain an executable README (for example a jupyter notebook) describing how to run each step of the analysis.

The simplest Dockerfile would contain just one line: FROM lhcb/analysis:versionX. This covers the large fraction of cases where the default set of LHCb analysis libraries is all you need. If you need a few extra libraries or tools you can add them on top of the basic image. Power users can roll their own Dockerfile from scratch.

User stories

We are building everware because it fixes several painful things we encounter most days as experimental physicists. Here is a list of some of them.

The convenience

You can use the environment provided by your Dockerfile while developing your analysis in the first place. The container will run locally, you can use your favourite editor, mount your large input files directly into the container, etc. You can use what ever libraries and versions of them that you like, not your local admin. When you are done with your analysis you get reproducibility for free.

The holiday

Sometimes libraries and software get updated while you are on holiday. Nothing spoils your holiday faster than returning to "nothing works anymore ... ahhrgg ... why!!! It was working before I left!!"

The new guy

How many hours have you spent trying to figure out why that new student or postdoc can not run your code? In the end it is always some weird environment variable or something hidden at the bottom of your .bashrc (or worse, theirs).

The coding ninja student

If you get others to use everware it has the side effect that you make it much easier for yourself to take the code from that coding-ninja-student who made that amazing Figure 3 in your paper and use it yourself. You even have a chance to understand what you need to install in order run it in your own analysis (Dockerfile syntax is like a shared language, unlike the l33t speak of the coding-ninja-student).

The helper

Often when people need help they will send you some weird script, that depends on libraries X, Y and Z. In some weird combination of versions. You look at it and think 'yeah right ... this is gonna take a while.', getting things setup to help you will take some time. Therefore you will ask for a lot of your favourite dirnks in exchange for helping them with your problem. However, if you could run it in your browser at a click of a button ... one coffee will suffice (and you will look at it now, not maybe later).

Technology and code

The code for everware lives on github. Try it out on your laptop or setup your a public everware instance.

Everware is written in python. We use jupyter and docker.

Try it out

There is a public everware instance which is currently in beta, if you are interested in trying it out: sign up here.