I love Anki but am sufficiently devoted to spaced repetition to want more control over my training. I now spend over half my memory-training time in a custom tool.
This tool uses a much simpler scheduling algorithm: in the case of a correct answer after an interval of length L, the question comes up for review e * L later, where e is Euler's constant. So, if I answer a prompt correctly 5 days after I last saw it, it will come due in roughly 13.6 days. (Except if L is very short--there's a minimum interval of one day.)
This is a very primitive system, and I'm not interested in arguing that it's better than any existing algorithm. It has these virtues, though:
I suspect that the best systems are likely to use machine learning in some form. It took me a long time to come to believe this: existing algorithms have their roots in, for example, systems for moving physical cards between boxes. These algorithms make a certain kind of sense. Their features are each intuitively motivated, and there are enough of them to make you think that the real-world phenomenon is being captured sufficiently well.
But we have computers now. The way to work with the computer, rather than against it, is often to keep it very simple until it can be totally inscrutable.