Introducing Seed, an interactive software environment built on ASDF
Andrew Sengul
ml at imagegardenphoto.com
Wed Nov 1 23:18:39 UTC 2017
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.seed
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 at 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:
>>
>> https://vimeo.com/237947324
>>
>> 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-seed
>>
>> 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
>>
>>
More information about the asdf-devel
mailing list