One sentence: What does this repo exist to make true in the world?
Example: “Make it easy for developers to ship reliably, without needing deep expertise in .”
- User type A: (e.g., app developers, SREs, analysts, end-users)
- Jobs-to-be-done: …
- Pain today: …
- Success looks like: …
- User type B: …
- Jobs-to-be-done: …
- Pain today: …
- Success looks like: …
- Not for: …
- Why: …
Guidance: Keep this section concrete. If you can’t name the user and their job, you’ll argue about priorities forever.
- What is hard / slow / risky today?
- What failures happen repeatedly? (bugs, incidents, misconfig, confusion)
- What is expensive? (time, money, cognitive load, coordination)
- In 6–12 months, what should feel meaningfully easier?
- In 2–3 years, what should be obviously different?
Optional: Add a 3–5 line “story” of a user before vs after.
These are tie-breakers when tradeoffs happen. Put them in priority order.
- Principle 1: (e.g., “Safe by default”)
- We will: …
- We won’t: …
- Principle 2: (e.g., “Make the common path fast”)
- We will: …
- We won’t: …
- Principle 3: (e.g., “Prefer boring, maintainable solutions”)
- We will: …
- We won’t: …
Guidance: A principle is only useful if it can help you say “no” to a PR.
Pick a small set of metrics you can actually track.
- Time-to-success: e.g., median time from install → first successful use
- Quality: e.g., bug rate / support tickets per active user
- Trust: e.g., SLO compliance, error rate, crash-free sessions
- Change velocity: PR cycle time, lead time to release
- Operational burden: pages/alerts per week, toil hours
- Maintainability: test coverage for critical paths, build time, flake rate
Guidance: Avoid vanity metrics. Prefer “time, errors, incidents, support load, cost”.
- Core capability A: …
- Core capability B: …
- Core capability C: …
- Not a replacement for: …
- Not trying to support: …
- Not optimizing for: …
- Supported platforms / versions: …
- Breaking changes policy: …
- Deprecation timeline: …
Guidance: This section prevents “just one more feature” creep.
Pick 3–5 items max. Each should be outcome-oriented.
- Priority: …
- Why now: …
- Success criteria: …
- Owner / area: …
- Priority: …
- Priority: …
Tip: If everything is a priority, nothing is.
These are “bets” with explicit results.
- Problem: …
- Approach: …
- Deliverables: …
- Risks: …
- Exit criteria: How we’ll know it worked (measurable)
- …
Describe where this repo is going, without over-promising.
- Bet 1: …
- Why it matters: …
- What we’ll likely build: …
- What we likely won’t build: …
- Bet 2: …
- Users will be able to: …
- Maintainers will spend less time on: …
- The ecosystem will have: …
- Prefer changes that are reversible or behind flags.
- Default to secure / safe settings.
- Optimize for the common path; support escape hatches for experts.
- Avoid adding new dependencies unless they reduce net complexity.
- Pay down operational toil before adding big surface area.
- Staffing level / maintainer bandwidth: …
- Hard requirements (privacy, compliance, perf, cost): …
- External dependencies: …
- Source of truth: issues + RFCs + docs in
docs/ - When we require an RFC: breaking changes, new public APIs, major deps, new architecture
- Review expectations: tests required for critical paths, docs for user-facing behavior
- Release cadence: …
- What we won’t merge: (examples)
- large rewrites without an incremental plan
- behavior changes without migration guidance
- features that expand scope beyond the non-goals
- Term: definition…
- Persona, environment, constraints, success criteria…
- “Thanks — this is valuable, but it conflicts with our non-goal X…”
- “We’d reconsider if metric Y becomes a problem…”