iCloud sync across devices

LeonardoM

进士
Hi,

It’s my understanding that iCloud syncing across devices with Pleco 4 might not happen.
Since it would be incredibly useful, I was just wondering why.
Shouldn’t it be extremely simple to make -any - change on a device and then see that same change on every other device? They even share the same OS.
 

mikelove

皇帝
Staff member
The problem is that iCloud sync doesn't happen reliably - particularly not with large files that change a lot - and we can't force it to happen; it happens whenever iOS feels like doing it. So even with the old app, we ran into a whole lot of situations where iCloud would simply stop syncing and we'd have no way to fix it, and users would blame us for Apple's buggy system. Which made it impossible to advertise cloud sync as a supported feature (we haven't done so for years) and hence hard to continue investing time in developing it.

It's not actually quite that simple anyway - access to cloud-synced database files requires a bunch of extra container code to make sure they don't end up in a corrupted or inconsistent state - so it would have taken a lot of work to keep it going, even as an 'experimental' feature with a bunch of warnings telling people they should not use it unless they're OK with the risk of their data getting deleted.

The plan is that in a later 4.x update we'll add our own cloud sync system, one that works cross-platform and is fully under our control. We have built in some of the infrastructure for this in 4.0 - unique GUIDs for every object, for example, and the JSON export/import feature is also a trial run of the format we'll use to package changes up to send to/from the server - but since our current cloud sync feature is sparsely used on iOS and doesn't exist at all on Android, we didn't think it was a feature we should delay the rest of 4.0 for.
 

LeonardoM

进士
The problem is that iCloud sync doesn't happen reliably - particularly not with large files that change a lot - and we can't force it to happen; it happens whenever iOS feels like doing it. So even with the old app, we ran into a whole lot of situations where iCloud would simply stop syncing and we'd have no way to fix it, and users would blame us for Apple's buggy system. Which made it impossible to advertise cloud sync as a supported feature (we haven't done so for years) and hence hard to continue investing time in developing it.

It's not actually quite that simple anyway - access to cloud-synced database files requires a bunch of extra container code to make sure they don't end up in a corrupted or inconsistent state - so it would have taken a lot of work to keep it going, even as an 'experimental' feature with a bunch of warnings telling people they should not use it unless they're OK with the risk of their data getting deleted.

The plan is that in a later 4.x update we'll add our own cloud sync system, one that works cross-platform and is fully under our control. We have built in some of the infrastructure for this in 4.0 - unique GUIDs for every object, for example, and the JSON export/import feature is also a trial run of the format we'll use to package changes up to send to/from the server - but since our current cloud sync feature is sparsely used on iOS and doesn't exist at all on Android, we didn't think it was a feature we should delay the rest of 4.0 for.
Gee, is Apple aware of their sh*tty cloud syncing issues?
Anyway, if Pleco will use its own syncing system, then it's good enough for me! I mean, in the end I just need it to sync progress across devices. Who cares if it's iCloud or Pleco Cloud
Very glad to hear it's in the works :)
 

mikelove

皇帝
Staff member
They're not a problem for most apps, it just doesn't appear that 'keeping a large database in sync' is something they're motivated to make work well, perhaps since most of the apps that try to do that use their own services. When they first launched it they were more interested in that use case - I went to a lab at the developer conference where they first debuted iCloud and an engineer there told me they had difference-finding code specifically for SQLite databases like we use for our flashcards - but I presume that lack of use meant they've neglected it.
 

tlindeman

Member
This is a really useful feature. You could maybe even charge a reasonable subscription tier including this functionality and host your own syncing server.
 

mikelove

皇帝
Staff member
Yes, I think we probably would - it might also come with a web-based flashcard editor, though I don't think we could display definitions from some licensed dictionaries without charging a lot more money.
 
Top