How to Contribute

Shipping traffic in Tokyo Bay

We’re glad to have help!

We would love to have you on the team!

Our source code is on Github at  Clone or fork the repository and dive right in.  While you’re at it, join the tracktable-develop mailing list by sending an empty email to


We use git-flow (tutorial) to organize our branches.  That leads to branches with names like the following:

  • master: Latest released version of the code plus all hotfixes.  Must always build.  Each release will be indicated as a tag in this branch.
  • develop: Development version of the code including features intended for the next release.  Must always build.  You will not commit directly to the develop branch.
  • hotfix/issue-12345: Fix for Issue 12345, deemed urgent enough to deploy before the next release.  Hotfix branches will be created from the most recent release in the master branch.
  • feature/my-cool-feature: This is where most new code gets written.  Your feature branch should be created as a branch off of the “develop” branch.  When you are ready to merge your feature into develop, you will send Andy a pull request.  Discuss your feature on the development mailing list so that everyone can watch and pitch in.  Your code must build and pass all tests before it will be merged.
  • bugfix/issue-23456: Code to fix Issue 23456.  Unlike a hotfix, a bug fix is created from and merged back into the develop branch.  This will go out in the next released version of Tracktable.
  • doc/name-of-section: New documentation.  API documentation is generated automatically.  This is for sections of the user guide and similar.
  • cleanup/section-of-library: Miscellaneous cleanup.  This doesn’t address a bug or change the function of the library, just make it cleaner for users, developers, or both.

Coding Practices

  • Do document all methods, classes, and functions.  In C++, use Doxygen syntax.  Look at tracktable/Core/BasePoint.h for an example.  In Python, use Google-style docstrings
  • Do not introduce new dependencies on external libraries or require newer versions of existing external dependencies.  Yes, this is an inconvenience, but it’s a necessary one.
  • Do subscribe to tracktable-develop and join the conversation.  
  • Do make your code look like what’s already there.  
  • Do write test cases for all features and bug fixes.  Look at the existing tests for guidance on how to write them.  
  • Do make sure to include all the files you need in the INSTALL_FILES clause in CMakeLists.txt. 
  • Do have fun!


We maintain three mailing lists for Tracktable.  

  • tracktable-commit: Messages go to this list every time someone pushes to our main repository.  
  • tracktable-develop: All development will be discussed here.
  • tracktable-announce: Announcements of new releases will go to this list. 

To join one of these lists, send an empty email to  To post, send your message to  You can also contact us via the Contact Us page.