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.
See the Serval DNA INSTALL.md for the most up-to-date list of supported targets and build instructions.
Copyright in all Serval DNA source code (including technical documentation) is either owned by Serval Project Incorporated or is owned by its author and licensed to the public under non restrictive terms. Contributors can assign copyright to Serval Project Incorporated by furnishing a signed Developer Agreement.
The Serval DNA source code is licensed to the public under the terms of the GNU General Public License, version 2.
The Serval DNA development branch is the main branch for unreleased code. The commit policy for the Serval DNA development branch is:
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.
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.
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.
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.