Releases and compatibility policy
Development occur in the tip of the master branch while we aim for this branch to be stable, tested and correct, this is not guaranteed. Premade packages are available for the latest tag generated automatically and can be readily installed. See the compatibility policy below. The main results, such as NNPDF 4.0 [B+22b] will be produced with a frozen tag, a conda environment and a docker image so that they can be reproduced entirely.
Compatibility Policy
Fit runcards, and Physics results
We attempt to maintain strict compatibility for all published results for at least one major PDF release cycle, in order to be able to reproduce the current published release (while the new one is under development) and compare new and old results. For example the code that produces NNPDF 4.0 should be able to reproduce the results for 3.1 as well. Once NNPDF 4.0 is released, new developments in the code are allowed to break compatibility with 3.1, but should maintain it with 4.0 (until the 4.1 cycle and so on).
The baseline expectation for fits is that a given runcard for a published PDF set is able to produce an equivalent PDF when using the same tag of the code. Due to storage limitations, the theory object (FastKernel tables and EKOs) are not versioned, therefore if bugs are discovered in theory predictions new fixed theories will be made available which might change some of these results.
Analysis runcards used for published results are expected to be able to produce the same physics, while bugfixes (that don’t affect fits) or changes in presentation can happen in between. Similarly, important enough bugfixes will be marked by a tag.
Internal interfaces
We follow a “Linux Kernel” approach to internal interfaces, which do not affect the content of runcards. This means that there is no expectation of stability at all and these interfaces can change arbitrarily at every commit without any particular notice. If you wish that code such as extra modules is maintained and kept in working order with newer updates, it is highly suggested to contribute it to the main repository, along with appropriate tests and documentation.: