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.
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.