blob: 5e3f7a9c25d9245d7740fde6130515dab2388f0f [file] [log] [blame]
Edwin Kempin099a5ec2019-04-25 16:15:14 +02001= Gerrit Code Review - Design Docs
2
3For the link:dev-contributing.html#design-driven-contribution-process[
4design-driven contribution process] it is required to specify features
5upfront in a design doc.
6
Edwin Kempin78ae6852019-08-01 15:27:44 +02007[[structure]]
8== Design Doc Structure
9
10A design doc should discuss the following aspects:
11
12* Use-Cases:
13 The interactions between a user and a system to attain particular
14 goals.
15* Acceptance Criteria
16 Conditions that must be satisfied to consider the feature as done.
17* Background:
18 Stuff one needs to know to understand the use-cases (e.g. motivating
19 examples, previous versions and problems, links to related
20 changes/design docs, etc.)
21* Possible Solutions:
22 Possible solutions with the pros and cons, and explanation of
23 implementation details.
24* Conclusion:
25 Which decision was made and what were the reasons for it.
26
27[[collaboration]]
28As community we want to collaborate on design docs as much as possible
29and write them together, in an iterative manner. To make this work well
30design docs are split into multiple files that can be written and
31refined by several persons in parallel:
32
33* `index.md`:
34 Entry file that links to the files below (also see
35 'dev-design-doc-index-template.md').
36* `use-cases.md`:
37 Describes the use-cases, acceptance criteria and background (also see
38 'dev-design-doc-use-cases-template.md').
39* `solution-<n>.md`:
40 Each possible solution (with the pros and cons, and implementation
41 details) is described in a separate file (also see
42 'dev-design-doc-solution-template.md').
43* `conclusion.md`:
44 Describes the conclusion of the design discussion (also see
45 'dev-design-doc-conclusion-template.md').
46
47[[expectation]]
48It is expected that:
49
50* An agreement on the use-cases is achieved before solutions are being
51 discussed in detail.
52* Anyone who has ideas for an alternative solution uploads a change
53 with a `solution-<n>.md` that describes their solution. In case of
54 doubt whether an idea is a refinement of an existing solution or an
55 alternative solution, it's up to the owner of the discussed solution
56 to decide if the solution should be updated, or if the proposer
57 should start a new alternative solution.
58* All possible solutions are fairly discussed with their pros and cons,
59 and treated equally until a conclusion is made.
60* Unrelated issues (judged by the design doc owner) that are identified
61 during discussions are extracted into new design docs (initially
62 consisting only of an `index.md` and a `use-cases.md` file).
63* Changes making iterative improvements can be submitted frequently
64 (e.g. additional uses-cases can be added later, solutions can be
65 submitted without describing implementation details, etc.).
66* After a conclusion has been approved contributors are expected to
67 keep the design doc updated and fill in gaps while they go forward
68 with the implementation.
69
Edwin Kempin099a5ec2019-04-25 16:15:14 +020070[[propose]]
71== How to propose a new design?
72
Edwin Kempin78ae6852019-08-01 15:27:44 +020073To propose a new design, upload a change to the
74link:https://gerrit-review.googlesource.com/admin/repos/homepage[
75homepage] repository that adds a new folder under `pages/design-docs/`
76which contains at least an `index.md` and a `uses-cases.md` file (see
77link:#structure[design doc structure] above).
Edwin Kempin099a5ec2019-04-25 16:15:14 +020078
79Pushing a design doc for review requires to be a
80link:dev-roles.html#contributor[contributor].
81
82When contributing design docs, contributors should make clear whether
83they are committed to do the implementation. It is possible to
84contribute designs without having resources to do the implementation,
85but in this case the implementation is only done if someone volunteers
86to do it (which is not guaranteed to happen).
87
Ben Rohlfs78718c52019-10-08 14:42:03 +020088Only very few maintainers actively watch out for uploaded design docs.
89To raise awareness you may want to send a notification to the
90link:https://groups.google.com/d/forum/repo-discuss[repo-discuss]
91mailing list about your uploaded design doc. But the discussion should
92not take place on the mailing list, comments should be made by reviewing
93the change in Gerrit.
94
Edwin Kempin099a5ec2019-04-25 16:15:14 +020095[[review]]
96== Design doc review
97
98Everyone in the link:dev-roles.html[Gerrit community] is welcome to
99take part in the design review and comment on the design.
100
Edwin Kempin78ae6852019-08-01 15:27:44 +0200101Ideas for alternative solutions should be uploaded as a change that
102describes the solution (see link:#collaboration[above]).
Edwin Kempin099a5ec2019-04-25 16:15:14 +0200103
Edwin Kempin78ae6852019-08-01 15:27:44 +0200104Changes which make a conclusion on a design (changes that add/change
105the `conclusion.md` file, see link:#structure[Design Doc Structure])
106should stay open for a minimum of 10 calendar days so that everyone has
107a fair chance to see them. It is important that concerns regarding a
108feature are raised during this time frame since once a conclusion is
109approved and submitted the implementation may start immediately.
Edwin Kempin099a5ec2019-04-25 16:15:14 +0200110
Edwin Kempin78ae6852019-08-01 15:27:44 +0200111Other design doc changes can and should be submitted quickly so that
112collaboration and iterative refinements work smoothly (see
113link:#collaboration[above]).
114
115For proposed features the contributor should hear back from the
116link:dev-processes.html#steering-committee[engineering steering
117committee] within 14 calendar days whether the proposed feature is in
118scope of the project and if it can be accepted.
Edwin Kempin099a5ec2019-04-25 16:15:14 +0200119
120[[watch-designs]]
121== How to get notified for new design docs?
122
123. Go to the
124 link:https://gerrit-review.googlesource.com/settings/#Notifications[
125 notification settings]
Edwin Kempin78ae6852019-08-01 15:27:44 +0200126. Add a project watch for the `homepage` repository with the following
127 query: `dir:pages/design-docs`
Edwin Kempin099a5ec2019-04-25 16:15:14 +0200128
129GERRIT
130------
131Part of link:index.html[Gerrit Code Review]
132
133SEARCHBOX
134---------