A SuperMemo of our own

From Pleasurable Learning
Jump to navigation Jump to search

Current issues with SuperMemo

  • Aged user interface.
  • Aged user experience.
  • Closed-source (propietary) and paid
  • Not so much active development. Many bugs remain unfixed.
  • Lack of support for modern standards such as PDF, markdown, LaTeX.
  • Horrible customer support.

Features that are outdated at a point that become unusable

  • Media
    • Youtube videos don't work properly, incremental video experience is buggy.
    • Recording audio is set to a maximum compression of wav, resulting to an exceedingly low quality audio.
    • Most images are pasted lossy when copy&pasting from the clipboard. This is more noticiable for images that include text such as screenshots.
    • Limited video codec support.
    • GIF images are not properly displayed.
  • Imports
    • Most import methods are broken until SM19 is not released.
    • Import files and folders adds unwanted HTML components with file name, size and date that also sets the element title. This needs to be deleted manually by the user.
  • Scheduling
    • Some stats are collection-wise. That means that the user is forced to create a new collection when the difficulty or performance is sifnifically different than the collection average. It would be nice to restrict certain computations to be branch-wise, or concept-wise. E.g. optimal interval for my chinese branch and optimal interval for "imports folder".

Current state of the Supermemo community

We need to know the current user base of SuperMemo first, including the wanna-be users who doesn't actually use SuperMemo because of a dealbreaker, but they would use it if that dealbreaker is gone.

We need skilled software developers among the SuperMemo community, specially for the early adopters.


Are there software developers skilled enough to built an app as an open source alternative to SuperMemo?

Current state of Piotr Wozniak's vision

