ww

module
v0.0.1-beta.30 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 15, 2023 License: Apache-2.0, MIT

README

Wetware

Godoc Reference Go Report Card tests Matrix

Wetware is the language of the cloud. It is an alternative to Kubernetes, Mesos and OpenShift that turns any group of networked computers -- including cloud-based instances -- into a programmable IaaS/PaaS cluster.

Developers use wetware to write distributed applications that can be instantly ported from a single laptop to the datacenter, cloud, or a hybrid of both.

Managers love Wetware for its organizational benefits, which include a unified API for coordinating access to resources across teams, cloud-agnostic services that avoid vendor lock-in, and a small learning curve that onboards developers faster.

But there's more. Wetware is a full-fledged distributed systems language, complete with a batteries-included standard library, and a rich ecosystem that your team will never outgrow.

Quickstart

TODO

Motivation

Fear, uncertainty, and declarative config

Existing IaaS/PaaS like Kubernetes try to hide cluster state behind declarative config, often written in a high-level markup language like YAML, TOML or JSON. Instead of programming your infrastructure, you declare the desired state of your cluster in a configuration file, and the software tries to figure out a way to reach that state. Declarative approaches work well for applications like database queries, but cause serious problems in a IaaS/PaaS setting.

The problem is that declarative syntax gets datacenters exactly backwards. In a datacenter or cloud environment, you need to keep track of two things at all times:

  1. What is the current configuration of my cluster? (state)
  2. How do I get to the desired state? (strategy)

But with IaaS/PaaS systems like Kubernetes and Mesos, both 1 & 2 are burried under multiple layers of configuration, indirection and abstract interfaces. And although you know where you want to go (i.e., the state described by your YAML config), you can't be sure where are right now, nor how your config translates into execution.

When you encounter a problem, it's hard to diagnose what went wrong. All you can really do is grapple with configuration, restart services, and make educated guesses. Worse, existing IaaS/PaaS systems are incomprehensibly complex, and frequently degenerate into inconsistent states that force you to reboot the entire cluster, especially as you scale. When that happens you lose valuable debugging information that could have prevented the next incident.

The Wetware Way

Wetware breaks this vicious cycle by turning IaaS/PaaS on its head. Instead of static configuration, you're given a powerful language for querying and programming your cluster. Wetware comes with a REPL to interactively run code on your cluster, high-performance datastructures and synchronization primitives that make concurrency simple, and a rich standard library for writing distributed systems, batteries included.

Drawing inspiration from proven paradigms such as UNIX, Wetware will feel familiar to junior devs and CTOs alike, empowering them to finally treat infrastructure as code.

For managers and devops, Wetware's intuitive cluster API provides a clear, accountable and safe interface between the various engineering roles in a technology company, increasing iteration speed and reducing time-to-value.

How it Works

Getting Started

TODO

Documentation and Support

TODO

Directories

Path Synopsis
cmd
ww
internal
mock/pkg/client
Package mock_client is a generated GoMock package.
Package mock_client is a generated GoMock package.
mock/pkg/csp
Package mock_csp is a generated GoMock package.
Package mock_csp is a generated GoMock package.
mock/pkg/host
Package mock_host is a generated GoMock package.
Package mock_host is a generated GoMock package.
mock/pkg/pubsub
Package mock_pubsub is a generated GoMock package.
Package mock_pubsub is a generated GoMock package.
util/log
Package logutil contains shared utilities for configuring loggers from a cli context.
Package logutil contains shared utilities for configuring loggers from a cli context.
pkg
client
Package client exports the Wetware client API.
Package client exports the Wetware client API.
csp
Package csp provides primitives for communicating sequential processes
Package csp provides primitives for communicating sequential processes
internal/bounded
Package bounded implements generic bounded types for validation.
Package bounded implements generic bounded types for validation.
runtime
Package runtime provides a high-level API for constructing Wetware clients and servers using dependency injection.
Package runtime provides a high-level API for constructing Wetware clients and servers using dependency injection.
server
package server exports the Wetware worker node.
package server exports the Wetware worker node.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL