Places:Sync: Difference between revisions

2,578 bytes added ,  24 July 2007
Line 61: Line 61:
nothing has changed since the last upload.
nothing has changed since the last upload.


The file to upload should be a serialized version of the bookmarks
There are two basic variants: full and delta.  In the full upload case, when the backup executes and there are changes to upload, all bookmarks are exported and uploaded.  In the delta case, the client uploads a snapshot, then keeps track of the etag of the snapshot and as long as it doesn't change only uploads changes, to a separate file.
data, format TBDPossibly JSONMuch of this code can probably be
 
shared with the next-gen bookmarks file format exporter that will
The full upload method is simpler to implement, and ensures there is always a full, ready-for-restore copy of the bookmarks on the server.  However, it makes the upload operation more bandwidth-expensive.
replace bookmarks.html.
 
The delta upload method is less bandwidth intensive but more complex.  It would require either a "smart" server to combine the snapshot + deltas, or the client would need to be able to restore directly from the server.  Manually importing snapshots + deltas is likely confusing and error-prone.
 
The format of the file to upload would most likely be a JSON serialization of the bookmarks data.  The specific format is TBD, but would probably be exactly (?) the same format used for local backups, replacing bookmarks.htmlIn the delta upload case, an additional delta format would be needed.
 
==== Protocol ====
 
In order to simplify server requirements, we would limit ourselves to GET, PUT, and (optionally?) LOCKGET and PUT are in HTTP 1.1, and LOCK is an optional WebDAV verb.
 
Our specific needs will depend on which flavor of online backup we wish to implement (full dump vs deltas).  In the full dump case, we'd only need PUT.  For deltas we'd need locking as well.
 
==== UE ====
 
One possibility is to have a minimalist preference pane or dialog with something like the following:
 
<pre>
|--------------------------------------|
| [x] Enable online bookmarks backup  |
|                                      |
| Backup my bookmarks to this service: |
|  -------------                      |
|  | Service 1 |                      |
|  | Service 2 |                      |
|  | Service 3 |                      |
|  -------------                      |
|--------------------------------------|
</pre>
 
By default it would be disabled.  The user would click to enable online backup and select their preferred service.  This idea depends on the 'registration hooks' discussed later.  A more bare-bones approach without registration hooks could look like:
 
<pre>
|--------------------------------------|
| [x] Enable online bookmarks backup  |
|                                      |
| Backup my bookmarks to this service: |
|  --------------------------          |
|  | http://my.service.url/ |          |
|  --------------------------          |
|--------------------------------------|
</pre>
 
Authentication would be prompted for when sync occurs, and the user could save their user & password in the password manager for convenience.


=== Registration hooks ===
=== Registration hooks ===
946

edits