Marian Harbach | ebeb154 | 2019-12-13 10:42:46 +0100 | [diff] [blame] | 1 | :linkattrs: |
Edwin Kempin | c500df0 | 2019-04-23 15:53:00 +0200 | [diff] [blame] | 2 | = Gerrit Code Review - Development Processes |
| 3 | |
Edwin Kempin | 11932ad | 2019-04-24 15:58:02 +0200 | [diff] [blame] | 4 | [[project-governance]] |
| 5 | [[steering-committee]] |
David Pursehouse | 7840d81 | 2019-05-28 08:58:59 +0900 | [diff] [blame] | 6 | == Project Governance / Engineering Steering Committee |
Edwin Kempin | 11932ad | 2019-04-24 15:58:02 +0200 | [diff] [blame] | 7 | |
David Pursehouse | 7840d81 | 2019-05-28 08:58:59 +0900 | [diff] [blame] | 8 | The Gerrit project has an engineering steering committee (ESC) that is |
| 9 | in charge of: |
Edwin Kempin | 11932ad | 2019-04-24 15:58:02 +0200 | [diff] [blame] | 10 | |
Edwin Kempin | ef1b811 | 2019-10-29 09:27:00 +0100 | [diff] [blame] | 11 | * Gerrit core (the `gerrit` project) and the link:dev-core-plugins.html[core |
| 12 | plugins] |
Edwin Kempin | 11932ad | 2019-04-24 15:58:02 +0200 | [diff] [blame] | 13 | * defining the project vision and the project scope |
| 14 | * maintaining a roadmap, a release plan and a prioritized backlog |
Edwin Kempin | 099a5ec | 2019-04-25 16:15:14 +0200 | [diff] [blame] | 15 | * ensuring timely design reviews |
Edwin Kempin | 11932ad | 2019-04-24 15:58:02 +0200 | [diff] [blame] | 16 | * ensuring that new features are compatible with the project vision and |
Edwin Kempin | 099a5ec | 2019-04-25 16:15:14 +0200 | [diff] [blame] | 17 | are well aligned with other features (give feedback on new |
Edwin Kempin | c507dbb | 2020-06-08 11:53:56 +0200 | [diff] [blame] | 18 | link:dev-design-docs.html[design docs] within 30 calendar days) |
Edwin Kempin | 099a5ec | 2019-04-25 16:15:14 +0200 | [diff] [blame] | 19 | * approving/rejecting link:dev-design-docs.html[designs], vetoing new |
| 20 | features |
Edwin Kempin | f13dfa9 | 2019-05-02 13:55:43 +0200 | [diff] [blame] | 21 | * assigning link:dev-roles.html#mentor[mentors] for approved features |
Edwin Kempin | 11932ad | 2019-04-24 15:58:02 +0200 | [diff] [blame] | 22 | * accepting new plugins as core plugins |
| 23 | * making changes to the project governance process and the |
Edwin Kempin | 099a5ec | 2019-04-25 16:15:14 +0200 | [diff] [blame] | 24 | link:dev-contributing.html#contribution-processes[contribution |
| 25 | processes] |
Edwin Kempin | 11932ad | 2019-04-24 15:58:02 +0200 | [diff] [blame] | 26 | |
| 27 | The steering committee has 5 members: |
| 28 | |
| 29 | * 3 Googlers that are appointed by Google |
| 30 | * 2 non-Google maintainers, elected by non-Google maintainers for the |
| 31 | period of 1 year (see link:#steering-committee-election[below]) |
| 32 | |
David Pursehouse | 5a4ae78 | 2019-09-18 12:11:51 +0900 | [diff] [blame] | 33 | Refer to the project homepage for the link:https://www.gerritcodereview.com/members.html#engineering-steering-committee[ |
Marian Harbach | 3425337 | 2019-12-10 18:01:31 +0100 | [diff] [blame] | 34 | list of current committee members,role=external,window=_blank]. |
David Pursehouse | d93d259 | 2019-05-28 09:02:17 +0900 | [diff] [blame] | 35 | |
Edwin Kempin | 11932ad | 2019-04-24 15:58:02 +0200 | [diff] [blame] | 36 | The steering committee should act in the interest of the Gerrit project |
| 37 | and the whole Gerrit community. |
| 38 | |
| 39 | For decisions, consensus between steering committee members and all |
| 40 | other maintainers is desired. If consensus cannot be reached, decisions |
| 41 | can also be made by simple majority in the steering committee (should |
| 42 | be applied only in exceptional situations). |
| 43 | |
| 44 | The steering committee is empowered to overrule positive/negative votes |
| 45 | from individual maintainers, but should do so only in exceptional |
| 46 | situations after attempts to reach consensus have failed. |
| 47 | |
| 48 | As an integral part of the Gerrit community, the steering committee is |
| 49 | committed to transparency and to answering incoming requests in a |
| 50 | timely manner. |
| 51 | |
| 52 | [[steering-committee-election]] |
| 53 | === Election of non-Google steering committee members |
| 54 | |
| 55 | The election of the non-Google steering committee members happens once |
Nasser Grainawi | 0f9abe3 | 2023-10-26 16:53:06 -0600 | [diff] [blame] | 56 | a year in June. Non-Google link:dev-roles.html#maintainer[maintainers] |
Edwin Kempin | 11932ad | 2019-04-24 15:58:02 +0200 | [diff] [blame] | 57 | can nominate themselves by posting an informal application on the |
Edwin Kempin | 412cf64 | 2020-04-03 14:14:02 +0200 | [diff] [blame] | 58 | non-public mailto:gerritcodereview-community-managers@googlegroups.com[ |
Matthias Sohn | d4fc730 | 2023-11-03 09:58:43 +0100 | [diff] [blame] | 59 | community manager mailing list] when the call for nominations is sent to |
Nasser Grainawi | 0f9abe3 | 2023-10-26 16:53:06 -0600 | [diff] [blame] | 60 | the maintainers list by a community manager. |
Edwin Kempin | 412cf64 | 2020-04-03 14:14:02 +0200 | [diff] [blame] | 61 | |
| 62 | The list with all candidates will be published at the beginning of the |
Nasser Grainawi | 0f9abe3 | 2023-10-26 16:53:06 -0600 | [diff] [blame] | 63 | voting period. |
Edwin Kempin | 412cf64 | 2020-04-03 14:14:02 +0200 | [diff] [blame] | 64 | |
| 65 | Keeping the candidates private during the nomination phase and |
| 66 | publishing all candidates at once only at the start of the voting |
| 67 | period ensures that: |
| 68 | |
| 69 | * people do not start voting before all candidates are known and the |
| 70 | voting period has started |
| 71 | * candidates that announce their candidacy early do not have an |
| 72 | advantage |
| 73 | * people are not discouraged to candidate when there are already other |
| 74 | candidates |
| 75 | |
| 76 | By applying to be steering committee member, the candidate confirms to |
| 77 | be able to dedicate the time that is needed to fulfill this role (also |
| 78 | see link:dev-roles.html#steering-committee-member[steering committee |
Edwin Kempin | 11932ad | 2019-04-24 15:58:02 +0200 | [diff] [blame] | 79 | member]). |
| 80 | |
| 81 | Each non-Google maintainer can vote for 2 candidates. The voting |
Edwin Kempin | 412cf64 | 2020-04-03 14:14:02 +0200 | [diff] [blame] | 82 | happens by posting on the |
| 83 | mailto:gerritcodereview-maintainers@googlegroups.com[maintainer mailing |
| 84 | list]. The voting period is 14 calendar days from the start of the |
Nasser Grainawi | 0f9abe3 | 2023-10-26 16:53:06 -0600 | [diff] [blame] | 85 | voting. |
Edwin Kempin | 11932ad | 2019-04-24 15:58:02 +0200 | [diff] [blame] | 86 | |
| 87 | Google maintainers do not take part in this vote, because Google |
| 88 | already has dedicated seats in the steering committee (see section |
Marco Miller | e8b183b | 2020-09-30 12:04:31 -0400 | [diff] [blame] | 89 | link:#steering-committee[steering committee]). |
Edwin Kempin | 11932ad | 2019-04-24 15:58:02 +0200 | [diff] [blame] | 90 | |
Matthias Sohn | e192f94 | 2020-10-29 15:50:01 +0100 | [diff] [blame] | 91 | If a non-Google seat on the steering committee becomes vacant before |
| 92 | the current term ends, an exceptional election is conducted in order |
| 93 | to replace the member(s) leaving the committee. The election will |
| 94 | follow the same procedure as regular steering committee elections. |
| 95 | The number of votes each maintainer gets in such exceptional election |
| 96 | matches the number of seats to be filled. The term of the new member |
| 97 | of the steering committee ends at the end of the current term of |
| 98 | the steering committee when the next regular election concludes. |
| 99 | |
Edwin Kempin | ac69e58 | 2019-04-24 14:48:15 +0200 | [diff] [blame] | 100 | [[contribution-process]] |
| 101 | == Contribution Process |
| 102 | |
| 103 | See link:dev-contributing.html[here]. |
| 104 | |
Edwin Kempin | 099a5ec | 2019-04-25 16:15:14 +0200 | [diff] [blame] | 105 | [[design-doc-review]] |
| 106 | == Design Doc Review |
| 107 | |
| 108 | See link:dev-design-docs.html#review[here]. |
| 109 | |
Luca Milanesio | b9ef643 | 2019-08-22 15:08:26 +0100 | [diff] [blame] | 110 | [[versioning]] |
| 111 | == Semantic versioning |
| 112 | |
Marian Harbach | 3425337 | 2019-12-10 18:01:31 +0100 | [diff] [blame] | 113 | Gerrit follows a light link:https://semver.org/[semantic versioning scheme,role=external,window=_blank] MAJOR.MINOR[.PATCH[.HOTFIX]] |
Luca Milanesio | b9ef643 | 2019-08-22 15:08:26 +0100 | [diff] [blame] | 114 | format: |
| 115 | |
| 116 | * MAJOR is incremented when there are substantial incompatible changes and/or |
| 117 | new features in Gerrit. |
| 118 | * MINOR is incremented when there are changes that are typically backward compatible |
| 119 | with the earlier minor version. Features can be removed following the |
| 120 | link:#deprecating-features[feature deprecation process]. Dependencies can be upgraded |
| 121 | according to the link:dev-processes.html#upgrading-libraries[libraries upgrade policy]. |
| 122 | * PATCH is incremented when there are backward-compatible bug fixes in Gerrit or its |
| 123 | dependencies. When PATCH is zero, it can be omitted. |
| 124 | * HOTFIX is present only when immediately after a patch release, some urgent |
| 125 | fixes in the code or the packaging format are required but do not justify a |
| 126 | new patch release. |
| 127 | |
| 128 | For every MAJOR.MINOR release there is an associated stable branch that follows well defined |
| 129 | link:#dev-in-stable-branches[rules of development]. |
| 130 | |
| 131 | Within a stable branch, there are multiple MAJOR.MINOR.PATCH tags created associated to the |
| 132 | bug-fix releases of that stable release. |
| 133 | |
| 134 | Examples: |
| 135 | |
| 136 | * Gerrit v3.0.0 contains breaking incompatible changes in the functionality because |
| 137 | the ReviewDb storage has been totally removed. |
| 138 | * Gerrit v2.15 contains brand-new features like NoteDb, however, still supports the existing |
| 139 | ReviewDb storage for changes and thus is considered a minor release. |
| 140 | * Gerrit v2.14.20 is the 20th patch-release of the stable Gerrit v2.14.* and thus does not contain |
| 141 | new features but only bug-fixes. |
| 142 | |
Edwin Kempin | c500df0 | 2019-04-23 15:53:00 +0200 | [diff] [blame] | 143 | [[dev-in-stable-branches]] |
| 144 | == Development in stable branches |
| 145 | |
| 146 | As their name suggests stable branches are intended to be stable. This means that generally |
| 147 | only bug-fixes should be done on stable branches, however this is not strictly enforced and |
| 148 | exceptions may apply: |
| 149 | |
| 150 | * When a stable branch is initially created to prepare a new release the Gerrit community |
| 151 | discusses on the mailing list if there are pending features which should still make it into the |
| 152 | release. Those features are blocking the release and should be implemented on the stable |
| 153 | branch before the first release candidate is created. |
| 154 | * To stabilize the code before doing a major release several release candidates are created. Once |
| 155 | the first release candidate was done no more features should be accepted on the stable branch. |
Edwin Kempin | 11932ad | 2019-04-24 15:58:02 +0200 | [diff] [blame] | 156 | If more features are found to be required they should be discussed with the steering committee |
Edwin Kempin | c500df0 | 2019-04-23 15:53:00 +0200 | [diff] [blame] | 157 | and should only be allowed if the risk of breaking things is considered to be low. |
| 158 | * Once a major release is done only bug-fixes and documentation updates should be done on the |
| 159 | stable branch. These updates will be included in the next minor release. |
Luca Milanesio | b9ef643 | 2019-08-22 15:08:26 +0100 | [diff] [blame] | 160 | * For minor releases new features could be acceptable if the following conditions are met: |
| 161 | ** they are result of a new feature introduced through a merge of an earlier stable branch |
| 162 | ** they are justified for completing, extending or fixing an existing feature |
| 163 | ** does not involve API, user-interface changes or data migrations |
| 164 | ** is backward compatible with all existing features |
| 165 | ** the parts of the code in common with existing features are properly covered by end-to-end tests |
| 166 | ** is important to the Gerrit community and no Gerrit maintainers have raised objections. |
| 167 | * In cases of doubt or conflicting opinions on new features, it's the responsibility of the |
| 168 | steering committee to evaluate the risk of new features and make a decision based on these |
| 169 | rules and opinions from the Gerrit community. |
Edwin Kempin | c500df0 | 2019-04-23 15:53:00 +0200 | [diff] [blame] | 170 | * The older a stable branch is the more stable it should be. This means old stable branches |
| 171 | should only receive bug-fixes that are either important or low risk. Security fixes, including |
| 172 | security updates for third party dependencies, are always considered as important and hence can |
| 173 | always be done on stable branches. |
| 174 | |
Luca Milanesio | b9ef643 | 2019-08-22 15:08:26 +0100 | [diff] [blame] | 175 | Examples: |
| 176 | |
| 177 | * Gerrit v3.0.0-rc1 and v3.0.0-rc2 may contain new features and API changes without notice, |
| 178 | even if they are both cut on the same stable-3.0 branch. |
| 179 | * Gerrit v2.14.8 introduced the support for ElasticSearch as a new feature. This was an exception |
| 180 | agreed amongst the Gerrit maintainers, did not touch the Lucene indexing code-base, was supported |
| 181 | by container-based E2E tests and represents a completion of an high-level feature. |
| 182 | |
Edwin Kempin | c500df0 | 2019-04-23 15:53:00 +0200 | [diff] [blame] | 183 | [[backporting]] |
| 184 | == Backporting to stable branches |
| 185 | |
| 186 | From time to time bug fix releases are made for existing stable branches. |
| 187 | |
| 188 | Developers concerned with stable branches are encouraged to backport or push fixes to these |
| 189 | branches, even if no new release is planned. Backporting features is only possible in compliance |
| 190 | with the rules link:#dev-in-stable-branches[above]. |
| 191 | |
| 192 | Fixes that are known to be needed for a particular release should be pushed for review on that |
| 193 | release's stable branch. They will then be included into the master branch when the stable branch |
| 194 | is merged back. |
| 195 | |
Edwin Kempin | 2fef5a62 | 2019-10-02 17:22:05 +0200 | [diff] [blame] | 196 | [[security-issues]] |
| 197 | == Dealing with Security Issues |
| 198 | |
| 199 | If a security vulnerability in Gerrit is discovered, we place an link:#embargo[ |
| 200 | embargo] on it until a fixed release or mitigation is available. Fixing the |
| 201 | issue is usually pursued with high priority (depends on the severity of the |
| 202 | security vulnerability). The embargo is lifted and the vulnerability is |
| 203 | disclosed to the community as soon as a fix release or another mitigation is |
| 204 | available. |
| 205 | |
| 206 | [[report-security-issue]] |
| 207 | === How to report a security vulnerability? |
| 208 | |
| 209 | To report a security vulnerability file a |
Edwin Kempin | 6c1f1f9 | 2023-06-20 12:30:21 +0000 | [diff] [blame] | 210 | link:https://issues.gerritcodereview.com/issues/new?component=1371046[ |
Edwin Kempin | 31ad78a | 2023-12-01 11:02:34 +0000 | [diff] [blame] | 211 | security issue,role=external,window=_blank] in the Gerrit issue tracker. Issues |
| 212 | in the `Gerrit Code Review > Security` component are restricted to Gerrit |
| 213 | maintainers and a few long-term contributors. The reporter becomes a |
| 214 | collaborator on the issue and hence can see it as well. Security issues are |
| 215 | triaged by the link:#steering-committee[Engineering Steering Committee]. |
Edwin Kempin | 2fef5a62 | 2019-10-02 17:22:05 +0200 | [diff] [blame] | 216 | |
Edwin Kempin | 31ad78a | 2023-12-01 11:02:34 +0000 | [diff] [blame] | 217 | If an existing issue is found to be a security vulnerability it should be moved |
| 218 | to `Gerrit Code Review > Security` component (component ID: 1371046). |
Edwin Kempin | 2fef5a62 | 2019-10-02 17:22:05 +0200 | [diff] [blame] | 219 | |
| 220 | In case of doubt, or if an issue cannot wait until the next ESC meeting, |
| 221 | contact the link:#steering-committee[Engineering Steering Committee] directly |
| 222 | by sending them an mailto:gerritcodereview-esc@googlegroups.com[email]. |
| 223 | |
| 224 | If needed, the ESC will contact the reporter for additional details. |
| 225 | |
| 226 | [[embargo]] |
| 227 | === The Embargo |
| 228 | |
| 229 | Once an issue has been identified as security vulnerability, we keep it under |
| 230 | embargo until a fixed release or a mitigation is available. This means that the |
| 231 | issue is not discussed publicly, but only on issues with restricted visibility |
| 232 | (see link:#report-security-issue[above]) and at the mailing lists of the ESC, |
| 233 | community managers and Gerrit maintainers. Since the `repo-discuss` mailing |
| 234 | list is public, security issues must not be discussed on this mailing list |
| 235 | while the embargo is in place. |
| 236 | |
| 237 | The reason for keeping an embargo is to prevent attackers from taking advantage |
| 238 | of a vulnerability while no fixed releases are available yet, and Gerrit |
| 239 | administrators cannot make their systems secure. |
| 240 | |
| 241 | Once a fix release or mitigation is available, the embargo is lifted and the |
| 242 | community is informed about the security vulnerability with the advise to |
| 243 | address the security vulnerability immediately (either by upgrading to a fixed |
| 244 | release or applying the mitigation). The information about the security |
| 245 | vulnerability is disclosed via the |
Marian Harbach | 3425337 | 2019-12-10 18:01:31 +0100 | [diff] [blame] | 246 | link:https://groups.google.com/d/forum/repo-discuss[repo-discuss,role=external,window=_blank] mailing list. |
Edwin Kempin | 2fef5a62 | 2019-10-02 17:22:05 +0200 | [diff] [blame] | 247 | |
| 248 | [[handle-security-issue]] |
| 249 | === Handling of the Security Vulnerability |
| 250 | |
| 251 | . Engineering Steering Committee evaluates the security vulnerability: |
| 252 | + |
| 253 | The ESC discusses the security vulnerability and which actions should be taken |
| 254 | to address it. One person, usually one of the Gerrit maintainers, should be |
| 255 | appointed to drive and coordinate the investigation and the fix of the security |
| 256 | vulnerability. This coordinator doesn't need to do all the work alone, but is |
| 257 | responsible that the security vulnerability is getting fixed in a timely |
| 258 | manner. |
| 259 | + |
| 260 | If the security vulnerability affects multiple or older releases the ESC should |
| 261 | decide which of the releases should be fixed. For critical security issue we |
| 262 | also consider fixing old releases that are otherwise not receiving any |
| 263 | bug-fixes anymore. |
| 264 | + |
| 265 | It's also possible that the ESC decides that an issue is not a security issue |
| 266 | and the embargo is lifted immediately. |
| 267 | |
Edwin Kempin | e9cc275 | 2020-12-01 13:02:46 +0100 | [diff] [blame] | 268 | . Filing a CVE |
| 269 | + |
| 270 | For every security issue a CVE that describes the issue and lists the affected |
| 271 | releases should be filed. Filing a CVE can be done by any maintainer that works |
| 272 | for an organization that can request CVE numbers (e.g. Googlers). The CVE |
| 273 | number must be included in the release notes. The CVE itself is only made |
| 274 | public after fixed released have been published and the embargo has been |
| 275 | lifted. |
| 276 | |
Edwin Kempin | 2fef5a62 | 2019-10-02 17:22:05 +0200 | [diff] [blame] | 277 | . Implementation of the security fix: |
| 278 | + |
| 279 | To keep the embargo intact, security fixes cannot be developed and reviewed in |
| 280 | the public `gerrit` repository. In particular it's not secure to use private |
| 281 | changes for implementing and reviewing security fixes (see general notes about |
| 282 | link:intro-user.html[security-fixes]). |
| 283 | + |
| 284 | Instead security fixes should be implemented and reviewed in the non-public |
| 285 | link:https://gerrit-review.googlesource.com/admin/repos/gerrit-security-fixes[ |
Marian Harbach | 3425337 | 2019-12-10 18:01:31 +0100 | [diff] [blame] | 286 | gerrit-security-fixes,role=external,window=_blank] repository which is only accessible by Gerrit |
Edwin Kempin | 2fef5a62 | 2019-10-02 17:22:05 +0200 | [diff] [blame] | 287 | maintainers and Gerrit community members that work on security fixes. |
| 288 | + |
| 289 | The change that fixes the security vulnerability should contain an integration |
| 290 | test that verifies that the security vulnerability is no longer present. |
| 291 | + |
| 292 | Review and approval of the security fixes must be done by the Gerrit |
Luca Milanesio | 9df1667 | 2020-11-28 00:31:16 +0000 | [diff] [blame] | 293 | maintainers. |
Edwin Kempin | 2fef5a62 | 2019-10-02 17:22:05 +0200 | [diff] [blame] | 294 | + |
| 295 | Once a security fix is ready and submitted, it should be cherry-picked to all |
| 296 | branches that should be fixed. |
| 297 | |
Luca Milanesio | 9df1667 | 2020-11-28 00:31:16 +0000 | [diff] [blame] | 298 | . CI validation of the security fix: |
| 299 | + |
| 300 | The validation of the security fixes does not happen on the regular Gerrit CI, |
| 301 | because it would compromise the confidentiality of the fix and therefore break |
| 302 | the embargo. |
| 303 | + |
| 304 | The release manager maintains a private branch on the |
| 305 | link:https://gerrit-review.googlesource.com/admin/repos/gerrit-ci-scripts[gerrit-ci-scripts,role=external,window=_blank] repository |
| 306 | which contains a special build pipeline with special visibility restrictions. |
| 307 | + |
| 308 | The validation process provides feedback, in terms of Code-Style, Verification |
| 309 | and Checks, to the incoming security changes. The links associated |
| 310 | with the build logs are exposed over the Internet but their access limited |
| 311 | to only those who are actively participating in the development and review of |
| 312 | the security fix. |
| 313 | + |
| 314 | The maintainers that are willing to access the links to the CI logs need |
| 315 | to request a time-limited (maximum 30 days) nominal X.509 certificate from a |
| 316 | CI maintainer, which allows to access the build logs and analyze failures. |
| 317 | The release manager may help obtaining that certificate from CI maintainers. |
| 318 | |
Edwin Kempin | 2fef5a62 | 2019-10-02 17:22:05 +0200 | [diff] [blame] | 319 | . Creation of fixed releases and announcement of the security vulnerability: |
| 320 | + |
| 321 | A release manager should create new bug fix releases for all fixed branches. |
| 322 | + |
| 323 | The new releases should be tested against the security vulnerability to |
| 324 | double-check that the release was built from the correct source that contains |
| 325 | the fix for the security vulnerability. |
| 326 | + |
| 327 | Before publishing the fixed releases, an announcement to the Gerrit community |
| 328 | should be prepared. The announcement should clearly describe the security |
| 329 | vulnerability, which releases are affected and which releases contain the fix. |
| 330 | The announcement should recommend to upgrade to fixed releases immediately. |
| 331 | + |
| 332 | Once all releases are ready and tested and the announcement is prepared, the |
| 333 | releases should be all published at the same time. Immediately after that, the |
| 334 | announcement should be sent out to the |
Marian Harbach | 3425337 | 2019-12-10 18:01:31 +0100 | [diff] [blame] | 335 | link:https://groups.google.com/d/forum/repo-discuss[repo-discuss,role=external,window=_blank] mailing list. |
Edwin Kempin | 2fef5a62 | 2019-10-02 17:22:05 +0200 | [diff] [blame] | 336 | + |
| 337 | This ends the embargo and any issue that discusses the security vulnerability |
| 338 | should be made public. |
| 339 | |
Edwin Kempin | e9cc275 | 2020-12-01 13:02:46 +0100 | [diff] [blame] | 340 | . Publish the CVE |
| 341 | |
Edwin Kempin | 2fef5a62 | 2019-10-02 17:22:05 +0200 | [diff] [blame] | 342 | . Follow-Up |
| 343 | + |
| 344 | The ESC should discuss if there are any learnings from the security |
| 345 | vulnerability and define action items to follow up in the |
Marian Harbach | 3425337 | 2019-12-10 18:01:31 +0100 | [diff] [blame] | 346 | link:https://bugs.chromium.org/p/gerrit[issue tracker,role=external,window=_blank]. |
Edwin Kempin | 2fef5a62 | 2019-10-02 17:22:05 +0200 | [diff] [blame] | 347 | |
Edwin Kempin | ef1b811 | 2019-10-29 09:27:00 +0100 | [diff] [blame] | 348 | [[core-plugins]] |
| 349 | == Core Plugins |
| 350 | |
| 351 | See link:dev-core-plugins.html[here]. |
| 352 | |
Edwin Kempin | c500df0 | 2019-04-23 15:53:00 +0200 | [diff] [blame] | 353 | [[upgrading-libraries]] |
| 354 | == Upgrading Libraries |
| 355 | |
Edwin Kempin | 6671edc | 2019-04-24 11:22:53 +0200 | [diff] [blame] | 356 | Changes that add new libraries or upgrade existing libraries require an approval on the |
| 357 | `Library-Compliance` label. For an approval the following things are checked: |
| 358 | |
| 359 | * The library has a license that is suitable for use within Gerrit. |
| 360 | * If the library is used within Google, the version of the library must be compatible with the |
| 361 | version that is used at Google. |
| 362 | |
Edwin Kempin | 3e0fe01 | 2022-02-18 13:15:10 +0100 | [diff] [blame] | 363 | Only maintainers from Google can vote on the `Library-Compliance` label. The |
| 364 | Gerrit team at Google uses this |
| 365 | link:https://gerrit-review.googlesource.com/q/label:%2522Library-Compliance%253Dneed%2522+-ownerin:google-gerrit-team+status:open+project:gerrit+-age:4week+-is:wip+-is:private+label:Code-Review%252B2[change query] |
| 366 | to find changes that require a `Library-Compliance` approval. |
Edwin Kempin | 6671edc | 2019-04-24 11:22:53 +0200 | [diff] [blame] | 367 | |
Matthias Sohn | e2e483f | 2023-10-30 23:32:26 +0100 | [diff] [blame] | 368 | To get the attention of a Googler for dependency updates file separate issues |
| 369 | (use type "Task") for each dependency update on the |
| 370 | link:https://issues.gerritcodereview.com/issues/new?component=1371020&template=1834212["Hosting > googlesource" component]. |
| 371 | Then it will show up in Google's triage queue and the current person who is on duty |
| 372 | should look into this. |
| 373 | |
Edwin Kempin | c500df0 | 2019-04-23 15:53:00 +0200 | [diff] [blame] | 374 | Gerrit's library dependencies should only be upgraded if the new version contains |
| 375 | something we need in Gerrit. This includes new features, API changes as well as bug |
| 376 | or security fixes. |
| 377 | An exception to this rule is that right after a new Gerrit release was branched |
| 378 | off, all libraries should be upgraded to the latest version to prevent Gerrit |
| 379 | from falling behind. Doing those upgrades should conclude at the latest two |
| 380 | months after the branch was cut. This should happen on the master branch to ensure |
| 381 | that they are vetted long enough before they go into a release and we can be sure |
| 382 | that the update doesn't introduce a regression. |
| 383 | |
Edwin Kempin | 47d1403 | 2022-02-08 13:22:54 +0100 | [diff] [blame] | 384 | [[escalation-channel-to-google]] |
| 385 | == Escalation channel to Google |
| 386 | |
| 387 | If anything urgent is blocking that requires the attention of a Googler you may |
| 388 | escalate this by writing an email to Han-Wen Nienhuys: hanwen@google.com |
| 389 | |
Edwin Kempin | c500df0 | 2019-04-23 15:53:00 +0200 | [diff] [blame] | 390 | [[deprecating-features]] |
| 391 | == Deprecating features |
| 392 | |
| 393 | Gerrit should be as stable as possible and we aim to add only features that last. |
| 394 | However, sometimes we are required to deprecate and remove features to be able |
| 395 | to move forward with the project and keep the code-base clean. The following process |
| 396 | should serve as a guideline on how to deprecate functionality in Gerrit. Its purpose |
| 397 | is that we have a structured process for deprecation that users, administrators and |
| 398 | developers can agree and rely on. |
| 399 | |
| 400 | General process: |
| 401 | |
| 402 | * Make sure that the feature (e.g. a field on the API) is not needed anymore or blocks |
| 403 | further development or improvement. If in doubt, consult the mailing list. |
| 404 | * If you can provide a schema migration that moves users to a comparable feature, do |
| 405 | so and stop here. |
| 406 | * Mark the feature as deprecated in the documentation and release notes. |
| 407 | * If possible, mark the feature deprecated in any user-visible interface. For example, |
| 408 | if you are deprecating a Git push option, add a message to the Git response if |
| 409 | the user provided the option informing them about deprecation. |
| 410 | * Annotate the code with `@Deprecated` and `@RemoveAfter(x.xx)` if applicable. |
| 411 | Alternatively, use `// DEPRECATED, remove after x.xx` (where x.xx is the version |
| 412 | number that has to be branched off before removing the feature) |
| 413 | * Gate the feature behind a config that is off by default (forcing admins to turn |
| 414 | the deprecated feature on explicitly). |
| 415 | * After the next release was branched off, remove any code that backed the feature. |
| 416 | |
| 417 | You can optionally consult the mailing list to ask if there are users of the feature you |
| 418 | wish to deprecate. If there are no major users, you can remove the feature without |
| 419 | following this process and without the grace period of one release. |
| 420 | |
| 421 | GERRIT |
| 422 | ------ |
| 423 | Part of link:index.html[Gerrit Code Review] |
| 424 | |
| 425 | SEARCHBOX |
| 426 | --------- |