Skip to content

ScarpeArchitecture.md

Noah Gibbs edited this page Dec 7, 2023 · 3 revisions

Scarpitecture and Design

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.

Scarpe Design

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.