Principles

A manifesto for intentional system design

These principles emerged from questioning the assumptions accumulated over decades of incremental development and progress in computer systems. They serve as design constraints that prioritize coherence over compatibility.

Image

Hardware and software must be designed as one

Abstraction layers between hardware and software hide complexity rather than eliminate it. When components are designed in isolation, the result is brittle systems limited by the lowest common denominator.

The abstraction layers between hardware and software exist in an attempt to hide the differences between hardware components. These layers of indirection each add latency and surface area that lowers software quality.

Writing software for portability and broad compatibility is a trap that inevitably leads to systems with poor user experiences. Systems tend to fail at the boundaries; between foreign components that need to interact with each other.

Design software for the hardware or accept mediocrity.

Computers should feel like magic

Performance isn’t a luxury, it’s fundamental to human-computer interaction. When machines can’t keep up with thought, they interrupt the flow of thinking itself.

Computers today, thousands of times more powerful than those of previous decades, often feel slower for interactive tasks. This isn’t a hardware problem; it’s a failure in system design.

Predictable performance must be a core constraint in every component. If the computer cannot maintain immediacy – if there is any perceptible delay between input and output – it’s broken.

This isn’t an aspirational goal or a nice-to-have. It is a fundamental requirement for machines that participate in our lives.

Systems must be tractable

True ownership requires understanding. Systems must be tractable; bounded in complexity such that a single human mind can comprehend, predict, and debug their behavior.

Users should own their machines completely. Hardware schematics, firmware source, operating system code, applications; all of it open for study, modification, repair and continuity. All of it comprehensible by a single mind.

Machines should enhance human agency

Computing machines are instruments of creativity, companions in learning, and partners in thought. They should amplify human intention.

The modern computing experience optimizes for engagement rather than authentic human purposes: notifications demand attention; interfaces are designed to increase “time on device”; cloud software creates opportunities for surveillance and vendor lock-in; auto-updaters take away user agency – this is not tenable.

Computers are creative instruments, intellectual companions, and trusted partners in human endeavors. Whether the purpose is work, art, learning, communication or play, the machine should faithfully serve that purpose without ulterior motives. It should enhance human agency, not undermine it.