Overview

A community's rules — who may join, who may vote, what is shared and with whom — are usually scattered through code as if statements: hard to find, harder to review, and invisible to the people they apply to. This package puts them in one policy the organization owns.

Who writes what

See Layers for how the two fit, and Bylaws as policy for what an organization writes.

How it reaches the services

The policy is built from the repository when the distribution is deployed — once, however many services run it — and each service runs its copy in its own process. There is no workflow to run and nothing to publish: what is in the repository is what runs. See Deploying.

Decisions people can see

A decision that says no says why, in words the person it is about is shown: the members service lists what an applicant must still do, and the id service shows each thing it will not offer a service, and why. The id service also shows the whole policy at /policy — what each decision is for, in the organization's words, and every rule — so anyone can read what governs them.

Every decision recorded

Each decision is logged in the format OPA logs its own, labelled with the revision of the policy that made it, and each revision is kept. So any decision, however old, can be read beside the exact rules that made it.