Contribution#

Contributions (bug reports, bug fixes, improvements, etc.) are very welcome and should be submitted in the form of new issues and/or pull requests on GitHub.

Please, adhere to the Google coding style guide:

https://google.github.io/styleguide/cppguide.html

by using the provided “.clang-format” file.

Document functions, methods, classes, etc. with inline documentation strings describing the API, using the following format:

// Short description.
//
// Longer description with a few sentences and multiple lines.
//
// @param parameter1            Description for parameter 1.
// @param parameter2            Description for parameter 2.
//
// @return                      Description of optional return value.

Add unit tests for all newly added code and make sure that algorithmic “improvements” generalize and actually improve the results of the pipeline on a variety of datasets.

Running Tests#

Build with -DTESTS_ENABLED=ON and run the test suite from the build directory:

cd build
ctest --output-on-failure

Tests that run expensive neural-network inference (e.g. the full-size LoMa smoke test) are skipped by default and only run when the COLMAP_TEST_HEAVY environment variable is set:

COLMAP_TEST_HEAVY=1 ctest --output-on-failure

Continuous integration always runs the test suite with COLMAP_TEST_HEAVY set, so heavy tests are covered there. When adding a test whose runtime is dominated by model loading or inference, prefer a fast default path and gate the expensive variant behind this variable.

Continuous Integration#

Pull requests automatically run the Ubuntu, macOS, and Docker builds, the Linux pycolmap wheel, and the documentation build. The slower Windows builds and the remaining pycolmap wheels (macOS, Windows, and CUDA) only run once a maintainer adds the full-ci label. The label stays on the pull request, so later pushes run these jobs again. They are required for merging and show as pending until the label is added.