Is your feature request related to a problem? Please describe.
Every week I see the “There is a conflict between decks on this device and AnkiWeb” pop-up. When I am forced to answer this question 3-4 times a week, it is GUARANTEED I’ll make a mistake soon or later if not multiple times per year even when I knew the correct button to click. I believe that for 10 years running this has been the hardest UX problem in Anki.
Describe the solution you’d like
Make the correct decision a default and obvious one-click, make the wrong decision require multiple clicks. What is the right decision? It’s 100% obvious in every case, all 6 of my Anki devices have accurate clocks. Compare the last date time stamp an action was taken on the online deck and compare it to the latest date/time stamp of an action performed on the local deck. This will always be right.
Describe alternatives you’ve considered
There are no alternatives AFAIK.Even if you did a diff of the decks this would be the wrong choice because it is labor intensive and makes the UX even worse: imagine having to carefully study a diff 3-4 times per week.
Okay no. This wouldn’t work for people who don’t have their other devices synced to AnkiWeb. But even if they did sync all other devices, it’s possible that they want to get an older version of their collection because they messed something up in the local.
I think you were going in the right direction though. I only use Anki on one device and so everytime I do a one-way sync I have to take my time and carefully select the option.
I think an option to set default one-way sync direction would be nice, but it should be an opt-in feature.
That simply isn’t true. When a conflict can be reconciled, based on the timing of the most recent change, Anki does that for you transparently already. When you see this message, it’s because you’ve made a change that cannot be reconciled, and something will need to be overwritten. Anki and Anki devs are not equipped to make that decision on your behalf.
The things that cause this message are usually few and far-between. Are you making significant/structural changes to your note types 3-4 times/week [adding/removing fields, adding/removing card types, changing a note to a different note type, merging note types on import, etc.]? If so, you also get a warning when you’re making that change, so getting this pop-up when you sync shouldn’t come as a shock.
If it’s not that, then are you doing something else that is damaging your database – Syncing with AnkiWeb - Anki Manual ? Maybe if you could reduce that, this wouldn’t bother you so much.
7 of 8 times when I get the prompt it is effectively asking:
“Do you want to overwrite everything you did on Anki in the past several weeks with an old collection.”
I don’t understand why I’m presented with the opportunity for such utterly destructive user error so frequently. Is there really a real use case where you do your reps for several WEEKS and only then realize you screwed something up and want to revert to such an old version? I find it very hard to believe.
I also find it hard to believe that there is a real world use case for recovering from an unintentional modification to a deck by opening up one’s collection on a cell phone that hadn’t been used in the past 3 weeks and using it casually. If I really knew that the ONLY uncorrupted verison of my deck lived on that particular unused cell phone, I would be ready to immediately and intentionally enter some sort of intentional recovery workflow. I would not “save my life” by starting Anki on the phone and waiting for an overwrite pop-up to come up.
Also I say please don’t believe me: please get the opinion of how this should work from a UX professional who does this for a living. The reason OSS/Linux etc. are often really rough for everyone is that they’re driven forward by engineer/programmer logic and trained UX professionals are really smart about not letting that happen.
I wonder if the reason you and others don’t understand is that you haven’t thought of the use case where a person is using Anki on more than one device. Basically my philosophy is: knock the reps out with the device you have on hand. It’s the entire reason I use Anki over Supermemo.
The most trivial of changes cause this. Sorry I can’t remember the best examples off hand, but I’m not doing anything big at all. Each time I make such a trivial change I’m going to see the message which puts me at risk of a big blunder at least 5-8 times as I have Anki installed on various computers, VMs, or even different OS versions on the same laptop.
Nothing like this at all, I have no issues whatsoever.
Why are you letting your collection get several weeks out of sync? The more changes you accumulate, the more likely you’ll have issues when you sync. [But also, how are you getting this multiple times per week if you’re not syncing for weeks?]
I think you have a very narrow view of the way folks might use (or mis-use) Anki. Unfortunately, we can’t demand that all users use it the way you think is best.
No, you shouldn’t see this with trivial changes and everyday syncing. I think something else might be wrong.
If you have 5-8 versions of your collection and you aren’t keeping them in sync – that could be part of what is putting you in this situation.
Thanks for the response. IMvHO, referencing syncing should be done according to “certain unspoken rules” (like you shouldn’t wait too long) is a perfect example of the engineer/UX engineer dichotomy I referenced in my last post. I’m a real world user and several of my devices are synced infrequently, if that is a problem the fault is considered to be on the engineering side (by UX professionals) not with the user’s pretty typical behavior (me).
You’re welcome to disagree of course.
The example? I have 1 cell phone I use only 3 months per year. It is my robbery phone for use when I’m in Colombia. It is a bit older, so my life won’t be over if I’m robbed at gunpoint because I won’t lose my main phone that receives critical bank SMS OTP messages.
So yes that device gets synced very rarely, but when it is being synced regularly, my main phone gets synced infrequently for a 3 month period.
I cannot install and reinstall Anki on these phones because the initial install process is so grueling. You have to unlock and restart your sync 20-30 times because there is no keep awake code in the sync process on phones, so the phone goes to sleep and crashes the sync in the middle :)) Plus it’s a huge waste to transfer all that audio over the network when there are barely any changes year-to-year.
My honest opinion is that there is nothing wrong with how I use Anki and it should just work. Of course I appreciate the heroic efforts of those who make it a reality.
Let’s say you have three devices: A, B and C. You use A all the time to create new cards and update cards you have already created. You use B all the time to study the cards. Sometimes, maybe once a year, you use device C to study your cards.
This workflow is totally fine and works very well if you make sure to always sync your current device when you open the app and when you close the app.
If you do not use device C, it doesn’t matter if device C has the latest changes. But the server must have the latest version. Otherwise you create sync conflicts.
Essentially:
A sync conflict occures when you have different changes in device A and in device B, but try to sync one of those devices to the server. If the server cannot merge your changes, then Anki asks you what to do: you choose which changes you want to keep and which to delete.
Thanks - yes I allow the app to sync whenever I close it so I fortunately rarely encounter these.
99% of my sync conflicts are something like - I needed to remove a HTML DIV tag that was screwing something up in my card template. Then this pending conflict will only show up on device B C D E F when they finally sync which is a long time later. And I hate the pop-up because if I tap the wrong option I’ll screw up my collection. My feature request is something like: if you see my device is 8 weeks out of date and my online collection was synced just 2 hours ago, offer an OK pop-up that says “We’ll download the newest version from online.” and if I truly didn’t want to do that make me hit CANCEL and go into settings to upload the out-of-date device contents and overwrite the cloud. Because in 99.99% of cases that is the correct behavior.
Perhaps taking the time to experiment and see what’s causing so many full syncs would be helpful.
If you’re only using one at a time, is there a reason you can’t just full sync on the device that you’ve not used in a long time? If you haven’t reviewed on it, there’s no work to be lost on there.
A full sync doesn’t mean media gets re-transferred over.
I know exactly what is causing the sync pop-up, there is no mystery there. But it tends to be what seems to me trivial changes to a template to adjust a formatting issue etc. Absolutely nothing that would want me to overwrite my cloud synced deck with an 8 week old device stored deck. But the pop-up makes the user pick as if the possibility of going either way is realistically 50/50.
Absolutely. The feature request is related to the danger the pop-up prompt presents. The request is something like “Make it hard to make a huge mistake like syncing an 8 week old deck UP to the cloud when you know the cloud was just synced 2 hours ago with an up-to-date device.” If I was really doing a restore due to having hosed my collection, I would be acting very intentionally to accomplish that (rare) use case.
A possible fix to your problem that doesn’t affect other users is to show a warning when you tap on the button to upload an outdated deck. The warning dialog would have a 5 seconds timer where you can’t do anything, so that you read the warning.