How to embed everware into research use cases

Andrey Ustyuzhanin edited this page Jun 13, 2016 · 1 revision

Everware as a research facilitator, use-cases

in this document we assume that user conducts the research using jupyter notebooks. You can find description of generic uses cases below.

Basic science use-case (one-user) creating research from scratch

  1. User creates a git repository for his project
  2. User creates some code, notebooks, figures out what libraries he needs
  3. User creates Dockerfile where he writes all the dependencies for his code
  4. User creates Makefile that simplifies start
    • one of the targets in Makefile passes through all the essential steps of analysis
  5. (optional) User tests that his analysis is runnable by one of the CI systems (e.g. on travis, adding, .travis.yml)
  6. User tests that analysis is also runnable by everware
  7. User completes his research and checks that he/she can reproduce all the figures/tables supporting his hypothesis by running corresponding notebooks (or automates cascade of notebooks execution by single Makefile target)
  8. User publishes paper, filling-in special form link to his git repository and to everware that any member of the researcher community can pick-up from to improve his research

Basic use-case (one-user) starting research from an existing repository

  1. User reads published paper that attracts his/her attention
  2. User follows the link to the git repository, forks this repository
  3. User checks that results are reproducible on his laptop/server locally. If not he can always fire an issue to the original repository
  4. User works with this repository following general rules locally. If he/she needs to modify environment specification, he/she updates Dockerfile and tests if the new results are generated by Makefile and reproducible on everware
  5. User publishes his paper, giving link to his git repository and link to run this research on everware

Multi-user (collaborative) research scenario

In case serveral users are working on certain research topics, they have to follow basically same guidelines as they work using versioning system (git), just they have take very seriously integration with CI (new tests should be added with each new research step and commits are not accepted/merged unless all test pass) and Dockerfile validity. The preferable test scenario would be testing of the research outcomes within docker container created by steps specified in repository Dockerfile.