:linkattrs:
= Gerrit Code Review - Design Docs

For the link:dev-contributing.html#design-driven-contribution-process[
design-driven contribution process] it is required to specify features
upfront in a design doc.

[[structure]]
== Design Doc Structure

A design doc should discuss the following aspects:

* Use-Cases:
  The interactions between a user and a system to attain particular
  goals.
* Acceptance Criteria
  Conditions that must be satisfied to consider the feature as done.
* Background:
  Stuff one needs to know to understand the use-cases (e.g. motivating
  examples, previous versions and problems, links to related
  changes/design docs, etc.)
* Possible Solutions:
  Possible solutions with the pros and cons, and explanation of
  implementation details.
* Conclusion:
  Which decision was made and what were the reasons for it.

[[collaboration]]
As community we want to collaborate on design docs as much as possible
and write them together, in an iterative manner. To make this work well
design docs are split into multiple files that can be written and
refined by several persons in parallel:

* `index.md`:
  Entry file that links to the files below (also see
  'dev-design-doc-index-template.md').
* `use-cases.md`:
  Describes the use-cases, acceptance criteria and background (also see
  'dev-design-doc-use-cases-template.md').
* `solution-<n>.md`:
  Each possible solution (with the pros and cons, and implementation
  details) is described in a separate file (also see
  'dev-design-doc-solution-template.md').
* `conclusion.md`:
  Describes the conclusion of the design discussion (also see
  'dev-design-doc-conclusion-template.md').

[[expectation]]
It is expected that:

* An agreement on the use-cases is achieved before solutions are being
  discussed in detail.
* Anyone who has ideas for an alternative solution uploads a change
  with a `solution-<n>.md` that describes their solution. In case of
  doubt whether an idea is a refinement of an existing solution or an
  alternative solution, it's up to the owner of the discussed solution
  to decide if the solution should be updated, or if the proposer
  should start a new alternative solution.
* All possible solutions are fairly discussed with their pros and cons,
  and treated equally until a conclusion is made.
* Unrelated issues (judged by the design doc owner) that are identified
  during discussions are extracted into new design docs (initially
  consisting only of an `index.md` and a `use-cases.md` file).
* Changes making iterative improvements can be submitted frequently
  (e.g. additional uses-cases can be added later, solutions can be
  submitted without describing implementation details, etc.).
* After a conclusion has been approved contributors are expected to
  keep the design doc updated and fill in gaps while they go forward
  with the implementation.

[[propose]]
== How to propose a new design?

To propose a new design, upload a change to the
link:https://gerrit-review.googlesource.com/admin/repos/homepage[
homepage,role=external,window=_blank] repository that adds a new folder under `pages/design-docs/`
which contains at least an `index.md` and a `uses-cases.md` file (see
link:#structure[design doc structure] above).

Pushing a design doc for review requires to be a
link:dev-roles.html#contributor[contributor].

When contributing design docs, contributors should make clear whether
they are committed to do the implementation. It is possible to
contribute designs without having resources to do the implementation,
but in this case the implementation is only done if someone volunteers
to do it (which is not guaranteed to happen).

Only very few maintainers actively watch out for uploaded design docs.
To raise awareness you may want to send a notification to the
link:https://groups.google.com/d/forum/repo-discuss[repo-discuss,role=external,window=_blank]
mailing list about your uploaded design doc. But the discussion should
not take place on the mailing list, comments should be made by reviewing
the change in Gerrit.

[[review]]
== Design doc review

Everyone in the link:dev-roles.html[Gerrit community] is welcome to
take part in the design review and comment on the design.

Positive `Code-Review` votes on changes that add/modify design docs are
sticky. This means any `Code-Review+1` and `Code-Review+2` vote is
preserved when a new patch set is uploaded. If a new patch set makes
significant changes, the uploader of the new patch set must start a new
review round by removing all positive `Code-Review` votes from the
change manually.

Ideas for alternative solutions should be uploaded as a change that
describes the solution (see link:#collaboration[above]).

Changes which make a conclusion on a design (changes that add/change
the `conclusion.md` file, see link:#structure[Design Doc Structure])
should stay open for a minimum of 10 calendar days so that everyone has
a fair chance to see them. It is important that concerns regarding a
feature are raised during this time frame since once a conclusion is
approved and submitted the implementation may start immediately.

Other design doc changes can and should be submitted quickly so that
collaboration and iterative refinements work smoothly (see
link:#collaboration[above]).

For proposed features the contributor should hear back from the
link:dev-processes.html#steering-committee[engineering steering
committee] within 14 calendar days whether the proposed feature is in
scope of the project and if it can be accepted.

[[watch-designs]]
== How to get notified for new design docs?

. Go to the
  link:https://gerrit-review.googlesource.com/settings/#Notifications[
  notification settings,role=external,window=_blank]
. Add a project watch for the `homepage` repository with the following
  query: `dir:pages/design-docs`

GERRIT
------
Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
