Back

Ki: An open source program for collaborative spaced-repetition learning

A command-line tool to enable collaboration on open source, spaced-repetition learning resources via GitHub

Voting is closed for this event.

langfield.github.io/ki
Ki: An open source program for collaborative spaced-repetition learning

About this idea

To motivate the topic of spaced-repetition learning software, here are two
quotes from the Wikipedia pages on the German psychologist Herman Ebbinghaus,
and the concept of spaced-repetition, respectively:

In 1885, Herman Ebbinghaus published his groundbreaking Über das Gedächtnis
(“On Memory”, later translated to English as “Memory. A Contribution to
Experimental Psychology”) in which he described experiments he conducted on
himself to describe the processes of learning and forgetting.

Ebbinghaus made several findings that are still relevant and supported to this
day. First, Ebbinghaus made a set of 2,300 three letter syllables to measure
mental associations that helped him find that memory is orderly. Second, and
arguably his most famous finding, was the forgetting curve. The forgetting
curve describes the exponential loss of information that one has learned.
The sharpest decline occurs in the first twenty minutes and the decay is
significant through the first hour. The curve levels off after about one day.

Spaced repetition is a method that uses knowledge of this forgetting curve to
increase the efficiency of the learning process, where the subject is asked to
remember a certain fact with the time intervals increasing each time the fact
is presented or said. If the subject is able to recall the information
correctly the time is doubled to further help them keep the information fresh
in their mind to recall in the future. With this method, the patient is able to
place the information in their long-term memory. If they are unable to remember
the information they go back to the previous step and continue to practice to
help make the technique lasting (Vance & Farr, 2007).

Anki is an open-source spaced repetition flashcard program for Windows, macOS,
Linux, Android, and iOS. Widely used by the medical student community [1] (some
estimates suggest roughly half of all US medical students use Anki for
studying) and gaining popularity in the hard sciences [2], this software exists
to help users retain large swaths of material over very long time periods.
However, the internal data format suffers from a number of flaws, chief among
them its incompatibility with most existing collboration software (e.g. version
control systems like git, svn, hg, fossil, or document editors like overleaf,
google docs, etc). The Anki community has already experienced growing pains
related to this issue, and the largest collaborative deck effort, the massive
AnKing deck created for 1st-3rd year medical students, uses a complicated
installation/update process in order to faciliate user-provided corrections to
its content. [3] A system for converting Anki collections to and from
traditional version control formats would go a long way in resolving this
issue.

More concerningly, the user community of Anki is largely at the mercy of
organizations with no oversight [4], who control and gatekeep access to
user-created content on privately-owned servers. Without exception, all
user-created content is hosted on a single server owned by a single individual,
and if this server goes down, loses funding, or experiences data loss, the
community could permanently lose access to decades of its own data. On top of
this, organizations like the AnKing group [5] have begun work on monetizing
this user-created content, breaking the tradition of keeping Anki-related
software free and open source, and charging subscription fees for access to
collaborative deck edits via their commercial, proprietary tool.

The `ki` command-line tool aims to solve all of these issues via a simple
invertible transformation of the underlying SQLite3 database (a
machine-readable-only format) into a directory tree of markdown files (a very
human-readable format). By enabling conversions to and from a format that can
easily be put under version control, `ki` will allow collaboration on
spaced-repetition decks in exactly the same way millions of software engineers
collaborate on open-source projects: by making peer-reviewed edits to a single
source of ground-truth hosted on a public, resilient archive (e.g. GitHub.com)
under an open-source license (enforcing free access to all derivative works).

Hundreds of hours of work have already been put into developing this tool, all
unpaid. It is already a minimum viable product, and usable by developers
willing to put up with a rough-around-the-edges UI and the potential for
occasional bugs and crashes. The source code is freely available on GitHub [6].

A particular emphasis has been placed on writing clean, user-friendly
documentation [7] which demonstrates usage patterns and details the tool’s
capabilities.

[1] (https://www.reddit.com/r/medicalschoolanki/)

[2] See Michel Nielsen’s essay here:
https://cognitivemedium.com/srs-mathematics

[3] https://www.ankipalace.com/step-1-deck

[4] https://ankiweb.net/account/privacy

[5] https://www.ankihub.net/coming-soon

[6] https://github.com/langfield/ki/blob/main/ki/__init__.py

[7] https://langfield.github.io/ki/