Over the better part of the last month a considerable amount of work has been completed on Project Moped. The most significant undertaking of which is beginning to write the code needed for Project Moped. However, before any code was written a couple steps were taken.
Once the idea for Project Moped had been solidified in early February an investigation of current mobile devices and operating systems commenced. The platforms considered included: Apple iOS, Google Android, RIM BlackBerry OS, Nokia Meego, and Symbian OS. Of these it was decided to proceed with Apple iOS due to my familiarity with the platform, previous development experience, and available hardware for testing. Furthermore, selecting iOS allowed for further exploration of a platform that promotes rich media usage.
Following the selection of a platform for development and testing was an investigation of current technologies used to create peer-to-peer networks. The two primary concepts explored were distributed hash tables (DHTs) and the BitTorrent protocol. DHTs were investigated because the routing and object location services they offer applications built on top of them are extremely powerful and allow for a wide range of applications. I looked into several DHTs including: Chord, CAN, Pastry, Kademlia, and Dynamo. While the services a DHT offers are powerful it was unclear to me how I could leverage them in order to provide the file sharing encapsulated in Project Moped. For this reason I also looked into the BitTorrent protocol in order to find ways in which I could leverage existing systems to expedite development. Although the concept of file sharing present in BitTorrent is more in line with the vision for Project Moped compared to a DHT based solution, BitTorrent’s reliance on metainfo files, trackers, and lack of geographic location awareness prompted the need for solution catered to mobile nature of Project Moped.
Due to the similarity between Project Moped and BitTorrent, and the lack of time currently available, it did not make sense to design a new protocol from scratch. Instead of doing this it was decided to use the BitTorrent protocol as a base and modify it as needed to provide the functionality required by Project Moped. This protocol design is still ongoing and is occurring concurrently with software development.
As previously noted, the process of writing code for Project Moped has begun. The code consists of two parts: a library implementing the underlying peer-to-peer functionality, and an iOS application to test the network and provide insight into the behavior of the network. The library (libmoped) is being implemented in C and tries to achieve portability whenever possible. Progress on libmoped has come along smoothly and I am currently working on implementing a system to manage routing tables. Code for libmoped can be found at https://github.com/lightbulbone/libmoped. The iOS test application has seen less attention lately; however, there has been some consideration as to whether the application should be designed to share audio or video files. There has also been some preliminary work in laying out the test application with minimal code written.\
The next steps to be taken are to: continue implementation of libmoped, solidify the plan for the iOS test application, and determine a set of metrics that can be used to evaluate network performance and user experience. Lastly it will be necessary to setup a test environment and evaluate the system with and without a peer-to-peer overlay.