Hi everyone,
I've created a new software environment based on Common Lisp and it'd be great to get your feedback. Called Seed, this system can be used to create Lisp programs and interact with them in many ways. It's a bit like a web-based IDE, but unlike most IDEs, it uses a visual programming language as its foundation.
Seed displays Lisp code in the form of an interactive tree grid. It's possible to create customized interface elements within the tree grid; these elements are converted into Lisp code for compilation. A simple example is a color picker for use choosing colors inside a HTML template. Drop-downs and toggle switches are also easy to insert, and these elements can be composited to create more sophisticated interfaces. And unlike Emacs and other editors that are designed around text files, Seed is designed around editing ASDF systems.
When using Seed, the top-level interactive elements are called "systems" - contrast to "buffers" in Emacs. Each Seed system is an ASDF system with particular extensions. Specifically, Seed systems all have a .seed file in their source directory that defines their behavior within the scope of the Seed environment.
Check out this video to see Seed in action and a brief tutorial:
This is a slide deck that goes into further detail:
https://www.dropbox.com/s/ssjd05bmrfnzg5e/SeedPresentationTechnical.pdf?dl=0
I don't know if Seed is the first general-purpose visual programming environment, but I'm sure its paradigm is among the most flexible. It is implemented as a Web application, with each atom and form within a Lisp program represented by a module manifested using the React framework for JavaScript. Because Seed's interface is implemented in React, the entire ecosystem of React components can be brought to bear when building custom software interfaces.
Ready to try Seed out yourself? It's free software and the repo is here:
https://github.com/phantomics/seed
The installation instructions start here:
https://github.com/phantomics/seed#the-first-step-installing-and-running-see...
Read the usage tutorial here:
https://github.com/phantomics/seed/wiki/Introductory-Tutorial
So far, only SBCL has been tested. This is alpha software and you will encounter bugs aplenty.
I envision Seed as something that could one day encompass most of the desktop productivity functions that people now use office apps for. The data-driven nature of the interface will make it easy to mash up and modify these tools to design custom workflows.With Lisp's homoiconicity it may even be possible to develop machine learning algorithms to tailor Seed systems to the jobs they're intended to do. Emacs has always been seen as the flagship of Lisp-based environments, but because of its byzantine interface and its tight coupling to the text buffer as the main interactive unit, I can't see a future where Emacs is usable by regular people for desktop productivity. I think Seed may be able to get there.
Let me know what you think of Seed, particularly as an ASDF use case. Best,
Andrew Sengul