st3v3nmw / obsidian-spaced-repetition

Fight the forgetting curve by reviewing flashcards & entire notes on Obsidian.md
https://www.stephenmwangi.com/obsidian-spaced-repetition/
MIT License
1.46k stars 182 forks source link

[FEAT] sm-2 is outdated, can you please replace it with the fsrs algorithm? #748

Open lacanzizek opened 11 months ago

lacanzizek commented 11 months ago

sm-2 is outdated, can you please replace it with the fsrs algorithm?

https://github.com/open-spaced-repetition/fsrs4anki

SubZeroX commented 10 months ago

Yes, this will be really great!

reinvanimschoot commented 7 months ago

Is there any update on this? Is this something that is in the pipeline?

ronzulu commented 7 months ago

Hi @reinvanimschoot thanks for the prompt, I just looked at https://github.com/open-spaced-repetition/fsrs4anki now.

Seems very well researched.

I'll have a look at how easy/difficult it would be to integrate, and post back here hopefully in a week or so.

Cheers Ronny

reinvanimschoot commented 7 months ago

@ronzulu awesome!

MotaOcimar commented 7 months ago

Hey guys! This issue has already been addressed in https://github.com/st3v3nmw/obsidian-spaced-repetition/issues/516.

Additionally, a working implementation was made: https://github.com/open-spaced-repetition/obsidian-spaced-repetition-recall

It seems like an attractive idea to combine the two projects. But I don't know how hard it can be

ronzulu commented 7 months ago

Hi @MotaOcimar thanks for letting us know, I hadn't come across it before.

The project you reference https://github.com/open-spaced-repetition/obsidian-spaced-repetition-recall is a fairly up-to-date fork from our project itself.

It seems like an attractive idea to combine the two projects. But I don't know how hard it can be

Definitely worth investigating. If it doesn't work out, I'm sure looking at obsidian-spaced-repetition-recall will make it significantly easier for us to bring FSRS functionality into this project.

Thanks once again!

Newdea commented 7 months ago

hi @ronzulu , glad to see you're planning to do this, this branch https://github.com/open-spaced-repetition/obsidian-spaced-repetition-recall works fine for now.

Please let us know if there is anything we can do to help.

If you're going to use this algorithm, the data structure of the cards will need a major refactoring. because I'm modifying it based on the master branch, it's a bit messy in that regard.

ronzulu commented 7 months ago

Hi @Newdea thank you so much for your kind offer, and all the work in creating the https://github.com/open-spaced-repetition/obsidian-spaced-repetition-recall branch.

I'm wondering if integrating the FSRS algorithm actually required the alternate tracked_files.json data store, or if you just preferred it.

I understand that the FSRS algorithm needs to keep track of much more information compared with SM-2, and keeping all that extra data in HTML comments would look ugly. Perhaps even distracting away from the questions. Is this the reason why you chose to integrate https://github.com/martin-jw/obsidian-recall?

Thanks Ronny

Newdea commented 7 months ago

hi Ronny,

I'm wondering if integrating the FSRS algorithm actually required the alternate tracked_files.json data store, or if you just preferred it.

I understand that the FSRS algorithm needs to keep track of much more information compared with SM-2, and keeping all that extra data in HTML comments would look ugly.

Just as you said, I like to keep notes clean without extra html comments, so that i can edit/share note easily. Beside, if using html comments, when reviewing notes/cards, the modify time of note file(*.md) will change, that will affect me when i hope look notes by modify time. Of course, with Fsrs algorithm, card has more properties, if using html comments, when we edit note, we may change that by accident, then ahh .......

Therefore, I prefer to use separate file to save these data.

ronzulu commented 7 months ago

Thanks, so I think its reasonable for the dataStore functionality to be integrated into OSR, first as a standalone exercise:

As per: [FEAT] Stop using YAML; Move plugin info and data to separate file .

Newdea commented 7 months ago

Yeah, looking forward to your result.

TolgaKerem07 commented 4 months ago

If what you said last comes true, it will literally be a gamechanger. You are amazing

L-M-Sherlock commented 4 months ago

FSRS has been integrated into RemNote recently.

Source: https://feedback.remnote.com/changelog/remnote-1-16-ultimate-spaced-repetition

ronzulu commented 4 months ago

Thanks @L-M-Sherlock, out of curiosity do you have personal experience with FSRS?

L-M-Sherlock commented 4 months ago

Of course. And I'm the author of FSRS.

4Source commented 3 months ago

It would be great if we implement it so it is possible to switch between different algorithms

ronzulu commented 3 months ago

It would be great if we implement it so it is possible to switch between different algorithms

Probably a necessity. I think that once we implement FSRS, the algorithm would still default to the current one, and that users would need to explicitly select FSRS.

I haven't looked at it for a few months, but @Newdea's project https://github.com/open-spaced-repetition/obsidian-spaced-repetition-recall could give us some ideas about this.

Because of the greater data requirements of FSRS, @Newdea doesn't support that algorithm with data stored in the markdown file itself (see earlier in this thread).

ronzulu commented 2 months ago

Hi all

I have completed the design changes that were required before being able to implement the enhancement requested here.

Those changes are available for beta testing at https://github.com/st3v3nmw/obsidian-spaced-repetition/pull/1006. If you are able to do any testing, that would be appreciated. It would assist on the path of getting a more robust plugin with this feature implemented.

Thanks Ronny