Distributing features & templates · Issue #7 · devcontainers/spec (original) (raw)

The goal is to distribute definitions to distribute the maintenance load. We currently have 3 buckets:

For the community definitions there are various levels of self-service, when useful we can use the JS&TS definitions to help dogfood the approach we decide to take. The approaches I can think of are:

  1. Community submits PRs (like today). In a separate repository (one for all community definitions).
  1. Community pushes updates themselves. In a separate repository (one for all community definitions).
  1. Community contributors can have their own repository for one or several definitions.
    a) We maintain a static registry to collect the definitions at build time, later at runtime.
    b) We have dynamic registry, definitions are discovered at runtime. New contributors can register definitions themselves.

A dynamic registry where new contributors can register definitions themselves maximizes self-serviceability, but it also raises security concerns. VS Code extensions are using such a model and it is an open issue to add support for cryptographically signing extensions, so authorship can be verified (microsoft/vscode-vsce#191). There is work being done on this that very much looks like it could be used for other types of artifacts too, but it is too early to tell if we could use it for definitions.

I suggest we take the following steps (progressing from 1. towards 3. above):

Open questions:

/cc @2percentsilk @bamurtaugh