My personal bugbear is the network coverage.
Context: London / UK (EE).
Yes, I have 5G at home, but it's just one bar and sometimes even this one bar will disappear. Yes, there is 5G/4G all around the city, but you can't hold an uninterrupted conversation over FaceTime Audio while on the overground train or driving. I'll not even discuss the underground.
However, uninterrupted, low-latency, average bandwidth is a hard market and even harder to design.
CRDT at the very low level is an append only operations log with snapshots.
This can be easily stored in a file. The trick is to solve merging with another version you just got from a friend. But then operations are idempotent and appending two operation logs with idempotent operations is simple.
Yes, ideally OS would provide a container that it natively merges, but meanwhile nothing prevents apps from storing their data in say sqlite based append only logs and when needing to solve conflict/import/merge just append new operations.
Regarding tutorials;
Good news - 1.4.1 release should be available in the App Store and it comes with the fix for tutorials duplicates. From now on each tutorial document have a hardcoded UUID, so when they get generated on multiple devices they still get merged into one single Document. CRDT is beautiful.
Bad news - existing users need to remove old tutorials for the fix to work. Matching old and new tutorials based on title only could cause problems for some users. Sorry.
I still remember Piotr Wozniak's strong opinions about using ML for spacing prediction. But indeed market moves and even now SM is doing research in AI (again) https://www.supermemo.com/en/blog/ai-in-supermemo
CR-SQLITE is awesome. In my dream parallel universe OS would natively support:
- file
- folder
- pipe
- op-log
and provide primitives to merge op-logs (remove duplicate entries).
Maybe CR-SQLITE could be a gateway, but it feels a bit too high level. E.g. you can't just concatenate two op-logs and leave deduplicate to something else (I might be missing something)
Android version is a roadmap candidate. Baby steps ;)