User Tools

Site Tools


content:servalmesh:development

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
content:servalmesh:development [06/05/2013 23:11]
127.0.0.1 external edit
content:servalmesh:development [14/02/2016 19:14] (current)
Andrew Bettison Add [Alpha and Beta releases] section
Line 1: Line 1:
-====== Instructions for developing Serval Mesh ======+====== Serval Mesh development ======
  
 ==== Overview ==== ==== Overview ====
  
-The [[content:technologies::servalmesh|Serval Mesh]] app for Android is built from two components:+The [[.:|Serval Mesh]] app for Android is built from two components:
   * **Batphone** is the user interface - a conventional Android app written in [[http://www.oracle.com/technetwork/articles/javase/j2se15-141062.html|Java J2SE 5.0]] and [[http://en.wikipedia.org/wiki/XML|XML]] and built using the [[http://developer.android.com/sdk/index.html|Android SDK]]   * **Batphone** is the user interface - a conventional Android app written in [[http://www.oracle.com/technetwork/articles/javase/j2se15-141062.html|Java J2SE 5.0]] and [[http://en.wikipedia.org/wiki/XML|XML]] and built using the [[http://developer.android.com/sdk/index.html|Android SDK]]
-  * **[[content:servaldna:development|Serval DNA]]** is the core networking, encryption and file sharing component - a daemon written in [[http://gcc.gnu.org/|GNU C]] and built using the [[http://developer.android.com/tools/sdk/ndk/index.html|Android NDK]].+  * **[[:content:servaldna:development|Serval DNA]]** is the core networking, encryption and file sharing component - a daemon written in [[http://gcc.gnu.org/|GNU C]] and built using the [[http://developer.android.com/tools/sdk/ndk/index.html|Android NDK]].
  
-To contribute code or documentation to [[content:technologies::servalmesh|Serval Mesh]], please observe the Serval Project's [[:content:dev:|Software Development]] practices and refer to this page for procedures and resources that pertain specifically to Serval Mesh. +To contribute code or documentation to [[.:|Serval Mesh]], please observe the Serval Project's [[:content:dev:|Software Development]] practices and refer to this page for procedures and resources that pertain specifically to Serval Mesh. 
  
-==== Copyright and Licensing ====+==== Copyright ====
  
-Copyright in all Batphone source code (including technical documentation) is owned by [[content:spi|Serval Project Incorporated]].  Contributors must assign their copyright to [[content:spi|Serval Project Inc.]] by furnishing a signed [[content:dev:|Developer Agreement]].  The Batphone source code is licensed to the public under the terms of the [[http://www.gnu.org/licenses/gpl.html|GNU General Public License, version 3]].+Copyright in all Batphone source code (including technical documentation) is either owned by [[content:spi]] or is owned by its author and licensed to the public under [[:content:dev:#copyright|non restrictive terms]].  Contributors can assign copyright to [[content:spi]] by furnishing a signed [[content:dev:|Developer Agreement]].
  
-See [[content:servaldna:development#copyright_and_licensing|Serval DNA Copyright and Licensing]] for information about Serval DNA.+See [[:content:servaldna:development#copyright|Serval DNA Copyright]] for information about Serval DNA.
  
-==== Source code ====+==== Licensing ====
  
-The Batphone source code and accompanying technical documentation is held in the [[https://github.com/servalproject/batphone|Batphone GitHub repository]], which references the [[https://github.com/servalproject/serval-dna|Serval DNA]] repository as a [[http://git-scm.com/book/en/Git-Tools-Submodules|Git submodule]].+The Batphone source code is licensed to the public under the terms of the [[http://www.gnu.org/licenses/gpl.html|GNU General Public License, version 3]].
  
-  * The **Batphone [[https://github.com/servalproject/batphone/tree/master|master]]** branch is always the latest official release.  Each release is tagged with the release number, for example [[https://github.com/servalproject/batphone/tree/0.08|0.08]], [[https://github.com/servalproject/batphone/tree/0.90|0.90]].+See [[:content:servaldna:development#licensing|Serval DNA Licensing]] for information about Serval DNA.
  
-  * The **Batphone [[https://github.com/servalproject/batphone/tree/development|development]]** branch holds the latest unreleased code.  All commits on this branch should build cleanly (no warnings), and install and run okay. +==== Source code ==== 
 + 
 +The Batphone source code and accompanying [[:content:dev:techdoc|technical documentation]] are controlled using [[:content:dev:git]] and held in the [[Batphone Git repository]], which contains two main branches: 
 +  - The head of the [[Git master branch]] is always the [[.:release:|latest public release]].  Each release is tagged with its [[version numbering|version number]], for example [[https://github.com/servalproject/batphone/tree/0.08|0.08]], [[https://github.com/servalproject/batphone/tree/0.90|0.90]]. 
 +  - The [[Git 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 [[http://nvie.com/posts/a-successful-git-branching-model/|“feature” branches]], which are merged into the **development** branch and deleted once complete.+Large-scale code changes that break the build, installation or execution of Serval Mesh are performed in [[http://nvie.com/posts/a-successful-git-branching-model/|“feature” branches]], which are [[Git development branch|merged into the development branch]] and deleted once complete.
  
 ==== Technical documentation ==== ==== Technical documentation ====
  
-All Batphone [[content:dev:techdoc|technical documentation]] resides in the Batphone source code repository.  Here are links to the latest versions of Batphone technical documents (in the [[https://github.com/servalproject/batphone/tree/development|development]] branch on GitHub):+All Batphone [[:content:dev:techdoc|technical documentation]] resides in the Batphone source code repository.  Here are links to the latest versions of Batphone technical documents (in the [[https://github.com/servalproject/batphone/tree/development|development]] branch on GitHub):
  
   * [[https://github.com/servalproject/batphone/blob/development/INSTALL.md|Batphone build and installation instructions]]   * [[https://github.com/servalproject/batphone/blob/development/INSTALL.md|Batphone build and installation instructions]]
Line 35: Line 39:
  
 The [[.:api:|API Documentation]] introduces the various [[http://en.wikipedia.org/wiki/Application_programming_interface|API]]s exposed by the Serval Mesh app. The [[.:api:|API Documentation]] introduces the various [[http://en.wikipedia.org/wiki/Application_programming_interface|API]]s exposed by the Serval Mesh app.
 +
 +The [[sampler|Serval Mesh Sampler]] application contains examples of how to use the [[.:api:|Serval Mesh APIs]].
 +
 +==== 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 [[https://groups.google.com/forum/#!forum/serval-project-developers|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 [[https://groups.google.com/forum/#!forum/serval-project-developers|serval-project-developers]] Google group; to install only the latest **Beta** version, do not join that group
 +  - Go to the [[https://play.google.com/apps/testing/org.servalproject]] opt-in page and sign up as a Tester
 +  - Install the [[https://play.google.com/store/apps/details?id=org.servalproject|Serval Mesh app from Google Play]] -- the Alpha or Beta version will be installed
 +
 ==== Testing and Quality Assurance ==== ==== Testing and Quality Assurance ====
  
-The [[.:testing:release_candidate|Serval Mesh Release Candidate]] is tested manually using the **[[.:testing:|Batphone test plan]]** prior to every release.+The **[[.:testing:|Batphone test plan]]** is used to manually test the [[.:testing:release_candidate|Serval Mesh Release Candidate]] prior to every release.
  
-There is a single automated test case for [[:content:tech:MeshMS|MeshMS]] in the [[https://github.com/servalproject/batphone/tree/development/tests|Batphone tests]] directory.  It uses the [[content:technologies:bash_test_framework|Bash test framework]] and requires two Android devices connected via USB with the Serval Mesh app installed and running.+There is a single automated test case for [[:content:tech:MeshMS|MeshMS]] in the [[https://github.com/servalproject/batphone/tree/development/tests|Batphone tests]] directory.  It uses the [[:content:tech:Bash test framework]] and requires two Android devices connected via USB with the Serval Mesh app installed and running.
  
-The [[content:servaldna:development|Serval DNA]] component has an extensive suite of automated tests, and its own testing and quality assurance policies and procedures.+The [[:content:servaldna:development|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 [[http://en.wikipedia.org/wiki/Unit_testing|unit testing]] and [[http://en.wikipedia.org/wiki/Test-driven_development|Test Driven Development]] by its contributors. The Serval Project intends to increase the use of automated testing and release QA processes in future, and encourages the use of [[http://en.wikipedia.org/wiki/Unit_testing|unit testing]] and [[http://en.wikipedia.org/wiki/Test-driven_development|Test Driven Development]] by its contributors.
 +
 +==== Releasing ====
 +
 +Follow the **[[.:release:|Serval Mesh release procedure]]** to make a new release of the Serval Mesh app.
 +
 +  * Learn about about Serval Mesh [[version numbering|version numbering]].
 +  * See the [[:content:servalmesh:releases:|full list of Serval Mesh releases]].
  
 ==== Bug tracking ==== ==== Bug tracking ====
Line 53: Line 76:
   * [[https://github.com/servalproject/serval-dna/issues|Serval DNA issues]] pertain to [[:content:servaldna:development|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.   * [[https://github.com/servalproject/serval-dna/issues|Serval DNA issues]] pertain to [[:content:servaldna:development|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, [[content:contact|contact a Serval Project team member]] first, or report it as a [[https://github.com/servalproject/batphone/issues|Batphone issue]] by following the [[content:dev:reporting_bugs|instructions for reporting Serval bugs]].+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, [[:content:contact|contact a Serval Project team member]] first, or report it as a [[https://github.com/servalproject/batphone/issues|Batphone issue]] by following the [[:content:dev:reporting_bugs|instructions for reporting Serval bugs]]. 
 + 
 +==== External dependencies ====
  
-==== Past versions ====+Versions of Batphone prior to 0.90 depended on the third-party apps [[http://code.google.com/p/websmsdroid/|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 [[.:releases:version_0_90|version 0.90 “Shiny”]].
  
-Versions of Batphone prior to 0.90 depended on the third-party apps [[http://code.google.com/p/websmsdroid/|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 [[content:servalmesh:releases:version_0_90|version 0.90 “Shiny”]]. 
content/servalmesh/development.1367907073.txt.gz · Last modified: 06/05/2013 23:28 (external edit)