Scrap Exchange

A unified backend service for storing scraps of code across all of Skia Infrastructure's services.

Overview

Skia Infrastructure currently has services that store scraps of code, such as https://particles.skia.org. The term ‘scrap’ implies that the code can not stand on its own, such as the JSON that underlies particles, or SkSL shaders.

Scrap Exchange is a unified backend service that is constructed to make it easier to stand up such web UIs, and to also make linking top level web UIs together easier, for example, going from a particle ‘scrap’ on particles.skia.org to complete C++ code on fiddle.skia.org, or complete JS code on jsfiddle.skia.org, that runs the particles. The scrap service has the following features:

  • Store scraps by ‘type’, i.e. SVG vs SkSL vs Particles.
  • Load scraps via URL.
  • Store meta-data with scraps. For example, one SkSL scrap may refer to other child shaders, so the meta-data will contain the references to those other scraps. Other things that could be stored in metadata include the values of controls that are used as inputs to a shader.
  • Ability for Infrastructure team members to review and delete scraps as needed, such as copyright violations.
  • The scrap server will also allow ‘wrapping’ scraps in boilerplate code. For example, an SkSL scrap can be wrapped in C++ and then used directly by fiddle. This includes understanding the metadata about the scrap, such as child shaders, and filling in the C++ code template appropriately.

See http://go/scrap-exchange for more details.

Auth

Uses the skia-public-auth@skia-public.iam.gserviceaccount.com service account, originally created in //infra/am, to talk to the Chrome Infra Auth API.

Buckets

We use the following buckets for each instance:

skia-public: gs://skia-public-scrap-exchange