SuperMemo for Windows entirely focuses on improving learning strategies, esp. in reference to Incremental Reading. It seeks no compromise in terms of wide appeal. It cannot relinquish control of development. On occasion, Piotr Wozniak can rely on outsourcing the development of subcomponents, however, the choice of tasks and their definition must be determined with complete subservience to the goal of efficient learning. (Adapted from https://supermemopedia.com/wiki/Allow_users_to_contribute_currency_for_fixing_bugs_or_making_specific_improvements_to_SM).


We all know that user experience plays a significant role in the adoption of a product. While we, the existing users, might find satisfaction in mastering the steep learning curve of SuperMemo, wouldn't we want more individuals to discover and enjoy this tool?

Previous attempts for an Open-source SuperMemo

In the 1990s, the concept of open-source SuperMemo was introduced, following the initial achievements of other open-source initiatives. Zoran Maximovic and Piotr Maksimczyk created online versions of SuperMemo, while Luis Gustavo Neves developed SuperMemo for Linux using the SuperMemo 8 codebase.

Tomasz Kuehn initially proposed the idea of an open-source SuperMemo for Linux on October 24, 1997. However, around 2004, the availability of CrossOver software diminished the demand for a native Linux version, consequently affecting the progress of the open-source project. In 2006, Florian Zwicke and Filip Glowacki introduced their own variations, and in 2008, Darek Murakowski revitalized the idea.

Despite these efforts, successful open-source versions of SuperMemo have never emerged, and there has never been a native SuperMemo specifically designed for Linux. Some users sucessfuly used SuperMemo in Linux computers by using Wine or other tools with some main features broken. Keep in mind that runnung SuperMemo on Linux doesn't make it open source. The oposite is true, an open source app doesn't need to run under Linux systems.

Rellevant open-source projects

An honarable mention is SuperMemo Assistant (SMA) which is entirely open-source. SMA is not an app or a replacement for SuperMemo. It is a companion app for SuperMemo 17-18 versions which extends its functionalities through plugins. It has been developed quick hacky as it runs over compiled code. Its has been mostly developed by one person, Alexis.

Gulpereel, an open-source project for a command-line tool for Incremental Reading written in Python. It is currently in very early stage of development.

Logseq, a privacy-first, open-source knowledge base (KPM).

Anki, the most famous open-source flashcard app with Spaced Repetition Software (SRS).

Speki, a source-code command-line app with some IR features.

Incremental Writing plug-in for Obsidian developed by Jamesb

Incremental Reading Anki-addon by vhong, which is an attempt to introduce some of the IR principles into Anki.

Rellevevant propietary projects

Dendro, a webapp that implements a similar experience of Incremental Reading but much simpler.

Incremental Reading (IR)

Incremental Reading has a steep learning curve. SuperMemo, to date, is the only software that implements Incremental Reading (IR) satifying the minimum definition of incremental reading as described by Piotr Wozniak. Even though, his definition of IR seems to be too specific of SM, that is, SM implementation of IR. See Minimal definition of Incremental Reading for more details.

Most of the learning curve comes from IR method itself. So, even with a modern UI, a more intuitive UX etc the paradigm of IR will be the bottleneck. A user is expected to encounter new difficulties, skills to develop across time as well as unlearning bad habits. Hence, there is a limitation of who the app can flatten the learning curve.

What principles should a new SuperMemo-like app have?

  • Open Source
    • License that any fork should keep the license of being kept open-source.
  • Local first
    • Forget about SaaS (software as a service) only.
    • The user owns his or her own data. Therefore, the user can export all data and move to another app at any time.
  • Use of open standards
    • The information is accessible outside of the app, it can be exported to third parties, research can be done, etc.
  • Multi-device support
    • Support for both mobile and desktop versions.
    • All major operative systems are supported: Windows, Linux, Mac, etc.
  • Use of plugins (add-ons)
    • Users can customize their own experience, specially when their motivation contradicts some learning principles of Incremental Reading such as gamification.
  • Support for any modern browser
    • Imports should be possible from Chrome and Firefox and not just Edge as SuperMemo 19 is planned.
  • Accessibility
    • Features aimed at users with color blindness, neurodivergent, etc.
  • A built-in bug report solution
    • Easy and systematic way to report issues and bugs.

Features not found in SuperMemo

Users left feedback and feature requests across the years in Supermemopedia. This list can be useful even today, discarting outdated suggestions for obsolete technologies.

To Mention a few features I personally think are important:

  • Personal Knowledge Management (PKM) features
    • Element level backlinking, internal crossreferencing.
  • Artificial Intelligence, Large Language Models (LLMs) integrated.
  • Information progpagation (as in Anki notes->cards system).
  • Support for formulae language (LaTeX, Mathjax, etc)
  • Undo feature in most contexts and operations.
  • Multiple screen support.
  • Proper UTF-8 support. (SM uses high and low surrogates; text exports are lossy and messy).
  • User interface in multiple languages
  • Customizable keyboard shortcuts (No need to heavily rely on AutoHotKey).
  • Proper levels of UI. Different users can be introduced to IR incrementally and unlock more features, menues, etc.
  • RSS feed support: imagine importing automatically your favorite videos from youtube channels; tweets from somone in Twitter, blog posts from an Author. etc.

Wrath0fLog1c's Shared semantic representation of the project

  1. Create a shared project document: Set up a shared document and repo (I like Google Docs and GitHub, Notion could also work?) that serves as a central hub for all project-related information. This hub will contain a brief yet comprehensive overview of the project goals, proposed features, technical choices, and an organized timeline or roadmap with milestones. Also contains additions and modifications towards the roadmap.
  2. Assign roles and responsibilities: Clearly outline the roles and responsibilities for each participant, along with their focus areas. This will enable everyone to have a more precise understanding of their contribution to the project and accommodate individual preferences and commitments.
  3. Regular check-ins: Set up periodic online meetings for all participants to discuss progress, address concerns, and share updates. This will promote a strong sense of collaboration and ensure that everyone's voices and ideas are heard. I would like to give attention to the need for asynchrony though, because not all of us would be able to participate in these check-ins. Perhaps set up a Twitter account and host a recorded Spaces? We can also use Otter for transcription.
  4. Continuous revision and adaptation: Allow the project document and roadmap to evolve over time. As new information arises or as participants propose changes, update the document to keep everyone informed of the project's current state.
  5. Visual representation: Create a visual representation or mind-map of the project's architecture, components, and dependencies. This will provide a graphical overview of the project's structure and interrelationships, making it easier for participants to absorb information, see the bigger picture, and identify potential areas for collaboration.
  6. Training and support: Encourage participants to share tutorials, resources, and best practices related to the chosen technologies and approaches. This will help everyone develop the necessary skills and knowledge to work cohesively on the project. Like a Collective Knowledge Bank that we can import into our preferred SRS's?

I think this could allow the project to become more unified and manageable, and everyone can continually update their mental framework with new information. This will pave the way for a more efficient, collaborative, and successful development experience for the new SuperMemo app.

Questions

Why do you think SuperMemo for windows remains clozed source?

What do you think it will happen if SuperMemo is open-sourced?

Who will be the main target user base for the Open source SuperMemo?

References

https://supermemopedia.com/wiki/Open_source_SuperMemo

https://supermemo.guru/wiki/Open_source_SuperMemo

https://supermemo.guru/wiki/33rd_anniversary_of_SuperMemo#Open_source_SuperMemo

https://supermemopedia.com/wiki/An_Appeal_to_Open_Source_SuperMemo

https://supermemopedia.com/wiki/Completely_rewrite_SuperMemo

https://forums.ankiweb.net/t/incremental-reading-in-long-term-future/596