Spacing Algorithms and Implementations

Mnemosyne functions very similarly to SuperMemo-- that is, it asks you a question, you grade it from 0-5, and then the software handles the scheduling for you. In other words, you don't decide when to review the card-- the program decides for you based on your previous performance. I refer to this as the "SuperMemo method." As you grade more cards, the program begins to understand how often you need to do reviews. On the one hand, you have to trust the algorithm; on the other hand, if you don't trust the algorithm, why are you using spaced repetition software?

By contrast, Anki estimates how soon you will next see the card right before you grade it (you are still supposed to grade by difficulty, but the dates are also right there for your consideration). I find this a very bad thing. Coming from SuperMemo, I've learned that the SuperMemo method works, and it works because the human brain is not very good at guessing when it's going to forget something. Although this may seem to be a difference in philosophy, I think it's also a significant difference in practice, and I don't think users are able to judge accurately when they should next see a card. This is something I would not have guessed until I used SuperMemo for six months.

I have been informed that this feature can be turned off with a plugin; I would recommend doing so if you decide to use Anki.

Second, and perhaps most importantly, when you miss a card in Anki, it will show it to you 10 minutes or 20 minutes later (by default, these can be changed in the preferences). By contrast, both Mnemosyne and SuperMemo hold all of the missed cards at the end, making you view all of the cards for the day before repeating any. While Anki's method is no doubt well intentioned-- and perhaps effective for some-- the method I developed with SuperMemo involves writing out all of the questions I missed at the end of the repetition cycle. With Anki, there isn't an easy way to do this; I had to set the clock back several hundred minutes to get a similar "feel," but this is really a hassle and not really practical. So, to use Anki, you can either write the cards out as you miss them, or live without.

Third, in the prefences, you can adjust the parameters of the spacing algorithm. While it's nice to have lots of options, the point of spaced repetition software is to let the algorithm handle the scheduling. You really have to know what you're doing to tinker with the algorithm; while this may be useful to some, I think some casual users might be tempted to change something, and that could have bad results. I really don't think the core of the program should be exposed so simply to the user.

Fourth, the Anki algorithm schedules repetitions in hourly, rather than daily increments. In Mnemosyne and SuperMemo, repetitions are scheduled day by day, and hours don't matter. The reason for this is sleep-- the repetitions are scheduled to sleep cycles, and there is a fair amount of research to support this. It also gives you a nice frame a reference- do your repetitions any time in the 24 hour cycle you set and you're done; repetitions won't keep appearing as time goes on.

The one thing I really appreciate that is uniquely Anki (although it's a real shock to me Anki is the only spaced repetition program here that has this feature) is that it includes "Edit-> Undo", so that if you grade a card wrong, you can reset it. Although this is among the simplest features that you would expect all programs to have, both Mnemosyne and SuperMemo lack it.

The spacing algorithms of Mnemosyne and Anki are nearly the same. However, several of Anki's additional features result in a feel that is different than the SuperMemo/Mnemosyne approach. Although Anki has some fantastic time-saving features (noted in the following section of the review), some of them can lead to creating cards that are not well-formatted if you haven't already learned to format knowledge by using SuperMemo/Mnemsoyne. I think this is largely the result of the differing developer's attitudes and goals for the programs.

SuperMemo was originally developed as a doctoral dissertation, and Mnemosyne is programmed by a professor who is using it to collect data (voluntarily) in a long-term research project on human memory. Anki has no such research focus. Instead, Anki's developer is working to develop spaced repetition software specifically for Japanese. There's nothing wrong with this, but I think Mnemosyne and SuperMemo both benefit immensely from the fact that they are approached not just as software, but as research.

One thing that does bother me about Anki is that I think it's important to give credit where credit is due. On Why Anki? on the Anki website, the creator notes that: "A friend had written a pretty functional spaced-repetition algorithm and recommended it to me." It wasn't acknowledged that this algorithm was based on the SuperMemo one; I had to ask a question on the forums to get an answer to that.

SuperMemo, of course, has the most sophisticated algorithm. Since both Mnemosyne and Anki are based on a early version of the SuperMemo algorithm, it is, in some sense, the "original," although the current algorithm is far more complicated than the ones used in Mnemosyne and Anki. Whether this complication ultimately benefits the user is up for debate. After six months, I found SuperMemo was asking me to repeat my badly memorized cards far too often, and my retention suffered as a result.

Also, because of its complexity, it is far more important to do the SuperMemo repetitions every day; it copes very poorly with even a few missed days. (I missed only two days in six months and I noticed the effects for about a week each time.) By contrast, both Mnemosyne and Anki handle this better.

Of course, SuperMemo has many advanced features not available in Mnemosyne or Anki, most notably incremental reading. But, as spaced repetition software intended for use every day, SuperMemo is very buggy and very frustrating.