Contribute to the Toolkit
The Einstein Toolkit consists of diverse software components contributed by many different people. The consortium welcomes all contributions to the toolkit including bug reports, feature requests, patches, to documentation and software. This page describes our general philosophy for software contributions and the mechanism for providing software. Please use the bug tracking system for bugs, issues or wish list items, and email any questions to the users mail list.
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.

