Robin and I spent an hour or so today talking through how our bookmark UI
should end up, and how the complexity introduced by Sync can be integrated
or masked in a way that doesn't baffle users.

(For example: showing two Mobile Bookmarks folders is confusing, but is a
natural result of some of our fallback behavior. Allowing the user to
delete some bookmarks but not others is confusing. And so on.)

We think we have a reasonable handle on how to move forward; as I
understand it, this is at the front of Robin's queue, and I'm giving her
all the support I can.


A couple of notes from me inline:


* Even if the initial download looks good, your data may get inconsistent
> at some later stage at which point the bookmarks will become read-only.
>

That's not currently the case in the code, but we've been designing under
the assumption that we'll need to model and surface this intermediate
I-did-sync-but-now-I-can't state.


3. We automatically enable it when we discover your data is in good shape


> After we do the initial bookmark sync, we actually know if your data is
> bad or not. If it is good then we can enable bi-directional bookmark sync.
> If it is bad then we fall back to read-only. However, since data can also
> become corrupt at a later time, we still need to deal with that. But, we
> can explain to the user why this happened. We can provide instructions
> (SUMO article) on how to re-upload your sync data with Desktop.


This is roughly the direction that the existing code (and Robin's mocks)
move in: if we're able to sync you, we will; if your stuff later breaks,
we'll try to tell you how to dig your way out, and once broken we won't let
you dig yourself deeper (e.g., by moving things around or deleting folders).

Messaging this without sounding really amateurish is a challenge — "hey,
sorry, you need to go turn Sync off and on again on your desktop, and you
might want to make a backup first" — but we'll figure something out.



There are some cases where the iOS client can ignore certain cases of bad
> data. It is not a solution, but this could make the success rate higher.


This is a relatively small set, and we'd need to do a little analysis to
figure out exactly what's safe.

For example, we could try to ignore backpointers from child records, but
it's possible that those are more accurate than the child lists in folders;
which one is wrong depends on how various desktop bugs behave in the wild,
and I haven't studied those deeply yet.

My general hunch about this slice is that it's thin enough that it won't
make a big dent — too much corruption is about missing records or serious
record disagreements.  But we'll see.


2. We make the iOS client self-healing
>
If we detect data inconsistencies we may be able to fix them, and then give
> the user to re-upload their data back the server. Lots of complexity here.


This is what we tried to do, somewhat blindly, on Android: rather than
letting clients diverge (the desktop approach), it tried to reach
consistency and then get clients to agree.

In retrospect I think this was a bad decision on that platform, because —
as with desktop — Android's bookmark sync code is very myopic, so it
couldn't make a good judgment call between, say, one leaf record being
missing and one critical folder being totally wrong. We didn't realize the
extent of the problems with desktop and the Sync protocol, else we'd have
taken a more cautious approach.

iOS is much more informed, of course, so it might theoretically be possible
to do subtree merges to at least get some bidirectional changes working. If
all we've done on the device is add some bookmarks to Mobile Bookmarks,
then perhaps it's safe to upload those. (But perhaps not!)

We can take a broader view of this option, too: "get iOS to fix things any
way it can".

For example, we might also consider adding channels to allow us to remotely
tickle desktop into fixing state — e.g., a command "upload this record if
you've got it", or a "missing persons" collection. This allows us to
potentially implement smart recovery before desktop can build and ship it
themselves. This would require some desktop changes, but they'd be more
tractable.
_______________________________________________
mobile-firefox-dev mailing list
mobile-firefox-dev@mozilla.org
https://mail.mozilla.org/listinfo/mobile-firefox-dev

Reply via email to