FSRS is a really clever iteration on Anki's SM2 algorithm. I've been playing around with various spaced repetition implementations lately - there's a great collection of open source libraries at github.com/open-spaced-repetition. I ended up using their typescript bindings for a vocabulary builder I'm working on (deft.so) and it's been surprisingly straightforward to implement.
I found FSRS is not great for languages because it optimized for the wrong thing, ie. how likely you will recall a word after X days without encountering that word.
There are 2 big problems:
1. If you are studying seriously, you will encounter many words outside your SRS practice, so the FSRS prediction fails flat.
2. More importantly, language learning is not about recalling words.
The algorithm I use for my app has a different set of objectives, it's <30 lines of straightforward code, and it works better (I tested it for months to be sure about it)
I had some problems with their documentation though. Following their examples was pretty straightforward, but I always had trouble e.g. what is the difference between State.Learning and State.Relearning, or what does fuzzy mean in FSRS parameters, or reps on a Card. You have to either read the algorithm explainer or the Anki source code to understand that.
> I had some problems with their documentation though.
I agree that our documentation is pretty bad at the moment haha. But I'm hoping we'll start cleaning things up more this year. I'd also like to potentially move away from using github's wiki system...
It is great to have the docs well organized like this, what is missing is just a short explanation of what all those mean. The information is available, e.g. in the README or in the source code. So honestly it is just a minor annoyance, rather than a major issue. I was able to use ts-fsrs just fine actually.
The Anki database format is still pretty opaque, despite a few efforts over the years, and it would be great to open some of this this up to allow apps to export apkgs
I complain here, but this is open source and if I was slightly more ambitious I would submit PR with the missing docs (or at least an issue).
PS. my work is here https://github.com/runarberg/shodoku in case you are interested, but the source code bears the mark of being a weekend hobby project, so read at own risk ;)
Nice. I jumped straight to FSRS so I can’t compare, but so far I have no regrets. One of my features is I progressively disappear the furigana in the included dictionary and example sentences, as the reading proficiency of the kanji increases (specifically at 99% retrievability) https://github.com/runarberg/shodoku/blob/main/src/helpers/f... This feature was very easy to implement as retrievability is inherent in the algorithm (maybe it is in SM2 as well; I don’t know; but it was trivial in FSRS).
This library also makes it easy to undo a review (one of my missing features) as long as you keep the review records (which this library also makes easy).
Very nice to have these modern setups under freer open source licenses. I have all my data synced to the client to work offline, so it's very nice having FSRS available on iOS & elsewhere (+ ability to run the rust one)
I thought I recognized your username from a political debate here a few months ago. I figured you would enjoy the donations page of my app:
https://shodoku.app/about#donations
> If you insist on paying for this app, consider donating to UNWRA instead.
Glad to see solidarity among the Japanese learning community.