Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update v3 scheduler section #33

Merged
merged 20 commits into from
Sep 7, 2024
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 30 additions & 33 deletions src/the-2021-scheduler.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ scheduler](./the-anki-2.1-scheduler.md) ("v2").

brishtibheja marked this conversation as resolved.
Show resolved Hide resolved
As of Anki/AnkiMobile 23.10, and AnkiDroid 2.17, the v3 scheduler is the default and only option.

On older versions, the scheduler can be changed in the preferences screen.
On earlier versions, the scheduler can be changed from the preferences screen.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note for future PRs: are changes like this line really improving legibility? They feel more like change for the sake of change, though I'm aware the fact that I'm a native English speaker may be biasing my perceptions.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The preposition from felt more natural here. Although, I agree I could've kept the in in there.

As for the word old, I think it comes with a negative connotation oftentimes. Using earlier is neutral and is more clear. One might think, because they downloaded Anki a few months ago, it's probably not "old".


## Compatibility

Expand All @@ -24,16 +24,14 @@ Client support:

Because the v3 scheduler uses a different approach to gathering and sorting
cards, a v2 and v3 client may show a different number of due cards on a given
day, and may show them in a different order. Please bear this in mind if you're
using a client that is still only supports v2.
day, and may show them in a different order.

## Changes

### Undo

The v3 scheduler uses Anki's new undo infrastructure - you can answer a card,
bury a different card, and answer another card, then undo each one in turn if
you wish. Previous schedulers handled undo separately, so a non-review action
The v3 scheduler uses Anki's new undo infrastructure: you can answer a card,
bury another card, answer a different card, then undo each action in turn. Previous schedulers handled undo for review and non-review actions separately, so a non-review action
would clear the review history, and vice versa.

### Daily limits
Expand All @@ -46,10 +44,10 @@ worse.

If you find this happening, the recommended solution is to increase your review limit, and work through
the backlog before you add more new cards. If you're sure you want to add more new cards
even though you have a backlog, you can enable the "new cards ignore review limit" option
in the deck options.
even though you have a backlog, you can enable the "New cards ignore review limit" option
in deck options.

Each deck's limit affects the number of cards that will be drawn from that deck
Each deck's limit affects the number of cards that will be gathered from that deck
and its subdecks. Limits are applied from the deck you select, so if you select
a child deck, its parents' limits will not apply. For example, with the
following limits:
Expand All @@ -62,12 +60,12 @@ following limits:

Then:

- If you click on Grandchild3, you'll get up to 200 cards.
- If you click on Grandchild2, you'll get up to 5 cards.
- If you click on Grandchild1, you'll get up to 50 cards.
- If you click on Child, you'll get up to 30 cards from the Child deck and its
- If you click Grandchild3, you'll get up to 200 cards.
- If you click Grandchild2, you'll get up to 5 cards.
- If you click Grandchild1, you'll get up to 50 cards.
- If you click Child, you'll get up to 30 cards from the Child deck and its
subdecks. No more than 5 cards will be taken from Grandchild2.
- If you click on Parent, you'll get up to 100 cards, with a maximum of 30
- If you click Parent, you'll get up to 100 cards, with a maximum of 30
coming from Child and its subdecks.

In the v3 scheduler in earlier Anki releases, intermediate limits were not
Expand All @@ -80,7 +78,7 @@ Additional deck options have been added to control the order new cards and
reviews are presented in. New cards can be mixed from multiple decks, and
reviews can optionally be ordered by interval or subdeck.

When burying is disabled, it is now possible to control whether siblings are
When burying is disabled, with v3 scheduler it's possible to control whether siblings are
brishtibheja marked this conversation as resolved.
Show resolved Hide resolved
shown together or not, by adjusting the display order.

The options controlling the mixing of new cards and interday learning cards have
Expand All @@ -90,17 +88,16 @@ be used from the deck you select to study.
### Burying

When burying is enabled, cards are now excluded from the queues at the start of
a study session. Previously if you had 10 forward and 10 reverse cards, the
counts would start at 20 and jump down as you review, but now they'll start directly
at 10. The actual burying still happens as you review cards.
a study session. Previously if you had 10 forward and 10 reversed cards, the
counts would start at 20 and jump down as you review, but with v3 they'll start directly
at 10.

Because exclusion is done when you click on a deck, the counts you see on the deck
Because burying is done when you click on a deck, the counts you see on the deck
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is wrong. Cards are skipped during gathering if a sibling has been seen. No cards are buried until you actually answer the sibling.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It wasn't very clear to me what is "exclusion" so I thought it's burying. Can you rewrite this?

dae marked this conversation as resolved.
Show resolved Hide resolved
list will differ from the ones you see when you click on a deck. The overview screen
will point out the number of cards that will be buried.
will point out the number of cards that will be buried in grey.
dae marked this conversation as resolved.
Show resolved Hide resolved

Learning cards that cross a day boundary can now be buried like reviews and new
cards, and there is a new option available that controls whether they should be buried
or not.
In the v3 scheduler, learning cards that cross a day boundary can be buried like review and new
cards.
brishtibheja marked this conversation as resolved.
Show resolved Hide resolved

### Fuzz

Expand All @@ -114,24 +111,24 @@ smoothly as intervals increase.
### Interday learning

Interday (1+ day) learning cards are now subject to the review limit. When
brishtibheja marked this conversation as resolved.
Show resolved Hide resolved
determining what fits within the limit, Anki fetches interday learning cards
first, then reviews, and finally new cards.
determining what fits within the limit, Anki gathers interday learning cards
first, then review cards, and finally new cards.

### Filtered decks

Filtered decks with rescheduling disabled now show 4 buttons - the provided
delay applies to the Again button, and Hard/Good will use 1.5x and 2x the
provided delay. Easy will remove the card.
Filtered decks with rescheduling disabled show 4 answer buttons. You can configure a time delay for each button. Setting this delay to 0 makes a button remove the card from the deck.

In earlier versions, a single delay was provided for Again. Hard used 1.5x the provided delay, whereas Good used 2x of the delay.
Easy removed the card.
brishtibheja marked this conversation as resolved.
Show resolved Hide resolved

## Add-ons and custom scheduling

The new scheduler is a ground-up rewrite, so add-ons that modified the old
scheduler's card gathering or answering routines will no longer work. It is no
The v3 scheduler is a ground-up rewrite, so add-ons that modified the previous scheduler's card gathering or answering routines doesn't work with it. It is no
brishtibheja marked this conversation as resolved.
Show resolved Hide resolved
longer possible to selectively replace parts of the scheduler's code ("monkey
patching"), so some add-ons may not be practical to port without significant
effort.

The new scheduler does provide some control over the scheduling however. As each
However, the v3 scheduler does provide more control over the scheduling. As each
card is presented, the times and states associated with each answer button are
calculated in advance, and it is possible to modify the calculated scheduling
with some JavaScript code entered into the bottom of the deck options screen.
Expand Down Expand Up @@ -173,8 +170,8 @@ if (states.good.normal?.review) {
```

Because this is implemented in JavaScript, it is not limited to the computer
version. AnkiMobile and AnkiDroid both support it as well, and AnkiWeb may
support it in the future too. This will allow advanced users to make
version. AnkiMobile and AnkiDroid both support it as well, and AnkiWeb may also
support it in the future. This will allow advanced users to make
adjustments to the standard scheduling behaviour, that apply on all platforms.

The various scheduling states are described in SchedulingStates [here](https://github.com/ankitects/anki/blob/main/proto/anki/scheduler.proto).