Thanks for your input. It is early days and we are trying to make sense of the direction of how and where we want to take it.
One distributed P2P problem we solved is the synchronization of data. Imagine N peers operating on data, adding, modifying, deleting... offline or online and then they synchronize this with each other. This all works seamlessly in the Tonido Platform. We have API that can be used by any applications to use this in their apps.
Tonido Workspace uses this stuff to make it work. It is one giant workspace that people each have their own copy and work on when they want. And everything gets synced. Tasks, Calendars, Chat, Discussion Forums, Contacts, Files. You are finally free from servers to babysit interactions.
Similarly, Tonido Photos uses the sync API in a simpler way to synchronize photo comments, ratings, tags among Tonido Group members.
A distributed filesystem is certainly the way to do this and I like what I'm hearing, but I'm still curious what the underlying capabilities of that filesystem is.
Who is authoritative for a given file? Is it a crypographic least-authority filesystem like freenet or allmydata? Or does each identity basically own a top-level directory with the others caching what it publishes?
What do identities and the identity server look like? Does the server only handle pretty name -> crypto key mapping, or is it highly trusted?
Actually, we don't base the synchronization system on the fileystem. It is based on concept of records in a virtual store. A record is a 'syncable' entity. For example, a task in a Workspace is a record, a file can be a record and so on.
There is no single authority for a record. It depends upon what the sync settings are. Say you have a record that two people simultaneously modified, when the sync happens, the conflict gets resolved based on the setting, which for instance can the last change wins or the originator wins etc.
Think of Workspace more similar to how Groove works rather than a shared filesystem.
The Tonido Domain Server (TDS) basically implements a distributed login and authority system. As you said, it basically stores a pretty name->Crypto key that can validate a particular peer and help verify the identity in case another peer is interested.
The identity server's job is to provide Dynamic DNS function so URLs are resolved as well as to handshake connections between peers. The TDS is distributed in a sense that you can run your own TDS with your identity domain(say mindslight.com) if you want to. Your Tonido ID will be then me@mindslight.com. There is no central system. As long as they all talk the same simple protocol everything can interoperate.
What we are really hoping to get to is to the point where more TDS exist and people simply choose which one they want to create an ID on, like email addresses.
We need to write some more on this in our blog, but these days 24 hours doesn't seem to be enough. :-)
One distributed P2P problem we solved is the synchronization of data. Imagine N peers operating on data, adding, modifying, deleting... offline or online and then they synchronize this with each other. This all works seamlessly in the Tonido Platform. We have API that can be used by any applications to use this in their apps.
Tonido Workspace uses this stuff to make it work. It is one giant workspace that people each have their own copy and work on when they want. And everything gets synced. Tasks, Calendars, Chat, Discussion Forums, Contacts, Files. You are finally free from servers to babysit interactions.
Similarly, Tonido Photos uses the sync API in a simpler way to synchronize photo comments, ratings, tags among Tonido Group members.