Helpful resources for users of development versions of Chaste

This page is intended to assist those external to the core Chaste team who still want to develop with the "bleeding edge" latest development code, rather than merely the last official release.

Since some parts of the Chaste code-base are not released (e.g. those relating specifically to papers in preparation), some of the developer resources, such as results from the automated tests and full documentation for the latest revision, are not made publicly available. We have now created some additional resources to improve this situation.

The most recent "good revision"

Occasionally broken code is committed to the Chaste repository, or some unexpected tests fail. This can be frustrating if users do not know if it's something they've broken, or if the fault lies with the repository code. We now offer a range of git branches to help developers choose how stable they want their code to be:

Branch What it's for
develop Bleeding-edge development code, new feature (ticket) branches should branch off here to minimise conflicts
passed_continuous latest code that passed continuous tests and isn't disastrous
passed_nightly latest code that passed above tests, plus some longer nightly ones including coverage and memory testing
passed_portability latest code that passed above tests, plus our suite of tests for different dependency versions
master Latest release-candidate quality code that has passed all tests
release The last full release of the code.

You can get these revisions by cloning the repository and then doing

git checkout <branch>

e.g.

git checkout master

Contributing Code Back to Chaste

Before you start

If you intend to submit code back to the main Chaste repository, please see ChasteGuides/BestPracticeGuide.

Coding Standards

To understand why Chaste variables, methods and classes are named like they are please see our C++ naming conventions.

We also lay out and document our code in a particular way, see CodeStructureStrategy.

You may also want to read through the other 'strategies' that we use to keep things consistent and well tested at ChasteStrategies.

Open a ticket

First start a new ticket on this wiki (buttons in top right) and describe the problem you are trying to solve.

Working in a new branch

Please see ChasteGuides/GitGuide#Ticketworkflow for how to work in a new branch - you should branch off develop if you want to contribute code back to the main Chaste repository.

Make sure you merge in the latest develop branch into your ticket regularly to keep up to date and avoid lots of changes before merging back in to our main repo.

If you would like to work with our repository, please contact the developers via the mailing list and we will create an account for you.

Ideally, write a comment on your ticket about any commits that you have done and pushed to your ticket branch on the chaste.cs.ox.ac.uk git repo.

Testing

Run all tests (continuous, nightly, parallel, coverage, memory) as per ChasteGuides/CmakeBuildGuide#OtherUsefulTargets

When you have run all tests locally, then we can run them on the Chaste buildbot server via https://chaste.cs.ox.ac.uk/buildbot/builders before merging your ticket into develop when all these pass.