Serval Mesh development

Overview

Serval DNA is the core networking, encryption and file sharing component - a daemon written in GNU C and built using the Android NDK.

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.

Alpha and Beta releases

The Serval Mesh app is available for open Beta testing on Google Play, so anybody with a Google account can install and test the latest Beta version. Furthermore, members of the serval-project-developers Google group can test the Alpha version.

Sign in to Google (requires a Google account)

To install the most recent Alpha or Beta version, join the serval-project-developers Google group; to install only the latest Beta version, do not join that group

Testing and Quality Assurance

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.

Releasing

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.

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”.