I emphasized ASDF in this particular announcement because it's the topic here, and ASDF is an important part of Seed's stack. The most ASDF-relevant module is this one:
https://github.com/phantomics/seed/blob/master/seed.generate/generate.lisp
The seed.generate package is the core of Seed, and its sprout class wraps ASDF systems. The describe-as-asdf-system method generates a system definition from a sprout. This method parses the I/O specification of a Seed system to generate the ASDF system.
You can see how the I/O specification works in these files.
https://github.com/phantomics/seed/blob/master/demo-drawing/demo-drawing.see... https://github.com/phantomics/seed/blob/master/demo-sheet/demo-sheet.seed
They are my extension to the ASDF model for defining systems. Their :system property is ported directly to the ASDF definition, while the content of the :branches specification also contributes.
I built the slides with the OSX application Keynote. The graphical elements were made in different ways. Some are screenshots of the Seed interface and experimental Seed extensions, some of which I scaled up or changed in other ways through the browser console, like by removing text content to emphasize the layout. Designs like the ones on pages 1 and 15 are SVG graphics done in Inkscape.
Andrew
On 11/01/2017 03:19 PM, Faré wrote:
Looks cool and interesting, and the code looks clean, too (though maybe you should read and take to heart my "asdf best practices" document currently at https://github.com/fare/asdf/blob/master/doc/best_practices.md ).
I'm not sure how ASDF fits in it and that it deserves such prominent part in your annoucement (unless you swap out that part when announcing on other venues, which you should if you didn't yet). Where are your ASDF extensions defined?
However I don't have time to look in detail right now. Still, what technology did you use to produce those slides? They are neat.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Government is a disease masquerading as its own cure. — Robert LeFevre (1911-1986)
On Wed, Nov 1, 2017 at 5:55 PM, Andrew Sengul ml@imagegardenphoto.com wrote:
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