-
Notifications
You must be signed in to change notification settings - Fork 28
ScarpeArchitecture.md
Video walkthrough of the Scarpe code, Sept 2023
There are lots of pieces of Scarpe, including Scarpe, Lacci and Scarpe-Components. What are those?
Scarpe is a project to reimplement Shoes, and also a Webview-based display service. Lacci is the name of the display-independent Shoes DSL that was created as part of all this. There's also Scarpe-Wasm, a Webassembly-based display service that relies on Lacci, but not on Scarpe-the-Webview-display-service. Frankly, we need a better name for Scarpe overall, or else for the Webview display service.
There are a lot of common, reusable components in Scarpe. For instance, there's no reason another display service couldn't use the same modular logger as in Scarpe-Webview, or the same simple printout logger from Scarpe-Wasm. Scarpe-Webview and Scarpe-Wasm share a lot of common pieces, such as the Ruby-based HTML-rendering DSL and the YAML-based segmented file format. These common reusable components are included in Scarpe-Components. That way a display service can include Scarpe-Components, choose which pieces to use and require the appropriate gems to make them work. Lacci and Scarpe-Components are kept intentionally very low in dependencies so that a display service can use just a few pieces from them without depending on gems with native extensions or library dependencies like Nokogiri or Bloops.
"Scarpe" means "shoes" in Italian, while "lacci" means "laces" or "shoelaces." "Scarpe-Components" is ancient Etruscan for "spiders" (no, not really.)
While most Scarpe-Components are fairly small and straightforward, Calzini is a complex HTML renderer with more interesting pluggability.
There's a big page of Scarpe design links
There's also various feature brainstorming, which are sort of design pages before they're implemented.
A lot of our design is related to Shoes3 archaeology.