Enable FSRS by default
Make FSRS (Free Spaced Repetition Scheduler) enabled by default for new users and users who haven't explicitly configured it.
Changes:
- Add BoolKey::Fsrs to default-true boolean keys in Rust backend
- Set defaultValue to true for FSRS toggle in deck options UI
close #3616
For AO, please create a new issue to keep track of it.
Should we include some kind of banner the first time that option will be by default used ? Just in case some people where on SM2 by default but who'd still want to switch back to SM2 if they really want it
its worth noting that with this change you will be enabling fsrs for everyone that has not explicitly turned fsrs on then back off. https://github.com/ankitects/anki/blob/04a0b10a15abc61c409d0073eb856fe75db3f6f2/rslib/src/deckconfig/update.rs#L212-L214 There is logic that keeps the variable unsaved in the configuration unless it has changed. And since its unsaved the default-to-true gets triggered even if it is a preexisting deck. I can see an argument that this might be a desireable interaction but I think this case should be known and discussed.
(I played around with this a few weeks back as I was gonna make this exact PR next april fools day. I thought things would move slowly enough that it would still be a relevant PR to make then)
Should we include some kind of banner the first time that option will be by default used ? Just in case some people where on SM2 by default but who'd still want to switch back to SM2 if they really want it
I'm not good at UI/UX, so PR is welcome.
I can see an argument that this might be a desireable interaction but I think this case should be known and discussed.
Sure.
FSRS has clear advantages over SM-2, and because of the "Default Effect" most people won't be likely to change the default unless something has gone wrong.
We could perhaps enable it for new collections only by adding a default here: https://github.com/ankitects/anki/blob/362d09e31f17c234c9635a6836501820dc2b1215/rslib/src/config/schema11.rs?plain=1#L27-L28
We could perhaps enable it for new collections only by adding a default here:
I have tested the PR's code. It has enabled FSRS by default for new collections.
Edit: oh, I know what happened. For a new collection, the config doesn't have the fsrs field. The PR will return true for fsrs by default in this case.
This seems to be a good opportunity to make some changes similar to https://github.com/ankitects/anki/pull/3860 so that we don't need to read the config on every card answer.
https://github.com/ankitects/anki/blob/321e23acb2b02d657ca08727546c016d7ef27381/rslib/src/scheduler/answering/mod.rs#L449
Please feel free to ask me to create a separate issue for this.
Please feel free to ask me to create a separate issue for this.
Sure, please do that, thank you!
@L-M-Sherlock if you want more users to test FSRS, consider shipping Anki with no default scheduler. When a new collection (new Anki profile) is created, force the user to choose one or the other.
Also, a look through the Anki Forums shows many users confused or having problems with FSRS, which indicates it isn't ready yet.
if you want more users to test FSRS, consider shipping Anki with no default scheduler. When a new collection (new Anki profile) is created, force the user to choose one or the other.
To be honest, @maimemo has been doing something similar. We shipped different schedulers all the time for A/B tests.
Also, a look through the Anki Forums shows many users confused or having problems with FSRS, which indicates it isn't ready yet.
If there are a lot of users confused or having problems, FSRS will get fixed soon. Just like SM-2 as the default, the community has invented tons of methods to fix it.
A less intrusive option is to have a popup on a new collection asking the user which scheduler they want to choose.
Example how to make a message like this: https://github.com/ankitects/anki/blob/f94d05bcbe17c8d1eacad3178c77f58c9fb3c3bd/qt/aqt/deckbrowser.py#L407C1-L429C4
A less intrusive option is to have a popup on a new collection asking the user which scheduler they want to chose.
In that case the message would need to be neutral, without bias. Your message is biased. And inaccurate for that matter. You do not have to optimize FSRS at all, as I already covered in the linked issue. It will improve retention though, if you do. Which is a huge plus compared to a non-dynamic, never adjusting algorithm like SM-2.
Also: The common user has no idea which algorithm is better for them; and probably will not read even a short explaination section. So I reccon it's better to just have a default (which might be FSRS if there are no real disadvatages and if its superior results reported by users are convincing dae) and allow users to change it in the preset options
In that case the message would need to be neutral, without bias
Yeah, I think it can be adjusted. The important part is to warn users that FSRS is experimental and that there's no solid data on how it affects retention given the same number of daily reviews. Some users report higher retention, others lower. Including a link to an article that explains the differences would also be helpful.
Yeah, I think it can be adjusted. The important part is to warn users that FSRS is experimental and that there's no solid data on how it affects retention given the same number of daily reviews. Some users report higher retention, others lower. Including a link to an article that explains the differences would also be helpful.
Iirc, FSRS is based on an algorithm that has had several papers published about it, showing improved retention. Users' so called anecdotal reports about their own retentions are not exactly reliable.
For what it's worth, I find that even without the rather misleading note, the mere calling of the one ‘Anki Scheduler’ and the other ‘FSRS’ biases towards the former. Had I not known anything and just installed Anki for the first time, without the time to look into the different schedulers, I'd have chosen Anki Scheduler while I wish I'd have chosen FSRS.