HOME
host
tags
MUFFET
+1 affinity with arachnids.
muffet source[1] - last update : June 15 2025
example slov db[2] - last update : who cares? (format doesn't change)
a static site generator with aspirations to web crawler
Muffet builds a large avl tree which contains many avl trees linking every which way which allows for non-directed graph walks, as well as hierachical views. The easiest way to visit every node is a walk from host to children, and this is done several times during the creation of the tree.
Unlike slov[3] muffet assumes there is a schema key value pairs, HOST, BREF, TYPE are used as they were in oscean, lists LINK and BODY also follow the same pattern. An additional list TAGS is a list of internal references to create additional hubs. Previously we had a tag line with several links like this.
TAGS:fear[4]homestuck[5]black[6]mind[7]documentation[8]
which was increadibly clunky to manage. The new way is nicer all around.
Muffet gracefully handles nodes in slov which do not follow this schema, or partially follow it, they will simply not be traversable from the main tree after generation.
to build simply run mk.
to install run mk install.
create directorys /lib/muffet/gemini /lib/muffet/html
to execute first ensure slov is running and populated then use : muffet > out
where 'out' is the flat rendering of the site.
The gemini files will be placed in /lib/muffet/gemini with .gmi extention. Html files are placed in /lib/muffet/html with the .html extention.
It is possible to configure different output paths by changing a global string.
If there are any nodes with TYPE text and there is a filename in cannonical form (lowercase and spaces swapped with _) in /lib/muffet/media/txt then that file's contents will be read into the body of the matching node. Similarly, if there is a matching cannonname.png in /lib/muffet/media/bg that will be used as the background image for the generated page. In the future TYPE html should read in the document for matching files in /lib/muffet/media/html and /lib/muffet/media/gemini, however I have yet no desire to add this feature set. Feel free to abuse plan9 binding to build the namespace to work with your http server.
Current everyday use of muffet has become streamlined through the use of few helper scripts updatesite[9], updateall[10], and feeder[11]
If for some reason someone decides to use this and has further questions let me know and I'll[12] try to help
Muffet will also generate RSS[13] and Atom[14] feeds as well as format a gemini feed[15] compatible with gemini style subscription.
April 2025 update - Now supports lists as inline to the body where they are referenced rather than just a link to a page with that list and nothing else. Example pages that use this now are bookmarks[16] and denpa_webring[17].
June 2nd 2025 update - Added buffered writing to html and gmi files, which then compare against the previously generated files. If they differ (by content) then the new one replaces the old one. This does speed up muffet when run with ramfs -p, but it was implemented to make it so the updatesite script can selectivly send only the updated files by comparing date modified. This comparison makes use of lsdif[18]
June 15th 2025 update - reworked html page generation for new page layout