Ubuntu One: Synchronize files with local peers
When syncdaemon finds other syncdaemons in the local network it should be able to syncronize content and metadata using the local link, without needing to talk to the server. Content is easier (but requires internet), metadata is harder.
Blueprint information
- Status:
- Not started
- Approver:
- None
- Priority:
- Undefined
- Drafter:
- None
- Direction:
- Needs approval
- Assignee:
- Lucio Torre
- Definition:
- New
- Series goal:
- None
- Implementation:
- Unknown
- Milestone target:
- None
- Started by
- Completed by
Related branches
Whiteboard
I think a viable implementation would be ;
* The client connects to the server.
In parallel
* The client asks the server for the local IP / hostname of other clients currently connected (or even just registered)
* If other clients are on the same subnet, the client attempts to connect to them
and
* The client asks for the blob list.
* The client receives the blob list. (I'm presuming that it identifies them by checksum)
** And determines which blobs it needs to download
* It directs requests for blobs to the other clients before it directs them to the server
The behaviour of Dropbox is consistent with this ; files are only available to other clients via P2P *after* their upload to the server is complete and other clients are notified of the new file by the server.
Syncing with no server contact at all is harder, because you then have to introduce new algorithms for conflict resolution, and also have a means of client discovery.