awesome-structure-editors icon indicating copy to clipboard operation
awesome-structure-editors copied to clipboard

A list of projectional and structural editors

Awesome Structure Editors Awesome

A list of structural/projectional code editor projects.

Any comments, suggestions? Let us know!

Contents

  • Foreword
  • Structural code editor projects
    • Unreleased Projects
    • Concluded or inactive projects
  • Blocks Programming Editors
  • Spreadsheet-based projects
  • Other notable projects
  • Related lists

Foreword

Projectional editing is how almost all document editing applications work nowadays, except for editing source code and text documents, where it is still common to edit plain text files that are parsed to render/compile the result.

This document is a list of projects trying to bring the projectional/structural approach to source code editing.

As evident from the wealth of ongoing and concluded attempts listed below, this problem appears to be either difficult, or impossible. Hopefully one or more of these projects will succeed in realising it and bringing it to the mainstream!

Structural code editor projects

This list includes projects which are actively developed or were maintained recently. Currently the bar for incomplete projects is set arbitrarily at 2020.

Project properties are summarized using unicode/emoji "flags":

  • Project structure: ๐Ÿ’ต Commercial, ๐ŸŽ“ Academic, โ™ก Accepts donations
  • UX: ๐Ÿ“– Uses text files, โคด๏ธ Visual programming, โŒจ๏ธ Text editing like UX
  • Target languages: ๐Ÿ‘ถ New language, ฮป Functional, ๏ฝŸ Lisp-based, โ˜• JavaScript/TypeScript, ๐Ÿงฐ Language Workbench
  • Other: ๐Ÿ”จ Is in some production use, ๐ŸŒ Works in browser, ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ Not intended for programmers, ๆ–‡ Localization support
Project Properties Description Written in โญ๏ธ Updated
Enso ๐Ÿ’ต ๐Ÿ“– โคด๏ธ ๐Ÿ‘ถ ฮป Hybrid visual+textual programming language Scala, Rust 5599 2022
Unison ๐Ÿ’ต ๐Ÿ“– ๐Ÿ‘ถ ฮป Code database projected to text-files edited in your text editor of choice. Originally centered around having a projectional editor, but pivoted to creating a cloud programming language first Haskell 4512 2022
Lamdu โ™ก โŒจ๏ธ ๐Ÿ‘ถ ฮป ๆ–‡ Language with live programming and novel UX for type errors Haskell 1779 2022
MPS ๐Ÿ’ต โŒจ๏ธ ๐Ÿงฐ ๐Ÿ”จ Language workbench for projectional languages Java 1322 2022
Dark ๐Ÿ’ต โŒจ๏ธ ๐Ÿ‘ถ ฮป ๐ŸŒ Platform and language as a service for app backends and web F#, ReScript 1116 2022
JOY.js โ™ก ๐Ÿ‘ถ ๐Ÿงฐ ๐Ÿ”จ ๐ŸŒ ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ Language workbench for programmable demos JavaScript 537 2018
Hazel ๐ŸŽ“ โŒจ๏ธ ๐Ÿ‘ถ ฮป ๐ŸŒ Language with live programming and typed holes Reason 478 2022
Sapling โŒจ๏ธ Vim/Kakoune-inspired modal structured editor for existing languages Rust 359 2022
Fructure ๏ฝŸ ๐Ÿงฐ A projectional editor workbench for Racket-implemented languages Racket 355 2020
Cirru ๏ฝŸ A tree editor for ClojureScript Clojure 199 2022
Holbert ๐ŸŽ“ ๐ŸŒ A graphical interactive proof assistant designed for education Haskell 141 2022
ProjecturEd ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ General purpose projectional editor Common Lisp 125 2021
Vlojure โคด๏ธ ๏ฝŸ ๐ŸŒ A novel visual UX for ClojureScript Clojure 112 2022
Envision ๐ŸŽ“ ๐Ÿ‘ถ Editor for a Java/C++ like language C++ 87 2022
Subtext ๐Ÿ‘ถ A series of inspiring presentations and projects exploring ideas in projectional editing TypeScript 86 2022
Tofu โ™ก โ˜• VSCode extension for structured editing of JavaScript and TypeScript TypeScript 86 2022
Freon โŒจ๏ธ ๐Ÿงฐ ๐ŸŒ Web-based Projectional Language Workbench TypeScript 45 2022
Lisperanto โ™ก ๏ฝŸ ๐ŸŒ IDE for Lisp-like language JavaScript 31 2022
Foundry ฮป A projectional editor for the Morte language Haskell 28 2022
Forest โ˜• ๐ŸŒ A prototype tree editor for TypeScript TypeScript 22 2022
Frugel ๐ŸŽ“ โŒจ๏ธ ๐Ÿ‘ถ ฮป A research exploring a novel UX for textual entry of code Haskell 11 2022
Alfa ๐ŸŽ“ ฮป An editor for Agda which doesn't allow incorrect code Haskell - 2020
OCell ๐Ÿ‘ถ ๐ŸŒ ? ? - 2020

