open-spaced-repetition / rs-fsrs

Rust-based Scheduler for FSRS
MIT License
22 stars 4 forks source link

rs-fsrs -> fsrs-rs? fsrs-scheduler-rs? #6

Closed dae closed 1 year ago

dae commented 1 year ago

Again, a very minor suggestion - the "-rs" part is usually trailing. Another option would be fsrs-scheduler or fsrs-scheduler-rs, which would better distinguish it from fsrs-optimizer-rs - WDYT?

dae commented 1 year ago

On second thought, if you intend to implement online learning in the future, perhaps this code should be merged into fsrs-optimizer-rs, and then we should rename that to fsrs-rs. What do you think @L-M-Sherlock? I can handle the merging if you want to go down that route.

L-M-Sherlock commented 1 year ago

I'm considering it. The main point bothering me is rs-fsrs has its own short-term schedule, but Anki has learning steps. In fsrs4anki scheduler, it custom scheduling doesn't modify the short-term schedule. Maybe we need develop a independent module for the integration.

L-M-Sherlock commented 1 year ago

And there are two methods to generate the new interval.

  1. Update the stability stored in custom data based on itself and the latest rating and elapsed days.
  2. Recalculate the stability from entire review history of the card (including the latest review)

Method 1 needs less calculation but it would be inaccurate when users update their weights. This method has been used in the custom scheduling.

Method 2 needs more calculation but it is more accurate. This method is used in the helper add-on

dae commented 1 year ago

For the second method, my main concern would be whether the processing time is fast enough. For example, if it takes 10ms that's easy to justify; if it starts growing into the 100ms+ range, that may start to impact the perceived speed of review, and start impacting battery drain. I guess we'd need to do some benchmarks to get an idea of how a card with 10 previous reviews, and maybe 50 previous reviews would perform.

dae commented 1 year ago

The main point bothering me is rs-fsrs has its own short-term schedule Maybe we need develop a independent module for the integration.

Ah, I see. That would work too, and might even be preferable, as I'd like to refactor the current API. I do think it probably makes sense to put the review code in the same crate as the optimizer though, as the two work together and it would be easier to maintain.

L-M-Sherlock commented 1 year ago

Me too. I prefer to continue the development in https://github.com/open-spaced-repetition/fsrs-optimizer-rs

And the method 1 and method 2 are not mutually exclusive. We can develop two methods both.

dae commented 1 year ago

Just saw your reddit post; congrats on the 1 year anniversary :-)

L-M-Sherlock commented 1 year ago