a field-theory motivated approach to computer algebra

# How to contribute

If you want to help out with Cadabra, or think you can contribute a useful add-on package or perhaps just a sample notebook or a bit of documentation, you are more than welcome! Even just dropping us a note with some details about what computations you do with Cadabra is a useful contribution, and helps to get a better idea of what people expect from the software.

Below are some tips on how to get started contributing to Cadabra. For any questions, please post in the questions&answers forum or get in touch directly via email at info@cadabra.science.

If you think you have a nice notebook which could be useful for other people to learn from, please consider sharing it. You can either email it to info@cadabra.science, or use the cadabra2-contrib repository on github.

## Get familiar with the software

The first thing to do is to get familiar with how the software works, by playing with the tutorials. Details of the software, including some of the logic that is behind its inner workings, are described in the reference guide, and documentation is available separately for all properties and algorithms. If you get stuck, do not hesitate to post a question on the questions&answers site. If you want to contribute at the level of the C++ core, or if you are simply interested in how things work behind the scenes, you will find the doxygen documentation useful.

## Identify something to work on

Most likely you will have used (or will have tried to use) Cadabra for a concrete project, and found that you see room for improvement. This can be as simple as reporting a bug, perhaps even fixing it, or adding a tutorial or other documentation, providing add-on functionality in the form of packages, or helping with the core. We are also always interested to hear about issues installing Cadabra on new systems.

Contributions in any form are welcome, but if you want to submit substantial code contributions, it is useful to get familiar with the git version control system. This is used to track software changes over time and to effectively manage contributions from different authors. We also utilise github, a web interface to git, extensively and use it for communication, issue tracking, merging patches (pull requests) and so on. Check out the source code from there and follow the instructions on how to build it.

# Source code and documentation

The source code is documented in quite some detail and the resulting Cadabra doxygen documentation is worth consulting if you want to become a developer. This is automatically generated from the latest status of the master branch on github whenever this web site is updated.

You can also generate this doxygen tree yourself in your own working copy by running make doc in the project root (not the build folder). The documentation then ends up in the doxygen/html folder.

The source code is formatted with the following astyle switches:

      --style=k/r
--indent=tab=3
--recursive
--attach-classes
--attach-namespaces
--indent-classes
--indent-namespaces
--break-closing-braces


This is followed by indenting all curly brackets by one tab. All this is automated by calling make format from the top-level directory.