Project Roadmap

I come up with new programming projects so quickly that I can barely keep track of them. This is probably why I rarely finish them. But I've been trying to organize them into a dependency graph, so that I can keep track of what's most important to work on and what my next steps are.

As of March 2021, this is the graph:

Project graph Project graph

(Right-click → View Image to see it in more detail.)

Solid lines are hard dependencies. Dotted lines are "would be nice to use X in Y, but can do without it" and/or "X teaches me something that will be crucial for Y."

Most of these projects are just ideas, without even a Git repo. I've listed all of the projects below. If a project actually exists now, its name will be a GitHub link. I may revisit and update this post with progress.

Libraries

  • Schemepunk - A portable standard library for R7RS Scheme. Implements or polyfills dozens of SRFIs across 7 Scheme implementations. Intended as the starting point for Tangled Scheme, a new Scheme dialect.

  • Osmosis - An in-process JSON database with automatic peer-to-peer background synchronization between devices on a local network. Based on CRDTs and UDP service discovery. Makes it easy to keep desktop and mobile copies of an app in sync without a cloud service.

  • Sovereign UI - A write-once-run-anywhere MVVM GUI framework with a client-server model. Clients can be written for different platforms (Android, iOS, Web, Windows, GTK, QT), and servers (apps) communicate with the client via JSON-RPC over stdin/stdout. Should have a templating language and a JSON-RPC API, but (importantly) no library API, making it portable to any language.

  • Webster Engine - A new minimal browser engine based on Reader Mode and accessibility features. Uses ARIA metadata to construct a semantic outline of a page, then intelligently arranges that outline into a readable format. Ignores most CSS. Runs JS, but might break it because it doesn't have a full visual model of the DOM.

Languages

  • Spartan Schema - An ultra-minimal JSON Schema language that focuses solely on type safety.

  • MiniJaspr - A non-Turing-complete configuration expression language embedded in JSON or YAML. In the same family as Jsonnet or Dhall. Semantics inspired by Jaspr.

  • Unnamed JSON Vector Format - A simplified, SVG-like vector graphics format, implemented in JSON. Like what is discussed in this blog post.

  • Tangled Scheme - A new R7RS Scheme dialect. Should support whole-program compilation, a Scheme Language Server, and compilation to JavaScript.

  • Catena - A new approach to statically-typed concatenative languages, like Joy. An experiment, with no planned applications. Will be a blog post in the future.

  • Olm - From One Language, Many. A "write once, run anywhere" language for libraries, with simple core semantics that can be translated to dozens of high-level languages. Will be a blog post in the future.

Apps

  • Various Osmosis-based clones of existing apps:

    • OsmosisBox - Dropbox clone
    • OsmosisPass - Password manager
    • OsmosisNotes - Wiki-style notetaking app
    • OsmosisLinks - Pocket-like link aggregator
    • OsmosisCast - Podcast player with play position sync
  • RSSBerry - RSS reader that intelligently generates a personal homepage by weighing feeds by the inverse of their update frequency. Should incorporate extra data sources supported by Fraidycat. Will probably merge OsmosisLinks and OsmosisCast into this project.

  • Boreal Editor (working title) - A semantic, AST-based code editor, similar in concept to Dark but for any programming language. With pluggable parsing engines, likely based on Datalog. Will be a blog post in the future.

Moonshot Projects

These are projects that I don't expect to even begin working on for years. Some might never be feasible.

  • MostPost - A distributed social network that uses email as a transport, plus direct p2p connections when available. Based on an "old Facebook" model of communication only with direct friends.

  • Webster - A full web browser based on the Webster Engine. A browser that ignores styles and is always in an enhanced Reader Mode, using ARIA metadata to render features like forms and menus. Can fall back to an embedded WebKit engine when necessary.

  • Unnamed Vector Animator - A full-featured SVG and HTML5 editor and animator, similar to Flash. Includes modern features like Google Fonts support and Vector Networks. Should include code editing and debugging.

  • Centipede OS (working title) - A mobile operating system concept based on drag-and-drop visual programming. Every app is also a function, and apps can be scripted by plugging them into other apps with drag-and-drop wires or embedding them as components.