12 June, 2010

Introducing MeshApp - A Mobile Application for Ad-Hoc Mesh Networking

The design for MeshApp has been worked out, and we are currently in the process of creating Milestones and opening tickets for MeshApp 1.0.

We have spent quite a while working out the design, but I think it will be worth it - since we have now a very clear picture of how MeshApp will look and what will be happening underneath.

The first week or so was spent brainstorming and doing research. I spent a lot of time thinking about possible features that could be implemented, but many of these ideas were quickly discarded since they would be more difficult to implement than they would be useful. After coming up with a number of ideas which were unclear (or just bad), it became a bit easier to focus on what is really necessary and useful.

There were a couple of things in particular which helped enormously with coming up with the current design of MeshApp.

 First, viewing the source code and documentation for existing plugins to olsrd made life a lot easier. Especially the plugins txtinfo (sends along useful olsrd output) and nameservice (DNS service for mesh nodes). One of the problems I was having at first was attempting to "reinvent the wheel" and think about how MeshApp will interact directly with olsrd. Thankfully, the plugins make this a non-issue.

Second, Mitar suggested we think of the possible kinds of people who will be using MeshApp, what will they be using it for, and what should MeshApp have that makes them think it is "cool". We divided up users into three categories: Non-Technical/Novice User, User instructed to use MeshApp, Technical/Expert User. This idea was helpful in coming up with a concrete design and thinking about how will MeshApp play into "bringing the mesh to the masses".

There are still some open problems that we have to deal with, and inevitably there will be problems that arise which we cannot anticipate. Some issues we are still dealing with:


  1. Should MeshApp 1.0 be relatively "raw" (lacking certain functionality and usability features), or should the first release be polished and have more advanced (and time-consuming) technical features? That is, should MeshApp 1.0 be a basic prototype of the application and exclude the more complex features like GPS/Location data, temporary mesh network creator, auto-configuration wizard, etc? 
  2. How to get olsrd fully ported to Android - regardless of the particular hardware or firmware version? This is a particular challenge, since olsrd has to run as root, yet more recent versions of Android (namely 2.1) have not yet been rooted. 
  3. Getting the Ad-Hoc Routing Protocol (AHCP) to work without IPv6 support, or patching earlier versions of Android with support for IPv6.
  4. A telnet command needs to be added to nameservice plugin so we can easily retrieve location data about other mobile nodes on the mesh.
  5. How can we add in a metric for accuracy of location data? GPS location is often unreliable and inaccurate, while location via WiFi signal strength tends to give better results. There is functionality built in to Android for this - but how should we include this into our design?
Anyway, now that we are in a good place with the design of MeshApp - there will slightly more regular updates on its development. The progress can also be tracked more closely by checking out our wiki page and subscribing to the wlan-lj mailing lists

To anyone reading this blog - your thoughts and input are really valuable to the development of MeshApp. If you have any thoughts, leave a comment here. If you have any feature requests, send them along to the wlan-lj mailing list. If you would like to contribute to the project, send an e-mail to me personally or contact us through wlan-lj.