Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/yairchu/awesome-structure-editors

A list of projectional and structural editors
https://github.com/yairchu/awesome-structure-editors

List: awesome-structure-editors

awesome awesome-list projectional-editor structure-editor tree-editor

Last synced: 20 days ago
JSON representation

A list of projectional and structural editors

Awesome Lists containing this project

README

        

# Awesome Structure Editors [![Awesome](https://awesome.re/badge.svg)](https://awesome.re)

A list of structural/projectional code editor projects.

Any comments, suggestions? [Let us know!](https://github.com/yairchu/awesome-structure-editors/issues)

## Contents

- [Foreword](#foreword)
- [Structural code editor projects](#structural-code-editor-projects)
- [Unreleased Projects](#unreleased-projects)
- [Concluded or inactive projects](#concluded-or-inactive-projects)
- [Blocks Programming Editors](#blocks-programming-editors)
- [Spreadsheet-based projects](#spreadsheet-based-projects)
- [Other notable projects](#other-notable-projects)
- [Resources](#resources)
- [Related lists](#related-lists)
- [Community](#community)

## 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](https://enso.org) | ๐Ÿ’ต ๐Ÿ“– โคด๏ธ ๐Ÿ‘ถ ฮป | Hybrid visual+textual programming language | Scala, Rust | [7244](https://github.com/enso-org/enso) | 2024
| [Unison](https://unisonweb.org) | ๐Ÿ’ต ๐Ÿ“– ๐Ÿ‘ถ ฮป | 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 | [5483](https://github.com/unisonweb/unison) | 2024
| [Lamdu](http://www.lamdu.org) | โ™ก โŒจ๏ธ ๐Ÿ‘ถ ฮป ๆ–‡ | Language with live programming and novel UX for type errors | Haskell | [1847](https://github.com/lamdu/lamdu) | 2024
| [Dark](https://darklang.com) | ๐Ÿ’ต โŒจ๏ธ ๐Ÿ‘ถ ฮป ๐ŸŒ | Platform and language as a service for app backends and web | F#, ReScript | [1544](https://github.com/darklang/dark) | 2024
| [MPS](https://www.jetbrains.com/mps/) | ๐Ÿ’ต โŒจ๏ธ ๐Ÿงฐ ๐Ÿ”จ | Language workbench for projectional languages | Java | [1505](https://github.com/JetBrains/MPS) | 2024
| [Cursorless](https://www.cursorless.org/) | โ™ก ๐Ÿ“– ๐Ÿ”จ | Spoken language for structural code editing | TypeScript | [1016](https://github.com/cursorless-dev/cursorless) | 2024
| [Sapling](https://github.com/kneasle/sapling) | โŒจ๏ธ | Vim/Kakoune-inspired modal structured editor for existing languages | Rust | 694 | 2024
| [Hazel](http://hazel.org) | ๐ŸŽ“ โŒจ๏ธ ๐Ÿ‘ถ ฮป ๐ŸŒ | Language with live programming and typed holes | Reason | [648](https://github.com/hazelgrove/hazel) | 2024
| [JOY.js](https://ncase.me/joy/) | โ™ก ๐Ÿ‘ถ ๐Ÿงฐ ๐Ÿ”จ ๐ŸŒ ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ | Language workbench for programmable demos | JavaScript | [561](https://github.com/ncase/joy) | 2018
| [Fructure](https://fructure-editor.tumblr.com) | ๏ฝŸ ๐Ÿงฐ | A projectional editor workbench for Racket-implemented languages | Racket | [440](https://github.com/disconcision/fructure) | 2024
| [tylr](https://tylr.fun) | ๐ŸŽ“ โŒจ๏ธ ฮป ๐ŸŒ | A tiny tile-based editor for well-formedly manipulating sequences of tokens | Reason | [259](https://github.com/hazelgrove/tylr) | 2023
| [Cirru](http://cirru.org) | ๏ฝŸ | A tree editor for ClojureScript | Clojure | [214](https://github.com/Cirru/calcit-editor) | 2023
| [Holbert](http://liamoc.net/holbert) | ๐ŸŽ“ ๐ŸŒ | A graphical interactive proof assistant designed for education | Haskell | [161](https://github.com/liamoc/holbert) | 2023
| [Vlojure](https://vlojure.io) | โคด๏ธ ๏ฝŸ ๐ŸŒ | A novel visual UX for ClojureScript | Clojure | [138](https://github.com/Ella-Hoeppner/Vlojure) | 2022
| [ProjecturEd](https://github.com/projectured/projectured) | ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ | General purpose projectional editor | Common Lisp | 134 | 2022
| [Tofu](https://github.com/Gregoor/tofu) | โ™ก โ˜• | VSCode extension for structured editing of JavaScript and TypeScript | TypeScript | 97 | 2022
| [Envision](http://dimitar-asenov.github.io/Envision/) | ๐ŸŽ“ ๐Ÿ‘ถ | Editor for a Java/C++ like language | C++ | [95](https://github.com/dimitar-asenov/Envision) | 2022
| [Subtext](http://www.subtext-lang.org) | ๐Ÿ‘ถ | A series of inspiring presentations and projects exploring ideas in projectional editing | TypeScript | [95](https://github.com/JonathanMEdwards/subtext10) | 2022
| [Eyg](https://eyg.run) | ๐Ÿ‘ถ ฮป ๐ŸŒ | Minimal language to enable exploration of alternative editing methods | Gleam | [76](https://github.com/crowdhailer/eyg-lang) | 2024
| [Freon](https://www.freon4dsl.dev/) | โŒจ๏ธ ๐Ÿงฐ ๐ŸŒ | Web-based Projectional Language Workbench | TypeScript | [62](https://github.com/projectit-org/ProjectIt) | 2023
| [Forest](https://github.com/tehwalris/forest) | โ˜• ๐ŸŒ | A prototype tree editor for TypeScript | TypeScript | 55 | 2023
| [Lisperanto](https://github.com/uprun/lisperanto) | โ™ก ๏ฝŸ ๐ŸŒ | IDE for Lisp-like language | JavaScript | 39 | 2022
| [Foundry](https://github.com/int-index/foundry) | ฮป | A projectional editor for the Morte language | Haskell | 28 | 2024
| [Gopcaml-mode](https://gitlab.com/gopiandcode/gopcaml-mode) | ๐Ÿ“– ฮป ๐Ÿ”จ | Structural editing Emacs plugin for OCaml code | OCaml | [21](https://github.com/gopiandcode/gopcaml-mode) | 2022
| [Frugel](https://github.com/cdfa/frugel) | ๐ŸŽ“ โŒจ๏ธ ๐Ÿ‘ถ ฮป | A research exploring a novel UX for textual entry of code | Haskell | 17 | 2022
| [Javardise](https://github.com/andre-santos-pt/javardise) | ๐ŸŽ“ ๐Ÿ“– | Editor for a subset of Java | Kotlin | 1 | 2024
| [SplootCode](https://splootcode.io) | โŒจ๏ธ ๐ŸŒ | A structural editor for Python, aimed towards beginners | ? | - | 2023
| [Alfa](https://cth.altocumulus.org/~hallgren/Alfa/index.html) | ๐ŸŽ“ ฮป | An editor for Agda which doesn't allow incorrect code | Haskell | - | 2020
| [OCell](http://kevinmahoney.co.uk/ocell/) | ๐Ÿ‘ถ ๐ŸŒ | ? | ? | - | 2020

### Unreleased Projects

| Project | Properties | Description
|--------:|:----------:|:------------
| [Roc](https://www.roc-lang.org) | ฮป | A performance oriented functional programming language [with a structural editor](https://youtu.be/ZnYa99QoznE?t=5864).
| [Dion Systems](https://dion.systems) | |
| [Neurion](https://neurion.co) | ๐Ÿ’ต ๐Ÿ‘ถ ฮป |

### Concluded or inactive projects

| Project | Time_Period | Properties | Description
|--------:|:------:|:----------:|:------------
| [Inflex](https://chrisdone.com/posts/inflex/) | 2020 - 2022 | ๐Ÿ’ต ๐ŸŒ ๐Ÿ‘ถ ฮป | A spreadsheet-inspired functional programming language
| [Intentional software](https://en.wikipedia.org/wiki/Intentional_Software) | 1990s - 2017 | ๐Ÿ’ต | Started as a Microsoft project to develop a projectional editor in the late 1990s (see [video from 2000](https://youtu.be/tSnnfUj1XCQ)), 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](https://en.wikipedia.org/wiki/Charles_Simonyi), it was ultimately acquired by Microsoft at 2017, with the original projects being cancelled (afaik).
| [Eve](https://futureofcoding.org/essays/eve/) | 2014 - 2018 | ๐Ÿ’ต ๐Ÿ‘ถ | A startup that made a series of experimental programming systems and was shut down in 2018.
| [Prune](https://twitter.com/KentBeck/status/634802168508235777) | 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](https://github.com/chrisdone/novella) | 2019 - 2020 | | A structural editor infrastructure, in 2020 author moved on to develop Inflex instead.
| [Expressions of Change](https://www.expressionsofchange.org) | 2017 - 2018 | |
| [Isomorf](https://isomorf.io/#!/) | 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](https://github.com/daniel-kun/omni) | 2013 - 2017 | ๐Ÿ‘ถ |
| [Viskell](https://github.com/viskell/viskell) | 2015 - 2017 | ฮป | Visual programming meets Haskell
| [Zinal](https://gitlab.com/nickcollins/zinal) | 2015 - 2017 | ๐Ÿ‘ถ |
| [Golem](http://xixixao.github.io/Golem/) | 2014 - 2016 | ๐ŸŽ“ ๐Ÿ“– โŒจ๏ธ ๐Ÿ‘ถ ฮป ๏ฝŸ ๐ŸŒ | Online tree editor and debugger for [Shem](https://github.com/xixixao/Shem), a functional LISP-like language which compiles to JavaScript
| [Cedalion](http://cedalion.sourceforge.net) | ? - 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](http://www.alice.org) | ๐ŸŽ“ | Java
| [Hopscotch](https://gethopscotch.com) | ๐Ÿ’ต | ?
| [Microsoft MakeCode](https://makecode.com) | ๐Ÿ’ต ๐Ÿ‘ถ ๐ŸŒ | ?
| [Scratch](https://scratch.mit.edu) | ๐ŸŽ“ ๆ–‡ ๐Ÿ‘ถ ๐ŸŒ | JavaScript
| [Snap](https://snap.berkeley.edu) | ๐ŸŽ“ ๆ–‡ ๐ŸŒ | ?

## Spreadsheet-based projects

| System | Properties | Written in
|--------------------------------------------------------------------:|:----------:|:--------------
| [Flowsheets](http://tinyletter.com/Flowsheets/) | | ?
| [Mesh](https://github.com/chrispsn/mesh) | | JavaScript
| [Object Spreadsheets](https://sdg.csail.mit.edu/projects/objsheets) | ๐ŸŽ“ | TypeScript

## Other notable projects

Not sure in which category these projects fit in:

| System | Properties | Description | Written in
|--------------------------------------------------------------:|:----------:|:-------------------------|:--------------
| [Apparatus](http://aprt.us) | ๐ŸŽ“ ๐ŸŒ | Hybric diagrams editor | CoffeeScript
| [Cycle.js Dev Tools](https://cycle.js.org) | โ™ก | Dataflow debugging | TypeScript
| [JSON Editor](https://github.com/json-editor/json-editor.git) | ๐ŸŒ | JSON schema-based editor | JavaScript
| [Greenfoot/BlueJ](https://www.greenfoot.org/) | ๐ŸŽ“ | Structure-text hybrid | Java

## Resources

### Related lists

- [The whole code catalog](https://futureofcoding.org/catalog/) - An in-depth review of 23 structural and low-code projects by Steve Krouse from 2019. Sponsored by Dark.
- [Gallery of programming UIs](http://alarmingdevelopment.org/?p=1068) - By Jonathan Edwards.
- [Visual Programming Languages - Snapshots](http://blog.interfacevision.com/design/design-visual-progarmming-languages-snapshots/) - By Eric Hosick.

### Community

- [Reddit: /r/nosyntax](https://www.reddit.com/r/nosyntax/) - A subreddit about projectional/structural editing.
- [Future of Coding](https://futureofcoding.org/community) - A Slack-based community with a wider focus.
- Conferences:
- [LIVE Programming workshop](https://liveprog.org) - An annual workshop at the SPLASH conference mainly focused on live programming.