Poll 1: Does the proposed general direction sound good?
Summary of “general direction”:
- Start a new “Component Model” spec layered on top of the Core spec
- With Module Linking and Interface Types as the first two proposed additions to the spec
- High-level goals:
- Cross-language/toolchain composition, without requiring an additional ABI on top
- Shared-nothing, with each language/toolchain encapsulating its own core wasm mutable state
- Embeddability, allowing component runtimes to be embedded in a wide variety of hosts (incl. browsers)
- Virtualizability, with all imports implementable by component exports and no shared namespaces
- Static analyzability, leaning into imports instead of ubiquitous runtime virtual dispatch
- Out of scope:
- Distributed computing (partial failure, networking, RPC, actors, queues, live upgrade, deployment, …)
- “Component services” (persistence, storage, discovery, naming, caching, pooling, …)
- All of these are important, but often domain-specific and better solved at a higher level
- … and many in the wasm ecosystem are working on wasm platforms solving these problems (in different ways)
- The hope is that they can all meaningfully embed components (wins: shared tooling, language agnosticism, nice properties⤴)