Getting Started

Popper is a convention for organizing an academic article’s artifacts following a DevOps approach, with the goal of making it easy for others (and yourself!) to repeat an experiment or analysis pipeline.

We first need to install the CLI tool by following these instructions. Show the available commands:

popper help

Show which version you installed:

popper version
NOTE: this exercise was written using 0.5

Create a project repository (if you are not familiar with git, look here):

mkdir mypaper
cd mypaper
git init
echo '# mypaper' >
git add .
git commit -m 'first commit'

Initialize the popper repository and add the .popper.yml file to git:

popper init
git add .
git commit -m 'adds .popper.yml file'

New pipeline

Initialize pipeline using init (scaffolding):

popper init myexp

Show what this did:

ls -l pipelines/myexp

Commit the “empty” pipeline:

git add pipelines/myexp
git commit -m 'adding myexp scaffold'

Popper Run

Run popper run:

popper run

To run a pipeline named myexp:

popper run myexp
NOTE: By default, popper run runs all commands directly on the host. We recommend running an isolated environment. In order to do this, one can create a pipeline using the --env flag of the popper init command. For example, popper init <pipeline> --env=alpine-3.4 runs a command inside an alpine-3.4 container.

Once a pipeline is executed, one can show the logs:

ls -l pipelines/myexp/popper_logs

Adding Project to GitHub

Create a repository on github and upload our commits.

Adding Project to Travis

For this, we need an account at Travis CI. Once we have one, we activate the project so it is continuously validated.

Generate .travis.yml file:

popper ci travis

And commit the file:

git add .travis.yml
git commit -m 'Adds TravisCI config file'

Trigger an execution by pushing to github:

git push

Go to TravisCI website to see your experiments being executed.

Integrating with GitHub

Some of the popper sub-commands (e.g. :- popper search) make use of the GitHub API. Since GitHub only allows up to 60 unauthenticated requests per hour on its API, some of these sub-commands will fail to give appropriate results on heavy usage.

To resolve this, we need to :

  • Create a GitHub personal access token, as shown here.
  • Copy the token and set it as an environment variable with the name POPPER_GITHUB_API_TOKEN in our computer.

This will allow the popper command to use our access token to make authenticated requests.

Learn More

A more detailed description of Popper is explained in the next section.

A step-by-step guide describes how to “Popperize” a repository. Additionally, the following is a list of examples on how to bootstrap a Popper project (repository) in specific domains:

A list of articles describing the Popper protocol, as well as other Popperized papers that have been submitted for publication can be found here.