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.see... 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.li...
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