Skip to content

Commit 74b959a

Browse files
refactor: add overview to introduction
Signed-off-by: Victor Adossi <vadossi@cosmonic.com>
1 parent 5c20151 commit 74b959a

File tree

1 file changed

+37
-3
lines changed

1 file changed

+37
-3
lines changed

component-model/src/introduction.md

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Home
22

3-
The WebAssembly Component Model is a broad-reaching architecture for building interoperable Wasm libraries, applications, and environments.
3+
The WebAssembly Component Model is a broad-reaching architecture for building interoperable WebAssembly libraries, applications, and environments.
44

55
| Understanding components | Building components | Using components |
66
|--------------------------|----------------------|-------------------|
@@ -27,11 +27,45 @@ The WebAssembly Component Model is a broad-reaching architecture for building in
2727
[Running]: ./creating-and-consuming/running.md
2828
[Distributing]: ./creating-and-consuming/distributing.md
2929

30-
> This documentation is aimed at _users_ of the component model: developers of libraries and applications. _Compiler and Wasm runtime developers_ can take a look at the [Component Model specification](https://github.com/WebAssembly/component-model) to see how to add support for the component model to their project.
30+
> [!INFO]
31+
>This documentation is aimed at _users_ of the component model: developers of libraries and applications.
32+
>
33+
> _Compiler and Wasm runtime developers_ can take a look at the [Component Model specification](https://github.com/WebAssembly/component-model) to
34+
> see how to add support for the component model to their project.
35+
36+
## A quick overview of core concepts
37+
38+
This section introduces the core concepts and [rationale](./design/why-component-model.md) of the component model.
39+
40+
* A [WebAssembly Component](./design/components.md) is the next evolution of core WebAssembly binaries.
41+
* WebAssembly components are *nestable* -- they may contain one or more core modules and/or sub-components composed together.
42+
* The Component Model extends core WebAssembly by introducing higher level types and interface-driven development
43+
* [WIT (Wasm Interface Types)](./wit-overview.md) is the [IDL (Interface Definition Language)][wiki-idl] used to formally define functionality for WebAssembly modules.
44+
* With WIT, WebAssembly components gain the ability to conform an language-agnostic and encode that support, so any WebAssembly component binary can be interrogated *and* executed.
45+
* An [Interface](./design/interfaces.md) describes the types and functions used for a specific, focused bit of functionality.
46+
* A [World](./design/worlds.md) assembles interfaces to express what features a component offers, and what features it depends on.
47+
* A [Package](./design/packages.md) is a set of WIT files containing a related set of interfaces and worlds.
48+
* The Component Model introduces the idea of a "platform" to core WebAssembly -- enabling the structured, standardized use of "host" functionality for WebAssembly "guest"s.
49+
* The WebAssembly System Interface (WASI) defines in WIT a family of interfaces for common system-level functions.
50+
* WASI defines common execution environments such as the command line (`wasi:cli`) or a HTTP server (`wasi:http`).
51+
* The Component Model introducs makes core WebAssembly composable -- components that provide functionality and those that use them can be composed together into *one* resulting component
52+
53+
> [!NOTE]
54+
> The Component Model is stewarded by the Bytecode Alliance and designed [in the open][cm-repo].
55+
>
56+
> See the [`WebAssembly/component-model`][cm-repo] repository for [Goals][goals],[use cases][use-cases], and [high level design choices][design-choices].
57+
58+
[cm-repo]: https://github.com/WebAssembly/component-model
59+
[wiki-idl]: https://en.wikipedia.org/wiki/Web_IDL
60+
[goals]: https://github.com/WebAssembly/component-model/blob/main/design/high-level/Goals.md
61+
[use-cases]: https://github.com/WebAssembly/component-model/blob/main/design/high-level/UseCases.md
62+
[design-choices]: https://github.com/WebAssembly/component-model/blob/main/design/high-level/Choices.md
3163

3264
## Status
3365

34-
[WASI 0.2.0 was released](https://github.com/WebAssembly/WASI/pull/577) Jan 25, 2024, providing a stable release of WASI and the component model. This [is a stable set of WIT definitions](https://github.com/WebAssembly/WASI/tree/main/wasip2) that components can target. WASI proposals will continue to evolve and new ones will be introduced; however, users of the component model can now pin to the stable 0.2.0 release.
66+
[WASI 0.2.0 was released](https://github.com/WebAssembly/WASI/pull/577) Jan 25, 2024, providing a stable release of WASI and the component model.
67+
This [is a stable set of WIT definitions](https://github.com/WebAssembly/WASI/tree/main/wasip2) that components can target. WASI proposals will
68+
continue to evolve and new ones will be introduced; however, users of the component model can now pin to the stable 0.2.0 release.
3569

3670
## Contributing
3771

0 commit comments

Comments
 (0)