A driving principle of the Einstein Toolkit is that it should be directly and reliably useful for research and
education. This requirement involves much more than simply making software available for download, and we have the following requirements for software:
- Components should be of sufficient quality to be used for peer-reviewed and published science. This includes a basic standard of software engineering, documentation of
the software including algorithms and methods, tutorials and examples, and self-tests to demonstrate that the software works correctly.
- To focus development and support, optimize resources, and provide best practises, the Einstein Toolkit components should be of current interest to the community.
- All components must be distributed under an open source licence so that others can use these components without restrictions (except
as mandated by scientific integrity), can modify and improve them as necessary, and can pass on these modifications to their collaborators as they see fit.
Note that the Einstein Toolkit is not aiming to provide a single implementation. The inclusion of alternative components providing the same or similar functionality is
welcomed. Further, software does not have to use or be associated with either Cactus or 3D time evolutions. On the contrary, we would love to have tools for pre- and
post-processing simulation data, 1D or 2D simulation codes, or visualisation helpers.
How to Contribute New Software Components
New software components need to satisfy the general requirements listed above. In addition, a few measures are necessary to allow for effective integration, use, and
support:
- Components can be hosted in repositories at einsteintoolkit.org, or can be hosted elsewhere. If hosted at einsteintoolkit.org the authors specify who will have write
permissions to the repository. If hosted elsewhere, components must be reliably and conveniently publicly accessible. If a server becomes permanently unavailable, they must
be moved (e.g. to einsteintoolkit.org) to remain accessible.
- Several times a year, a new version of the Einstein Toolkit will be released. These releases consist of snapshots of all components and releases need to be coordinated
for example to ensure that examples and test cases are up to date, to create tags or branches, and to avoid disruptive changes during the release process.
- Einstein Toolkit components are developed in an open manner. This means that changes to a component should not surprise the community, and that patches or corrections
requested by the Einstein Toolkit maintainers should be considered in a timely manner.
The current working procedure for contributions is:
- Author(s) contacts the Einstein Toolkit consortium (e.g. through the users or maintainers mail lists) about software that they intend to contribute
- Discussions take place between the maintainers and author(s) to discuss issues above.
- If software will be hosted by the Einstein Toolkit it is put into an "incoming" repository.
- The maintainers review the software, and present their recommendation to the whole Consortium to decide if the software becomes a component of the development version of
the toolkit.
- At the next release, the component is released as part of the toolkit. Credits for the Einstein Toolkit are updated to reflect any additional contributors.