User Tools

Site Tools


Serval DNA development

The Serval DNA component implements the core Serval technologies such as Mesh Datagram Protocol (MDP), Voice over Mesh Protocol (VoMP), Rhizome and MeshMS.

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.

Supported platforms

Serval DNA is written in GNU C and built using GNU Autotools and GNU Make. It builds successfully on:

  • Debian Linux ix86 and x86_64
  • Android 2.2 “Froyo” and later (using the Android NDK)
  • Mac OS-X 10.11 “El Capitan”
  • Oracle SunOs (Solaris) Sparc.
  • OpenWRT 12.09 (see Serval DNA for build instructions)

See the Serval DNA 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.

Source code and Branch policy

The Serval DNA source code is held in the serval-dna GitHub repository. This repository is embedded as a Git submodule into the Batphone repository.

Development branch

The Serval DNA development branch is the main branch for unreleased code. The commit policy for the Serval DNA development branch is:

  • must always build with no errors or compiler warnings,
  • must build for Batphone with no errors or compiler warnings,
  • must always pass all automated tests.

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

Serval DNA has a suite of automated tests constructed using the Bash test framework. The Serval DNA test instructions describe how to run the tests.

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.

Bug tracking

Serval DNA bugs and tasks in progress are tracked using GitHub Issues. The Serval DNA issue list lists all open issues. Please read the instructions for reporting Serval bugs before reporting any Serval DNA bug.

content/servaldna/development.txt · Last modified: 12/09/2016 17:45 by Andrew Bettison