Ankidroid and Anki FSRS version will not always match

24.04 means “year 2024, fourth month”. The new naming convention is quite helpful for determining when a particular version came out.

1 Like

oooooooooooohhhhhhhhh now it allllllllllllllllll makes sense

Yep. Though it’s still slightly confusing because, for example, 23.12.1 is not “December 1, 2023”, but rather “December 2023, minor patch”. It’s year.month.patch, not year.month.day.

2.17 is being released slowly, some users will have available, others won’t have yet

2.17.3 is publishing for real now, already in google’s hands staged for 50% rollout

hoping for 100% on Monday (but not over the weekend)
MikeHardy on Discord

100% rollout for beta users, check the docs to participate in the Beta Program
AnkiDroid 2.17 User Manual

There is also an alpha program going on, version 2.18
AnkiDroid 2.17 User Manual

What features are being tested in Alpha 2.18?

it’s a long list.

Main > Tags > 2.18

Only for some; it’s still 2.16.5 for me.

btw, what problem will it have?
thanks

btw, when i was forced into 2.17.5 on ankidroid, it stated that the code base is 23.12.1, so i installed that on desktop.

i think users better stop google play store 's auto update (which i did for ALL apps, i even wish samsung not to force me update my OS).

then, you will have time to make sure the same code base is used.

update both manually.

1 Like

Yep, that’s what I did. Still, quite the pain as this wasn’t necessary before. And finding out which version of Anki Ankidroid is based off of is also annoying.

Where does it say it’s based off of 23.12.1? I can’t find that information on the Play store page.

It’s written in the About section of app. Go to Settings>>About and under the Anki icon on top it has AnkiDroid version, Date of Release, Anki Desktop version.

1 Like

Thanks!

1 Like

@dae @David @L.M.Sherlock I have an idea how to solve the cross-device compatibility problem in case a new version of FSRS comes out.

So suppose FSRS v5 is ready to be deployed, but parameters of v5 are incompatible with FSRS-4.5, and parameters of FSRS-4.5 are incompatible with v5. Suppose that Anki and AnkiDroid/AnkiMobile aren’t updated simultaneously (or the user just forgot to update all instances of Anki), meaning that it’s possible that FSRS v5 is supported on some devices and unsupported on other devices.
Instead of releasing a new version that supports FSRS v5, we first release a version with seemingly no changes to the algorithm, except that it actually supports FSRS v5 if you manually type (or copy-paste) valid v5 parameters in the parameters field, or if valid v5 parameters are put into the field after a sync. So FSRS v5 is supported in a stealthy way. Clicking “Optimize” or any other button won’t activate FSRS v5. The users will not be informed that this is a thing.
We do this for all Anki/AnkiDroid/AnkiMobile releases. Then we wait for at least 6 months to ensure that most users have updated to Anki/AnkiDroid/AnkiMobile with “dormant” FSRS v5. Then we release a new version of Anki/AnkiDroid/AnkiMobile that supports FSRS v5 officially. Now, if the user has updated Anki on one device but hasn’t updated it on the other device, and he tries to sync, everything will work fine, because syncing will activate the “dormant” FSRS v5 in the older version.

I know that this is far from being a straightforward solution. But this is the best solution that I could think of. And by “the best” I mean “the only one that doesn’t require literal time travelling”.

  1. How are you going to make sure that no one uses their existing 4.5 parameters once v5 is released? What will cause an individual user to “change” to v5? Will that include locking them out from studying until they’ve replaced their parameters?
  2. The other option (which I brought up long ago) seems to be – just don’t make the parameter sets incompatible. I’m not sure why that isn’t a potential solution. Is there a reason why they would have to be incompatible?

It’s pretty hard to make them compatible even if we only change the function in the formula. For example, if we
change D^-w[12] to e^(-w[12]*D), the result will be very different:

In that case, w[12] (and the rest of weights) should be optimized again.

But why can’t you just make a new variable w[17] to use in that new formula for v5, and deprecate w[12] going forward? It seems like it might make it simpler from a dev side to keep using the same variables, but it’s more likely to be problematic for the users.

Yeah. But it feels weird that some parameters are unused but still kept in the list. I’d be more cautious in updating FSRS.

1 Like
  1. Backward compatibility is easy, just support both v5 and FSRS-4.5. It’s the forward compatibility that is the problem.
  2. If the number of parameters is different between two versions, it automatically makes them incompatible.

AnkiDroid has started using the Rust backend, so it shouldn’t be too far behind desktop releases in the future, especially if the associated desktop release has an extended beta-testing period.