userspace.party

userspace.party / ample

ample

Abstractions, nothing more.

A list before it is a list of people. A vector before it stores pixels. A structure before a domain gives it meaning.

no_std abstractions containers traits math

Its place in the system

ample contains forms that remain meaningful without knowing any application domain. It is where generic structures, relations and operations live before another crate assigns them concrete meaning.

ample
  │
  ├── List<T>
  ├── Vec<T>
  ├── String
  ├── generic traits
  └── abstract math
       ↓
domain crates give the forms meaning

The boundary

Belongs here

  • Generic containers and structures
  • Relations and operations independent of OS, people, machines or physics
  • Reusable traits that make sense without domain vocabulary

Does not belong here

  • System calls or operating-system ABI
  • People, colors, machines or virtual machines
  • DOM/browser concepts
  • Physical models, sensors or actuators

Today

Current surface

  • Vec and String
  • Lists, nodes and queues
  • Generic traits and result types
  • Shared macros
  • Domain-independent math

Start here

cargo add ample

The design rule is strict: if an abstraction needs to know what domain it belongs to, it probably does not belong in ample.

From abstraction to reality. userspace.party keeps conceptual borders explicit: abstractions in ample, process mechanisms in userspace, machines in computers, human meaning in humans, browser presentation in webspace, and physical-world simulation and control in twins.