l3kn / org-fc

Spaced Repetition System for Emacs org-mode
https://www.leonrische.me/fc/index.html
GNU General Public License v3.0
258 stars 31 forks source link

(work-in-progress) Classes, user-defined filters, cards can block other cards #108

Open cashpw opened 1 year ago

cashpw commented 1 year ago

This pull request contains changes addressing:

I've included everything in one pull request as it's become a hassle to maintain separate pull requests here and a merged branch for my own local config. I'm happy to split it up when the time comes to merge things in. This pull request can serve as a center for review in the meantime.

Regarding https://github.com/l3kn/org-fc/issues/106#issuecomment-1336137517: I think my changes to how cards/positions are shuffled should resolve this concern.

TODO:

l3kn commented 1 year ago

Thanks for all this work!

I'll go over what I think are the main components of this and review each.

Classes

I like the idea and implementation of the classes. Instead of using one file for each class, we could e.g. card and position to org-fc-core.el and the review related ones to org-fc-review.el. As org-fc is already split into many larger files I'm fine with either way.

In case different spacing algorithms (with different parameters to track) are supported at some time, we might need to either add a "spacing parameters" field to each position or subclass them for each algorithm, but that can wait.

Blocking Cards

Because I can't see how I would use this in my learning workflow, I don't have an opinion on this. Using IDs to identify blocking cards seems like a good choice and restricting blocking cards to the same file is a reasonable restriction based on the current cache implementation.

Identifying New Cards

What if instead of adding a new -1 box, we used box 0 only for new cards?

Currently when a review fails, the card back to box 0 (with an interval of 0), but I'm not sure that's reasonable.

Here is a nice explanation of the algorithm / scheduling used by Anki: https://www.juliensobczak.com/inspect/2022/05/30/anki-srs.html There are a number of differences to the org-fc algorithm but one thing stands out to me is that failing a review moves a card to the org-fc equivalent of box 1 instead of box 0.

Doing the same in org-fc seems like a very small change that would solve a few problems at once.

l3kn commented 1 year ago

I think I'd like to get started integrating the classes for cards and positions but I'm not sure how to best do so, maybe combining the relevant commit with the changes currently on the develop branch.

As these are significant changes, do you want an "Author:" line in the affected files?