|
| 1 | +.. _specification: |
| 2 | + |
| 3 | +==================================================== |
| 4 | +The Reproducible Execution Environment Specification |
| 5 | +==================================================== |
| 6 | + |
| 7 | +repo2docker scans a repository for particular :ref:`config-files`, such |
| 8 | +as ``requirements.txt`` or ``REQUIRE``. The collection of files, their contents, |
| 9 | +and the resulting actions that repo2docker takes is known |
| 10 | +as the **Reproducible Execution Environment Specification** (or REES). |
| 11 | + |
| 12 | +The goal of the REES is to automate and encourage existing community best practices |
| 13 | +for reproducible computational environments. This includes installing pacakges using |
| 14 | +community-standard specification files and their corresponding tools, |
| 15 | +such as ``requirements.txt`` (with ``pip``), ``REQUIRE`` (with Julia), or |
| 16 | +``apt.txt`` (with ``apt``). While repo2docker automates the |
| 17 | +creation of the environment, a human should be able to look at a REES-compliant |
| 18 | +repository and reproduce the environment using common, clear steps without |
| 19 | +repo2docker software. |
| 20 | + |
| 21 | +Currently, the definition of the REE Specification is the following: |
| 22 | + |
| 23 | + Any directory containing zero or more files from the :ref:`config-files` list is a |
| 24 | + valid reproducible execution environment as defined by the REES. The |
| 25 | + configuration files have to all be placed either in the root of the |
| 26 | + directory, in a ``binder/`` sub-directory or a ``.binder/`` sub-directory. |
| 27 | + |
| 28 | +For example, the REES recognises ``requirements.txt`` as a valid config file. |
| 29 | +The file format is as defined by the ``requirements.txt`` standard of the Python |
| 30 | +community. A REES-compliant tool will install a Python interpreter (of unspecified version) |
| 31 | +and perform the equivalent action of ``pip install -r requirements.txt`` so that the |
| 32 | +user can afterwards run python and use the packages installed. |
0 commit comments