I spent most of the last week reading the source code of the current C++ implementation, especially the Routing and RUDP parts. The event-based nature of the code and the concurrency-handling parts make it hard for me to follow the core logic of the algorithms. That will probably come with usage and experience. I recon though, that the two main advantages of the current C++ implementation are its ultimate performance potential, and the security of depending on the least amount of trusted code.
I am thinking of reimplementing the Routing library as a first step, and maintaining compatibility with the Routing API, as defined in ‘routing_api.h’. That could be used to develop a first chat application. All information that would need to be persisted would be stored on the server that is used to established the peer connections. Needless to say, that would be highly insecure so no important user data should be stored.
One major advantage of that implementation, would be to demo the changes in the state of the network as nodes are added, removed, and communicate with one another. The second major advantage would be to make it a lot easier to deploy for web app developers, since a single library would need to be added to their one-page web application. As long as the API is fully compatible, it would mean they would simply have to change the library being used when the real network will be up.
Let me know what you guys think of such a project. I would like to make sure it is seen as a complementary implementation and not a hostile “fork”.