Home

Awesome

Awesome Structure Editors Awesome

A list of structural/projectional code editor projects.

Any comments, suggestions? Let us know!

<!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->

Contents

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

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":

ProjectPropertiesDescriptionWritten inโญ๏ธUpdated
Enso๐Ÿ’ต ๐Ÿ“– โคด๏ธ ๐Ÿ‘ถ ฮปHybrid visual+textual programming languageScala, Rust72442024
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 firstHaskell54832024
Lamduโ™ก โŒจ๏ธ ๐Ÿ‘ถ ฮป ๆ–‡Language with live programming and novel UX for type errorsHaskell18472024
Dark๐Ÿ’ต โŒจ๏ธ ๐Ÿ‘ถ ฮป ๐ŸŒPlatform and language as a service for app backends and webF#, ReScript15442024
MPS๐Ÿ’ต โŒจ๏ธ ๐Ÿงฐ ๐Ÿ”จLanguage workbench for projectional languagesJava15052024
Cursorlessโ™ก ๐Ÿ“– ๐Ÿ”จSpoken language for structural code editingTypeScript10162024
SaplingโŒจ๏ธVim/Kakoune-inspired modal structured editor for existing languagesRust6942024
Hazel๐ŸŽ“ โŒจ๏ธ ๐Ÿ‘ถ ฮป ๐ŸŒLanguage with live programming and typed holesReason6482024
JOY.jsโ™ก ๐Ÿ‘ถ ๐Ÿงฐ ๐Ÿ”จ ๐ŸŒ ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆLanguage workbench for programmable demosJavaScript5612018
Fructure๏ฝŸ ๐ŸงฐA projectional editor workbench for Racket-implemented languagesRacket4402024
tylr๐ŸŽ“ โŒจ๏ธ ฮป ๐ŸŒA tiny tile-based editor for well-formedly manipulating sequences of tokensReason2592023
Cirru๏ฝŸA tree editor for ClojureScriptClojure2142023
Holbert๐ŸŽ“ ๐ŸŒA graphical interactive proof assistant designed for educationHaskell1612023
Vlojureโคด๏ธ ๏ฝŸ ๐ŸŒA novel visual UX for ClojureScriptClojure1382022
ProjecturEd๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆGeneral purpose projectional editorCommon Lisp1342022
Tofuโ™ก โ˜•VSCode extension for structured editing of JavaScript and TypeScriptTypeScript972022
Envision๐ŸŽ“ ๐Ÿ‘ถEditor for a Java/C++ like languageC++952022
Subtext๐Ÿ‘ถA series of inspiring presentations and projects exploring ideas in projectional editingTypeScript952022
Eyg๐Ÿ‘ถ ฮป ๐ŸŒMinimal language to enable exploration of alternative editing methodsGleam762024
FreonโŒจ๏ธ ๐Ÿงฐ ๐ŸŒWeb-based Projectional Language WorkbenchTypeScript622023
Forestโ˜• ๐ŸŒA prototype tree editor for TypeScriptTypeScript552023
Lisperantoโ™ก ๏ฝŸ ๐ŸŒIDE for Lisp-like languageJavaScript392022
FoundryฮปA projectional editor for the Morte languageHaskell282024
Gopcaml-mode๐Ÿ“– ฮป ๐Ÿ”จStructural editing Emacs plugin for OCaml codeOCaml212022
Frugel๐ŸŽ“ โŒจ๏ธ ๐Ÿ‘ถ ฮปA research exploring a novel UX for textual entry of codeHaskell172022
Javardise๐ŸŽ“ ๐Ÿ“–Editor for a subset of JavaKotlin12024
SplootCodeโŒจ๏ธ ๐ŸŒA structural editor for Python, aimed towards beginners?-2023
Alfa๐ŸŽ“ ฮปAn editor for Agda which doesn't allow incorrect codeHaskell-2020
OCell๐Ÿ‘ถ ๐ŸŒ??-2020

Unreleased Projects

ProjectPropertiesDescription
RocฮปA performance oriented functional programming language with a structural editor.
Dion Systems
Neurion๐Ÿ’ต ๐Ÿ‘ถ ฮป

Concluded or inactive projects

ProjectTime_PeriodPropertiesDescription
Inflex2020 - 2022๐Ÿ’ต ๐ŸŒ ๐Ÿ‘ถ ฮปA spreadsheet-inspired functional programming language
Intentional software1990s - 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).
Eve2014 - 2018๐Ÿ’ต ๐Ÿ‘ถA startup that made a series of experimental programming systems and was shut down in 2018.
Prune2015An 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).
Novella2019 - 2020A structural editor infrastructure, in 2020 author moved on to develop Inflex instead.
Expressions of Change2017 - 2018
Isomorf2017?๐Ÿ’ต ๐ŸŒ ๐Ÿ‘ถ ฮป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
Omni2013 - 2017๐Ÿ‘ถ
Viskell2015 - 2017ฮปVisual programming meets Haskell
Zinal2015 - 2017๐Ÿ‘ถ
Golem2014 - 2016๐ŸŽ“ ๐Ÿ“– โŒจ๏ธ ๐Ÿ‘ถ ฮป ๏ฝŸ ๐ŸŒOnline tree editor and debugger for Shem, a functional LISP-like language which compiles to JavaScript
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.

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

Spreadsheet-based projects

SystemPropertiesWritten in
Flowsheets?
MeshJavaScript
Object Spreadsheets๐ŸŽ“TypeScript

Other notable projects

Not sure in which category these projects fit in:

SystemPropertiesDescriptionWritten in
Apparatus๐ŸŽ“ ๐ŸŒHybric diagrams editorCoffeeScript
Cycle.js Dev Toolsโ™กDataflow debuggingTypeScript
JSON Editor๐ŸŒJSON schema-based editorJavaScript
Greenfoot/BlueJ๐ŸŽ“Structure-text hybridJava

Resources

Related lists

Community