Skip to content
Noah Gibbs edited this page Sep 21, 2023 · 52 revisions

Welcome to the Scarpe wiki!

Scarpe is a reimplementation of Shoes using Webview and a modular backend. Shoes is a friendly little Ruby-based API. It's designed to make UI apps, full of windows and lists and text, in the same way that Ruby on Rails is designed to make web applications that run on a server and use a browser.

Contributing

"Where do I start? What's a good first issue?" Glad you asked!

Some eternal good first issues:

Eventually you can get into all kinds of interesting things. Make progress on getting Hackety-Hack running? Write a new display service? Get a new platform working? Make progress in a major direction? Up to you.

Scarpe, Lacci and Scarpe-Components

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 Notes

Video walkthrough of the Scarpe code, Sept 2023

Philosophy

Why Shoes? Why Scarpe? Why _why?

Working on Scarpe

Shoes API (not necessarily Scarpe)

This includes older Shoes API research, things that are true in some Shoes implementations but not others, and of course also things that are broadly true including in Scarpe.

Display Service Notes

Other and Miscellaneous