Introducing Seed, an interactive software environment built on ASDF

Andrew Sengul ml at imagegardenphoto.com
Thu Nov 2 06:56:08 UTC 2017


On 11/01/2017 07:00 PM, Faré wrote:
>> 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.
>>
> What is the granularity of your seeds?
I'm not sure what you mean, by granularity are you referring to the size
of the minimum viable Seed system? It could be just a folder containing
an .asd file and a .seed file. You'd probably want a .lisp source file
in there to do much of anything interesting. Less orthodox arrangements
could work too.

When I first joined this list in July 2016 I asked a question about the
possibility of using ASDF to build systems with source code that didn't
come in files but from lists stored in variables in the running Lisp
instance. Implementing a feature like that would make Seed more flexible.
>
>> 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
>>
> I admit the semantics is not obvious. Maybe some documentation could help.
> Otherwise, the code looks very clean, but I really don't have time for it now.
> Thanks for advertising on the list, though -- your announcement is most welcome.
I understand, the I/O spec definitely needs documentation. When you have
time, you may get some understanding of how the system works by reading
the definitions for the I/O media here:

https://github.com/phantomics/seed/blob/master/seed.media.base/media.base.lisp

Each of the media has a comment that describes what it does. And to
understand how these specifications are used, take a look at the big
"till" macro in seed.generate/generate.lisp.

The main thing to understand is that it's a dataflow language. Each
successive form like (set-time) and (codec) is passed the input data,
does something to it and passes it to the next form in the list. So the
till macro transforms something like "(set-time) (do-something) (codec)"
to "(codec (do-something (set-time original-data)))." With this
language, I can implement things like clipboards and undo history in
unique ways for different systems.
>
>> 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.
>>
> Thanks.
>
> BTW, are you around NYC or are you passing by in 2018? You could give
> a talk at Lisp NYC.
I'm located on the West Coast but I could be over there sometime; that
would be great. Thanks for your feedback,

Andrew




More information about the asdf-devel mailing list