Contribute to the Toolkit

The Einstein Toolkit consists of diverse software components contributed by many different people and used by many more. The consortium welcomes all contributions to the toolkit including bug reports, feature requests, patches, to documentation and software. This page also describes our general philosophy for software contributions and the mechanism for providing software.


The development of production level scientific software, such as the components of the Einstein Toolkit, represents the academic output of researchers. These scientific contributions should be acknowledged and respected on par with those solely based in theory or experiment.
Citation Guidelines


Please email any questions to the users mail list: This is the primary place where community discussions take place, besides the weekly online meetings, and this is also the place to find minutes of the latter meetings.


Issues (bugs, wish-list items, tasks) are recorded in a database. There they can be discussed, flagged, and assigned to developers. Don't hesitate to report problem you might have found: reporting problems is the first step in helping to solve them.


Parts of the documentation about the Einstein Toolkit is hosted on a Wiki, as well as pages about sub-projects within the toolkit. Every user is welcome to improve and extend it.

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 thansimply 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, or can be hosted elsewhere. If hosted at 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 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:

  1. Author(s) contacts the Einstein Toolkit consortium (e.g. through the users or maintainers mail lists) about software that they intend to contribute
  2. Discussions take place between the maintainers and author(s) to discuss issues above.
  3. If software will be hosted by the Einstein Toolkit it is put into an "incoming" repository.
  4. 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.
  5. 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.