~/ ~/documents ~/software ~/pictures github (opens in new tab)

Defaults Are Policy

Defaults are more than a convenience; they are policy.

A default is a decision about what happens when a user doesn’t tweak a setting or read the documentation. In practice, defaults shape how most people interact with a system.

That’s why they matter so much.

This isn’t just true for consumer apps and user-facing software. It applies just as heavily to the internal tools, APIs, libraries, and platforms we build as engineering teams. Whether it’s a helper script, a developer CLI, or a shared infrastructure module, the defaults we set shape the baseline quality and security of our entire team’s workflow.

Nobody combs through config options before running a tool. We take the path that’s already there. If the default is safe, most people stay safe. If it’s risky, most people inherit that risk. If it’s noisy or fragile, that becomes the norm. This isn’t a user failing - it’s a design choice.

A classic engineering move: ship with weak or unsafe defaults, then point to a setting that makes things safer. That’s not good enough. If the safe mode means:

Every default is a statement of priorities. For example:

Safe defaults aren’t about assuming people are careless. They’re about respecting reality:

Sometimes you need less strict or less safe behaviour. That’s fine - but it should be a conscious choice. A good system makes the risky path available, but not invisible. It draws a line between:

If you want to know what a system is actually about, look at its defaults.

The manual documents ideals.
The marketing documents intentions.
The defaults are the real policy.