FSRS-5 is going to be supported natively in the next major release. It has 19 parameters, 2 more than FSRS-4.5. When the user installs a version that supports FSRS-5, 2 zeros will be appended to his parameters. For example, this:
0.1017, 0.2363, 0.8370, 15.0452, 5.0258, 1.5123, 0.7134, 0.0066, 1.6000, 0.1682, 1.0368, 2.9261, 0.0561, 0.2020, 1.3726, 0.2142, 5.9996
Becomes this:
0.1017, 0.2363, 0.8370, 15.0452, 5.0258, 1.5123, 0.7134, 0.0066, 1.6000, 0.1682, 1.0368, 2.9261, 0.0561, 0.2020, 1.3726, 0.2142, 5.9996, 0.0000, 0.0000
And then the last two parameters will change once the user clicks “Optimize”. Until then, they will remain zeros.
This is great if the user only has one device. But what if the user has multiple devices, and one has an older Anki version?
To be honest, I don’t know what exactly will happen. But I’m sure it’s nothing good.
To prevent that, I propose the following: release versions of Anki/AnkIDroid/AnkiMobile where, if the number of parameters in the field is greater than 17 (which is the number of parameters in FSRS-4.5), just remove the rest and keep 17 numbers.
Imagine that AnkiDroid 2.19 does that. Then, once a user with FSRS-5 tries to sync to his phone that has AnkiDroid 2.19, AnkiDroid will just truncate parameters and use them as FSRS-4.5 parameters. Truncated FSRS-5 parameters still work fine as FSRS-4.5 parameters, maybe a bit suboptimally.
But what if the user has an even older version of Anki on the other device?
or
Hopefully, now you realize why I chose this title for the post. The only way to not have any conflicts is to invent a time machine and retroactively add the truncation hack to all past versions. So all you have to do is truncate parameters, discarding the last two.
EDIT: just to be clear, when I say
release versions of Anki/AnkIDroid/AnkiMobile where, if the number of parameters in the field is greater than 17 (which is the number of parameters in FSRS-4.5), just remove the rest and keep 17 numbers.
I mean “release them WAAAAAAAY in advance, before the version with FSRS-5 comes out”. Ideally, several months before that version. The longer we postpone the release of the version with FSRS-5 and the earlier we release a version with the truncation hack, the safer we are, but the longer users have to wait, unfortunately.
EDIT 2: for those who aren’t familiar with the inner workings of FSRS. Suppose you are trying to “coerce” parameters from one version to another.
- FSRS-4.5 → FSRS-5. FSRS-5 requires two more parameters; if they are set to 0, it is equivalent to FSRS-4.5. So all you have to do is append two zeros at the end (not at the beginning).
- FSRS-5 → FSRS-4.5. If you discard the last two parameters, the remaining 17 parameters work just fine as FSRS-4.5 parameters.