Table of Contents
RightsCon 2014 OpenITP UX Sprint
The Serval Project are sending a couple of developers to the UX Sprint for Security and Privacy Tools in San Francisco, March 1-2, 2014, run by OpenITP, immediately prior to RightsCon in Silicon Valley, March 3-5, 2014.
The main skills that we anticipate being relevant include:
- Java (for anyone who wants to work on a Java-based client)
- HTML5/JS (for anyone who wants to work on a HTML client)
- Pidgin/libpurple (for anyone who wants to work on a Pidgin plugin)
- Technical writing
- UI/UX design and testing
See https://openitp.org/openitp/ux-sprint-for-security-privacy-tools.html for registration, venue and further information. Registration is free.
Apart from Serval, there are lots of other projects that are being sprinted at this event.
We are open to other goals, but this is what we currently have in mind:
The Serval Mesh is only available on Android devices at present.
We want to fix this by making a cross-platform desktop client, that supports the secure voice, text and data services of the Serval Mesh.
1. Cross Platform Client
We are thinking that Java is probably the most appropriate language to apply, but are open to alternatives.
Getting the code and reporting issues/bugs
Clone or fork http://github.com/servalproject/lapcat
Bug tracking and issues will be managed using the github issue tracker for this repository.
The Serval Mesh has a newly developed HTTP API that should make it relatively easy to interface with the Serval Daemon. Of course, you will need to have the natively compiled Serval Daemon as part of such a client. More on the Serval Daemon further down.
The functionality we are targetting for the client includes:
- Configuration and control of Serval Daemon.
- Rhizome search interface to search and display results from all Rhizome bundles in the local database.
- Rhizome file insertion and extraction, including of encrypted bundles.
- Secure MeshMS send/receive interface
- Voice over Mesh Protocol (VoMP) secure voice client.
- Peer list and contact management, including recording the ServalID (SID) keys of trusted peers. We would also like to implement side-channel authentication of SID keys to ease sharing of keys without risking man-in-the-middle attacks.
As well as technical work on implementing the above functionality, we would also like to involve participants in planning a coherent user experience and user interface.
2. Serval Daemon builds and build process for various platforms
Since we would like to create build processes for each platform for the core Serval Daemon, which is written in fairly portable C (the only dependency is a working libc and a subset of POSIX functionality). This may involve some porting where platform incompatibilties may be encountered. Servald has previously been ported to Windows, and already runs on Linux and MAC OSX, so this should not be too difficult.
You will need a C compiler and a Java compiler. Recent versions of GCC and Javac will suffice.
The Serval Mesh uses Make and ANT as the build tools, and git for source control, with source hosted on http://github.com/servalproject.
Make sure you have a recent version of XCode installed. GIT binaries for OSX can be obtained here.
Linux, FreeBSD and other UNIX-like operating systems
If you are using a UNIX-like operating system, including Linux, FreeBSD and MAC OSX, you will most likely have these tools already installed. If not, use ports, apt-get, yum or your other favourite package manager to install them.
You make like to install xemacs, Eclipse (the Standard Edition will be fine) or another IDE environment if you have not already done so.
For Windows, you will probably want to install Cygwin if you have not already done so. Once installed, you will need to use the Cygwin setup program to install GCC, Javac, GNU Make, ANT and git.
You make like to install Eclipse (the Standard Edition will be fine) or another IDE environment if you have not already done so.
The main source of documentation for the Serval Daemon and APIs is here on the wiki.
Some pages of interest on the wiki and elsewhere:
Configuring Serval Daemon For Simple Operation
To get started with the Serval daemon quickly, here are the steps to create a working configuration. The steps will vary by platform, but should provide a helpful start for any UNIX-like OS.
Downloading and building the Serval Daemon
See also https://github.com/servalproject/mesh-extender/blob/master/mr3020/mr3020-files/stage-1/etc/serval/serval.conf for an example serval.conf file.
Copyright and Legal Stuff
All development on the new desktop client at the UX sprint will be released under GPLv2 or newer. No developer agreement will be required, unless you wish to modify the Serval Daemon itself.
The Serval Daemon is released under the GPL as it is developed to ensure that it remains freely available as it is created. In an ideal world, this is all that would be required.
However, the mobile device market is not an ideal world.
When it comes to iOS and Windows Mobile, applications must be provided to the walled garden under a non-copyleft license. If we were not creating humanitarian software, we would have no hesitation in simply standing our ground that open-source licenses should be accepted as first class citizens. However, in our particular instance, that has the potential to deny people access to software that could help prevent atrocities, get help or save lives. We don't feel that ideology should cost lives – even though we agree with the open-source ideology ourselves.