Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: update README based on documentation #1940

Merged
merged 1 commit into from
Apr 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
56 changes: 22 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[![Homepage and Documentation](https://img.shields.io/website?label=Homepage&url=https%3A%2F%2Fwasmcloud.com)](https://wasmcloud.com)
[![Documentation](https://img.shields.io/website?label=Documentation&url=https%3A%2F%2Fwasmcloud.com)](https://wasmcloud.com)
[![CNCF sandbox project](https://img.shields.io/website?label=CNCF%20Sandbox%20Project&url=https://landscape.cncf.io/?selected=wasm-cloud)](https://landscape.cncf.io/?selected=wasm-cloud)
[![Stars](https://img.shields.io/github/stars/wasmcloud?color=gold&label=wasmCloud%20Org%20Stars)](https://github.com/wasmcloud/)
![Powered by WebAssembly](https://img.shields.io/badge/powered%20by-WebAssembly-orange.svg)<br />
Expand All @@ -13,51 +13,53 @@

![wasmCloud logo](https://raw.githubusercontent.com/wasmCloud/branding/main/02.Horizontal%20Version/Pixel/PNG/Wasmcloud.Logo-Hrztl_Color.png)

# 馃捇 Distributed computing, _simplified_
wasmCloud is a **universal application platform** that helps you build and run globally distributed WebAssembly applications on any cloud or edge. Our goal is to make development more joyful and efficient by giving developers the tools to write only the code that matters鈥攁nd making it easy to run that code anywhere.

The wasmCloud runtime is a vessel for running applications in the cloud, at the edge, in the browser, on small devices, and anywhere else you can imagine.
wasmCloud leverages WebAssembly's security, portability, and performance to compose applications from tiny, independent building blocks.These building blocks are managed declaratively and reconfigurable at runtime. You shouldn't need to recompile your whole app to upgrade a database client or patch a vulnerability and you shouldn't need to recompile anything to move your app from development to production.

**Move from concept to production without changing your design, architecture, or your programming environment.**

wasmCloud lets you focus on shipping _features_. Build secure, portable, re-usable components. Get rid of the headaches from being smothered by boilerplate, dependency hell, tight coupling, and designs mandated by your infrastructure.
wasmCloud is designed around the following core tenets:

## Core Tenets

- Dead simple distributed applications
- Run anywhere
- Distributed from day one
- Run anywhere and everywhere
- Secure by default
- Productivity for both developers and operations
- Faster iteration and lower maintenance

**Move from concept to production without changing your design, architecture, or your programming environment.**

# Getting Started

## Installation

Install the wasmCloud Shell (`wash`) with [one command](https://wasmcloud.com/docs/installation).
Install the wasmCloud Shell (`wash`) using the [installation guide](https://wasmcloud.com/docs/installation).

## Walkthrough

If you're new to the wasmCloud ecosystem, a great place to start is the [getting started](https://wasmcloud.com/docs/getting-started/) walkthrough.

## Quickstart

The following commands launch wasmCloud in a local development environment and deploy a simple "hello world" WebAssembly module.
The following commands launch wasmCloud in a local development environment and deploy a simple "hello world" WebAssembly component, written in Rust, Go, TypeScript, or Python.

```console
wash up -d
wash new actor -t hello hello
wash app deploy ./hello/wadm.yaml
wash new component helloworld
wash app deploy ./helloworld/wadm.yaml
curl localhost:8080
```

## Examples
## Features

### WebAssembly Modules (Stable ABI)
1. [Declarative WebAssembly Orchestration](https://wasmcloud.com/docs/concepts/applications)
2. [Seamless Distributed Networking](https://wasmcloud.com/docs/concepts/lattice)
3. [Vendorless Application Components](https://wasmcloud.com/docs/concepts/components#application-components)
4. [Completely OTEL Observable](https://wasmcloud.com/docs/category/observability)
5. [Defense-In-Depth Security By Default](https://wasmcloud.com/docs/category/security)

wasmCloud has a wide range of [examples](https://github.com/wasmCloud/examples/) built on the [stable ABI](https://wasmcloud.com/docs/hosts/abis/wasmbus/). This includes components, providers, interfaces, and full applications we've created to demonstrate how to design, compose, and build applications in wasmCloud.
## Examples

### **Experimental** WASI Preview 2 WebAssembly Components
### WASI 0.2 WebAssembly Components

wasmCloud is actively staying up-to-date with WASI Preview 2 and the Component Model. For components which consume interfaces defined in [WIT](https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md), see examples in the [`examples` directory of this repository](./examples).
wasmCloud is based on and implements WASI 0.2 (aka the Component Model). For components which consume interfaces defined in [WIT](https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md), see examples in the [`examples` directory of this repository](./examples). Examples are organized by language so you can easily find samples in your language of choice.

### 馃挜 Awesome wasmCloud

Expand Down Expand Up @@ -117,12 +119,6 @@ wasmCloud's [standard runtime](./crates/runtime) is built in Rust for its zero-c

For running a wasmCloud host in a browser or embedding in a JavaScript V8 host, use the [JavaScript Runtime](https://github.com/wasmCloud/wasmcloud-js)

### 鈽侊笍 Elixir/OTP Runtime (`Deprecated`)

**Note**: The OTP Runtime is now **deprecated**.

~~The [Elixir/OTP](https://github.com/wasmCloud/wasmcloud-otp) runtime leverages Elixir/OTP for its battle-tested, massively-scalable foundation. It also leverages a Rust library.~~

---

## SDKs and libraries
Expand All @@ -131,14 +127,6 @@ For running a wasmCloud host in a browser or embedding in a JavaScript V8 host,

wasmCloud provides an [SDK](./crates/provider-sdk) for building capability providers in Rust.

### Go Provider SDK (`Experimental`)

wasmCloud also has an [**experimental** SDK](https://github.com/wasmCloud/provider-sdk-go) for building capability providers in Go.

### Provider Bindgen from WIT Interfaces (`Experimental`)

[`wasmcloud-provider-wit-bindgen`](./crates/provider-wit-bindgen) is a Rust macro used to generate code for [capability providers](./crates/providers).

### Provider Archive

[`provider-archive`](./crates/provider-archive) is a crate used to create Provider Archive (PAR) files. PARs are used to store, retrieve, and sign capability providers. Today, capability providers are distributed as binary files and run as system processes. In the future, wasmCloud aims to build capability providers as WebAssembly Components, which will remove the need for Provider Archives.
Expand Down
2 changes: 1 addition & 1 deletion examples/rust/components/http-keyvalue-counter/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# HTTP KeyValue Counter

This is a simple Rust Wasm example that increments a key in a keyvalue store in response to an HTTP request based on the path. This component uses the [wasi-http](https://github.com/WebAssembly/wasi-http) API to receive HTTP requests and the [wasi-keyvalue](https://github.com/WebAssembly/wasi-keyvalue) API to interact with a keyvalue store. At runtime we [link](https://wasmcloud.com/docs/1.0/concepts/linking-components) this component to an implementation of wasi-keyvalue that interacts with [Redis](https://redis.io/).
This is a simple Rust Wasm example that increments a key in a keyvalue store in response to an HTTP request based on the path. This component uses the [wasi-http](https://github.com/WebAssembly/wasi-http) API to receive HTTP requests and the [wasi-keyvalue](https://github.com/WebAssembly/wasi-keyvalue) API to interact with a keyvalue store. At runtime we [link](https://wasmcloud.com/docs/concepts/linking-components) this component to an implementation of wasi-keyvalue that interacts with [Redis](https://redis.io/).

## Prerequisites

Expand Down