User Tools

Site Tools


This is an old revision of the document!

Instructions for developing Serval Mesh


The Serval Mesh app for Android is built from two components:

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

Copyright in all Batphone source code (including technical documentation) is owned by Serval Project Incorporated. Contributors must assign their copyright to Serval Project Incorporated by furnishing a signed Developer Agreement. The Batphone source code is licensed to the public under the terms of the GNU General Public License, version 3.

See Serval DNA Copyright and Licensing for information about Serval DNA.

Source code

The Batphone source code and accompanying technical documentation is held in the Batphone GitHub repository, which references the Serval DNA repository as a Git submodule.

  • The Batphone development branch holds code that is intended for the next release. All commits on this branch should build cleanly (no warnings), and install and run okay.
  • Large-scale code changes that break the build, installation or execution of Serval Mesh are performed in “feature” branches, which are merged into the development branch and deleted once complete.

Technical documentation

All Batphone technical documentation resides in the Batphone source code repository. Here are links to the latest versions of Batphone technical documents (in the development branch on GitHub):

The API Documentation introduces the various APIs exposed by the Serval Mesh app.

The Serval Mesh Sampler application contains examples of how to use the Serval Mesh APIs.

Testing and Quality Assurance

The Batphone test plan is used to manually test the Serval Mesh Release Candidate prior to every release.

There is a single automated test case for MeshMS in the Batphone tests directory. It uses the Bash test framework and requires two Android devices connected via USB with the Serval Mesh app installed and running.

The Serval DNA component has an extensive suite of automated tests, and its own testing and quality assurance policies and procedures.

The Serval Project intends to increase the use of automated testing and release QA processes in future, and encourages the use of unit testing and Test Driven Development by its contributors.


Follow the release procedure to make a new release of the Serval Mesh software.

Learn about about Serval Mesh version numbering.

See the full list of Serval Mesh releases.

Bug tracking

Serval Mesh bugs and issues are tracked using GitHub Issues. Each component of Serval Mesh has its own GitHub repository, so each component has its own issue list. When reporting a bug in Serval Mesh, you must first choose whether to report it as a Batphone issue or a Serval DNA issue:

  • Batphone issues pertain to the Java/XML Android user interface code. These will generally include installation/upgrade problems, failures on new or untested devices, display or usability problems, missing features, voice call quality, and interactions with other apps.
  • Serval DNA issues pertain to Serval DNA core services. These will generally include failure to transport shared files or text messages, failures to detect or connect with other devices, and other failures in core Serval services.

It can be difficult to decide between a Serval DNA issue and a Batphone issue, especially without strong technical knowledge of the source code. If in doubt, contact a Serval Project team member first, or report it as a Batphone issue by following the instructions for reporting Serval bugs.

External dependencies

Versions of Batphone prior to 0.90 depended on the third-party apps SMSDroid and WebSMS, which had to be downloaded and installed separately from Serval Mesh. The pre-0.90 Batphone source code included parts of the SMSDroid source code to act as a client of that app. These dependencies were removed in version 0.90 “Shiny”.

content/servalmesh/development.1377223004.txt.gz · Last modified: 22/08/2013 18:56 by Andrew Bettison