This page distills the requirements that have been suggested as part of PROTON-194 and the related Proton mailing list discussion.

Requirements

The following requirements are listed in no particular order.

Unless otherwise specified, "proton-c" currently means the the C implementation itself, plus all the language bindings. "proton" includes proton-c, proton-j, and the system tests.

Requirement

Stakeholder

When a user has downloaded the tarball source release of proton, they can build it and run all the system tests without requiring non-standard tools*.

QA tester or End User

A checkout of proton can be built without requiring non-standard tools*.

Developer

A checkout of proton can be tested without requiring non-standard tools*

Developer

The build system will be capable of running in "offline" mode, i.e. without Internet access. For example, it will not have to fetch dependencies from a remote Maven repository, although this may be enabled as a convenience.

Developer, Release Manager, End User

As with all build systems, the other requirements should be met whilst maximising simplicity and minimising duplication. For example, it would be good if the aforementioned proton tarball release could be produced by performing a simple "svn export" of a proton checkout.

Developer, Release Manager

Non-standard tools

*non-standard tools means libraries and build tools that are not easily available on a supported platform.

For example, Maven is considered non-standard because the package managers of RHEL and Fedora do not offer a sufficiently recent version. In contrast, make and cmake are standard tools on our supported platforms.

Note that it is acceptable to require a given non-standard tool to perform an operation that is intrinsically related to it. For example, it is acceptable for the build system to require Maven to be installed in order to publish the artefacts to a Maven repository. It is also acceptable for the build system to allow the use of Maven as an optional convenience to the developer.