Unreleased Projects

Project Properties Description
Roc ฮป A performance oriented functional programming language with a structural editor.
SplootCode A structural editor for Python, aimed towards beginners.
Inflex ๐Ÿ’ต ๐ŸŒ ๐Ÿ‘ถ ฮป A commercial, spreadsheet-inspired functional programming language.
Dion Systems
Neurion ๐Ÿ’ต ๐Ÿ‘ถ ฮป

Concluded or inactive projects

Project Time_Period Properties Description
Intentional software 1990s - 2017 ๐Ÿ’ต Started as a Microsoft project to develop a projectional editor in the late 1990s (see video from 2000), which later spun up as an independent company, which later pivoted to develop a language workbench. Despite being founded and self-funded by a Billionaire, it was ultimately acquired by Microsoft at 2017, with the original projects being cancelled (afaik).
Eve 2014 - 2018 ๐Ÿ’ต ๐Ÿ‘ถ A startup that made a series of experimental programming systems and was shut down in 2018.
Prune 2015 An internal research project in Facebook. Concluded in it "being promising" but according to them "programmers don't spend that much time manipulating programs compared to all the other things they do. Enabling programmers to do a 50% better job of a task requiring 10% of their time just doesn't make economic sense" (redacted quote).
Novella 2019 - 2020 A structural editor infrastructure, in 2020 author moved on to develop Inflex instead.
Expressions of Change 2017 - 2018
Isomorf 2017? ๐Ÿ’ต ๐ŸŒ ๐Ÿ‘ถ ฮป A startup developing an in-browser editor for a language that can appear in a syntax of the user's choosing among a few options appearing like different popular programming language
Omni 2013 - 2017 ๐Ÿ‘ถ
Viskell 2015 - 2017 ฮป Visual programming meets Haskell
Zinal 2015 - 2017 ๐Ÿ‘ถ
Cedalion ? - 2013 ๐ŸŽ“ ๐Ÿ‘ถ

Blocks Programming Editors

Blocks Programming languages/editors are a specific kind of structural programming editors, where the code is structured in a manner similar to "lego blocks" supporting "drag and drop" editing.

System Properties Written in
Alice ๐ŸŽ“ Java
Hopscotch ๐Ÿ’ต ?
Microsoft MakeCode ๐Ÿ’ต ๐Ÿ‘ถ ๐ŸŒ ?
Scratch ๐ŸŽ“ ๆ–‡ ๐Ÿ‘ถ ๐ŸŒ JavaScript
Snap ๐ŸŽ“ ๆ–‡ ๐ŸŒ ?

Spreadsheet-based projects

System Properties Written in
Flowsheets ?
Mesh JavaScript
Object Spreadsheets ๐ŸŽ“ TypeScript

Other notable projects

Not sure in which category these projects fit in:

System Properties Description Written in
Apparatus ๐ŸŽ“ ๐ŸŒ Hybric diagrams editor CoffeeScript
Cycle.js Dev Tools โ™ก Dataflow debugging TypeScript
JSON Editor ๐ŸŒ JSON schema-based editor JavaScript
Greenfoot/BlueJ ๐ŸŽ“ Structure-text hybrid Java

Related lists