Edwin Kempin | 099a5ec | 2019-04-25 16:15:14 +0200 | [diff] [blame] | 1 | = Gerrit Code Review - Design Docs |
| 2 | |
| 3 | For the link:dev-contributing.html#design-driven-contribution-process[ |
| 4 | design-driven contribution process] it is required to specify features |
| 5 | upfront in a design doc. |
| 6 | |
Edwin Kempin | 78ae685 | 2019-08-01 15:27:44 +0200 | [diff] [blame] | 7 | [[structure]] |
| 8 | == Design Doc Structure |
| 9 | |
| 10 | A 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]] |
| 28 | As community we want to collaborate on design docs as much as possible |
| 29 | and write them together, in an iterative manner. To make this work well |
| 30 | design docs are split into multiple files that can be written and |
| 31 | refined 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]] |
| 48 | It 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 Kempin | 099a5ec | 2019-04-25 16:15:14 +0200 | [diff] [blame] | 70 | [[propose]] |
| 71 | == How to propose a new design? |
| 72 | |
Edwin Kempin | 78ae685 | 2019-08-01 15:27:44 +0200 | [diff] [blame] | 73 | To propose a new design, upload a change to the |
| 74 | link:https://gerrit-review.googlesource.com/admin/repos/homepage[ |
| 75 | homepage] repository that adds a new folder under `pages/design-docs/` |
| 76 | which contains at least an `index.md` and a `uses-cases.md` file (see |
| 77 | link:#structure[design doc structure] above). |
Edwin Kempin | 099a5ec | 2019-04-25 16:15:14 +0200 | [diff] [blame] | 78 | |
| 79 | Pushing a design doc for review requires to be a |
| 80 | link:dev-roles.html#contributor[contributor]. |
| 81 | |
| 82 | When contributing design docs, contributors should make clear whether |
| 83 | they are committed to do the implementation. It is possible to |
| 84 | contribute designs without having resources to do the implementation, |
| 85 | but in this case the implementation is only done if someone volunteers |
| 86 | to do it (which is not guaranteed to happen). |
| 87 | |
Ben Rohlfs | 78718c5 | 2019-10-08 14:42:03 +0200 | [diff] [blame] | 88 | Only very few maintainers actively watch out for uploaded design docs. |
| 89 | To raise awareness you may want to send a notification to the |
| 90 | link:https://groups.google.com/d/forum/repo-discuss[repo-discuss] |
| 91 | mailing list about your uploaded design doc. But the discussion should |
| 92 | not take place on the mailing list, comments should be made by reviewing |
| 93 | the change in Gerrit. |
| 94 | |
Edwin Kempin | 099a5ec | 2019-04-25 16:15:14 +0200 | [diff] [blame] | 95 | [[review]] |
| 96 | == Design doc review |
| 97 | |
| 98 | Everyone in the link:dev-roles.html[Gerrit community] is welcome to |
| 99 | take part in the design review and comment on the design. |
| 100 | |
Edwin Kempin | 78ae685 | 2019-08-01 15:27:44 +0200 | [diff] [blame] | 101 | Ideas for alternative solutions should be uploaded as a change that |
| 102 | describes the solution (see link:#collaboration[above]). |
Edwin Kempin | 099a5ec | 2019-04-25 16:15:14 +0200 | [diff] [blame] | 103 | |
Edwin Kempin | 78ae685 | 2019-08-01 15:27:44 +0200 | [diff] [blame] | 104 | Changes which make a conclusion on a design (changes that add/change |
| 105 | the `conclusion.md` file, see link:#structure[Design Doc Structure]) |
| 106 | should stay open for a minimum of 10 calendar days so that everyone has |
| 107 | a fair chance to see them. It is important that concerns regarding a |
| 108 | feature are raised during this time frame since once a conclusion is |
| 109 | approved and submitted the implementation may start immediately. |
Edwin Kempin | 099a5ec | 2019-04-25 16:15:14 +0200 | [diff] [blame] | 110 | |
Edwin Kempin | 78ae685 | 2019-08-01 15:27:44 +0200 | [diff] [blame] | 111 | Other design doc changes can and should be submitted quickly so that |
| 112 | collaboration and iterative refinements work smoothly (see |
| 113 | link:#collaboration[above]). |
| 114 | |
| 115 | For proposed features the contributor should hear back from the |
| 116 | link:dev-processes.html#steering-committee[engineering steering |
| 117 | committee] within 14 calendar days whether the proposed feature is in |
| 118 | scope of the project and if it can be accepted. |
Edwin Kempin | 099a5ec | 2019-04-25 16:15:14 +0200 | [diff] [blame] | 119 | |
| 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 Kempin | 78ae685 | 2019-08-01 15:27:44 +0200 | [diff] [blame] | 126 | . Add a project watch for the `homepage` repository with the following |
| 127 | query: `dir:pages/design-docs` |
Edwin Kempin | 099a5ec | 2019-04-25 16:15:14 +0200 | [diff] [blame] | 128 | |
| 129 | GERRIT |
| 130 | ------ |
| 131 | Part of link:index.html[Gerrit Code Review] |
| 132 | |
| 133 | SEARCHBOX |
| 134 | --------- |