Serval DNA development

To contribute code or documentation to Serval DNA, please observe the Serval Project's Software Development practices and refer to this page for procedures and resources that pertain specifically to Serval DNA.

The Serval Project does not have an automated build bot, so the only feedback if this policy is violated will come directly from other developers who are affected. Any developer who breaks this policy has an obligation to fix it as a top priority, or other developers may revert the breaking commit in order to continue their work.

Feature branches

Single commits that fix bugs and do not break the build or cause tests to fail are generally committed directly to the development branch.

Larger-scale changes often involve two or commits that temporarily break the build and/or cause tests to fail. These are committed to “feature” branches, which are merged back into the development branch when complete. The merge must comply with the development branch policy, so it is recommended that development be merged into the feature branch and tested there first, before the result is merged into development.

Feature branches are deleted once no longer needed.

Release branches

Serval DNA is not released as a product in its own right, so there is no “master” branch. Versions of Serval DNA that are released within other software bundles are tracked using persistent productname-release-version branches, eg batphone-release-0.90. These branches exist to tag the released version of the source code and for bug-fix commits for follow-up bug-fix releases of the product (also known as hot fixes).

In the case of Batphone, or any other repository that embeds Serval DNA as a Git submodule, the exact Serval DNA code version that was released is tracked by the Git submodule reference. The Serval DNA release branch merely exists as a convenience, but a very useful one, and must be manually maintained to coincide with the parent module's release tags.

Technical documentation

All Serval DNA technical documentation resides in the serval-dna source code repository. Here are links to the latest versions of Serval DNA technical documents (in the master branch on GitHub):

Testing and Quality Assurance

The testing policy for Serval DNA is that all new code must be at least partly covered by existing or new tests, and test coverage of existing code must be advanced whenever the opportunity arises, eg, whenever it is improved or refactored. The Serval Project are moving towards Test Driven Development as the best way to advance the functionality and performance of Serval DNA without compromising quality.

The Serval Project will be very reluctant to accept source code contributions that are not covered by any existing or new tests. Contributors are strongly encouraged to become familiar with writing Serval DNA test cases.