blob: f71c7c2aa523fad9a688f767d60a9e2b4965fe95 [file] [log] [blame] [view]
Daniel Cheng86135f32019-02-27 07:10:381# Contributing to Chromium
2
3This page assumes a working Chromium [checkout and build][checkout-and-build].
4Note that a full Chromium checkout includes external repositories with their
5own workflows for contributing, such as [v8][v8-dev-guide] and
6[Skia][skia-dev-guide]. Similarly, ChromiumOS, which includes Chromium as a
7subrepository, has its own [development workflow][cros-dev-guide].
8
9[TOC]
10
11## Related resources
12
13- [Life of a Chromium Developer][life-of-a-chromium-developer], which is mostly
14 up-to-date.
Toby Huang5105f812019-08-08 23:47:5715- [Tutorial][noms-tutorial] by committer emeritus [email protected].
16- [Commit Checklist][commit-checklist], a useful checklist to go through before
17 submitting each CL on Gerrit.
Daniel Cheng86135f32019-02-27 07:10:3818
19## Communicate
20
21When writing a new feature or fixing an existing bug, get a second opinion
22before going too far. If it's a new feature idea, propose it to the appropriate
23[discussion group][discussion-groups]. If it's in the existing code base, talk
24to some of the folks in the "OWNERS" file (see [code review
25policies][code-reviews] for more) for the code being changed.
26
27- If a change needs further context outside the CL, it should be tracked in the
28 [bug system][crbug]. Bugs are the right place for long histories, discussion
29 and debate, attaching screenshots, and linking to other associated bugs. Bugs
30 are unnecessary for changes isolated enough to need none of these.
31- If there isn't a bug and there should be one, please [file a new
32 bug][crbug-new].
33- Just because there is a bug in the bug system doesn't necessarily mean that a
34 patch will be accepted.
35
John Abd-El-Malek27e1cf02019-12-18 17:35:1836## Design Documents
37Any nontrivial technical effort that will significantly impact Chromium should
38have a design doc ([template][design-doc-template]). Specifically, we require
39design docs in the following cases:
40- When writing code that will have a large impact on Chromium as a whole, e.g.
41 when you are changing code in Chromium's critical path (page loading,
42 rendering).
43- When beginning a large technical undertaking that should be documented for
44 historical reasons (>1 person-month of work can be used as a general guideline).
45
46Send public design docs to
47[[email protected]][chromium-design-docs]. Google internal Chrome
48design docs should follow the process at
49[go/chrome-dd-review-process][chrome-dd-review-process].
50
Daniel Cheng86135f32019-02-27 07:10:3851## Legal stuff
52
Dirk Prankeb12d67032022-01-13 17:19:2153All contributors must have valid Gerrit/Google accounts (which means you must
54be [old enough to manage your own
55account](https://support.google.com/accounts/answer/1350409)) and complete the
56contributor license agreement.
57
58For individual contributors, please complete the [Individual Contributor License
Daniel Cheng86135f32019-02-27 07:10:3859Agreement][individual-cla] online. Corporate contributors must fill out the
60[Corporate Contributor License Agreement][corporate-cla] and send it to us as
61described on that page.
62
63### First-time contributors
64
65Add your (or your organization's) name and contact info to the AUTHORS file for
66[Chromium][cr-authors] or [Chromium OS][cros-authors]. Please include this as
67part of your first patch and not as a separate standalone patch.
68
69### External contributor checklist for reviewers
70
71Before LGTMing a change from a non-chromium.org address, ensure that the
72contribution can be accepted:
73
74- Definition: The "author" is the email address that owns the code review
75 request on <https://chromium-review.googlesource.com>
76- Ensure the author is already listed in [AUTHORS][cr-authors]. In some cases, the
77 author's company might have a wildcard rule (e.g. \*@google.com).
78- If the author or their company is not listed, the CL should include a new
79 AUTHORS entry.
80 - Ensure the new entry is reviewed by a reviewer who works for Google.
Vincent Scheib04582d842020-04-24 18:41:3681 - Contributor License Agreement can be verified by Googlers at http://go/cla.
Daniel Cheng86135f32019-02-27 07:10:3882 - If there is a corporate CLA for the author's company, it must list the
83 person explicitly (or the list of authorized contributors must say
84 something like "All employees"). If the author is not on their company's
85 roster, do not accept the change.
86
87## Initial git setup
88
Caleb Raittobbf16d52023-02-07 18:34:01891. Visit <https://chromium.googlesource.com/new-password> and follow the
Daniel Cheng86135f32019-02-27 07:10:3890 on-screen instructions to get credentials for uploading changes.
912. Tell git about your name, email and some other settings.
92 ```
93 git config --global user.name "My Name"
94 git config --global user.email "[email protected]"
95 git config --global core.autocrlf false
96 git config --global core.filemode false
97 git config --local gerrit.host true
98 # Uncomment this if you want your pull commands to always rebase.
99 # git config --global branch.autosetuprebase always
100 # Uncomment if you want new branches to track the current branch.
101 # git config --global branch.autosetupmerge always
102 ```
Francois Marier197916f2020-01-16 02:23:021033. Visit <https://chromium-review.googlesource.com/settings/> to ensure that
104 your preferred email is set to the same one you use in your git
105 configuration.
Daniel Cheng86135f32019-02-27 07:10:38106
107## Creating a change
108
109First, create a new branch for your change in git. Here, we create a branch
Emily Stark84d57192021-05-14 18:58:25110called `mychange` (use whatever name you want here), with `origin/main` as
Daniel Cheng86135f32019-02-27 07:10:38111the upstream branch.
112
113```
Emily Stark84d57192021-05-14 18:58:25114git checkout -b mychange -t origin/main
Daniel Cheng86135f32019-02-27 07:10:38115```
116
117Write and test your change.
118
119- Conform to the [style guide][cr-styleguide].
120- Include tests.
121- Patches should be a reasonable size to review. Review time often increases
Joshua Berenhaus98d2fbc2020-01-07 18:50:42122 exponentially with patch size.
Daniel Cheng86135f32019-02-27 07:10:38123
124Commit your change locally in git:
125
126```
127git commit -a
128```
129
130If you are not familiar with `git`, GitHub's [resources to learn
131git][github-tutorial] is useful for the basics. However, keep in mind that the
132Chromium workflow is not the same as the GitHub pull request workflow.
133
134## Uploading a change for review
135
Toby Huang5105f812019-08-08 23:47:57136Note: go through the [commit checklist][commit-checklist] for Chromium before
137uploading a change for review.
138
Daniel Cheng86135f32019-02-27 07:10:38139Chromium uses a Gerrit instance hosted at
140<https://chromium-review.googlesource.com> for code reviews. In order to upload
141your local change to Gerrit, use `git-cl` from
142[depot\_tools][depot-tools-setup] to create a new Gerrit change, based on the
143diff between the current branch and its upstream branch:
144
145```
146git cl upload
147```
148
149This will open a text editor to create a description for the new change. This
150description will be used as the commit message when the change is landed in the
151Chromium tree. Descriptions should be formatted as follows:
152
153```
154Summary of change (one line)
155
156Longer description of change addressing as appropriate: why the change
157is made, context if it is part of many changes, description of previous
158behavior and newly introduced differences, etc.
159
160Long lines should be wrapped to 72 columns for easier log message
161viewing in terminals.
162
163Bug: 123456
164```
165
166A short subject and a blank line after the subject are crucial: `git` uses this
167as a heuristic for tools like `git log --oneline`. Use the bug number from the
Kalvin Lee23598832020-07-22 07:36:28168[issue tracker][crbug] (see more on [CL footer syntax](#cl-footer-reference)).
169Also see [How to Write a Git Commit Message][good-git-commit-message], which
170has more in-depth tips for writing a good commit description.
Daniel Cheng86135f32019-02-27 07:10:38171
172### Chromium-specific description tips
173
174- Links to previous CLs should be formatted as `https://crrev.com/c/NUMBER`,
Kalvin Lee313a7f22022-08-22 08:20:45175 which is slightly shorter than <https://chromium-review.googlesource.com>.
Daniel Cheng86135f32019-02-27 07:10:38176
177- If there are instructions for testers to verify the change is correct,
178 include them with the `Test:` tag:
179
180 ```
181 Test: Load example.com/page.html and click the foo-button; see
182 crbug.com/123456 for more details.
183 ```
184
185After saving the change description, `git-cl` runs some presubmit scripts to
186check for common errors. If everything passes, `git-cl` will print something
187like this:
188
189```
190remote: SUCCESS
191remote:
192remote: New Changes:
193remote: https://chromium-review.googlesource.com/c/chromium/src/+/1485699 Use base::TimeDelta::FromTimeSpec helper in more places. [WIP]
194```
195
196Additional flags can be used to specify reviewers, bugs fixed by the change, et
197cetera:
198
199```
200git cl upload -r [email protected],[email protected] -b 123456
201```
202
203See `git cl help upload` for a full list of flags.
204
Andrea Orru771255242023-02-27 02:41:28205### Uploading dependent changes
206
207If you wish to work on multiple related changes without waiting for
208them to land, you can do so in Gerrit using dependent changes.
209
210To put this into an example, let‘s say you have a commit for feature A
211and this is in the process of being reviewed on Gerrit. Now let’s say
212you want to start more work based on it before it lands on main.
213
214```
215git checkout featureA
216git checkout -b featureB
217git branch --set-upstream-to featureA
218# ... edit some files
219# ... git add ...
220git commit
221git cl upload
222```
223
224In Gerrit, there would then be a “relation chain” shown where the
225feature A change is the parent of the feature B change. If A
226introduces a new file which B changes, the review for B will only show
227the diff from A.
228
Daniel Cheng86135f32019-02-27 07:10:38229## Code review
230
231Code reviews are covered in more detail on the [code review
232policies][code-reviews] page.
233
234### Finding a reviewer
235
236Ideally, the reviewer is someone who is familiar with the area of code in
237question. If you're not sure who that should be, check with anyone in the
238nearest ancestor OWNERS file.
239
240- Anybody can review code, but there must be at least one owner for each
241 affected directory.
242- If there are multiple reviewers, make it clear what each reviewer is expected
Devlin Croninefe2e5872020-05-06 16:34:57243 to review.
Daniel Cheng86135f32019-02-27 07:10:38244- `git cl owners` automatically suggests reviewers based on the OWNERS files.
245
Devlin Croninefe2e5872020-05-06 16:34:57246_Note:_ By default, please only select one reviewer for each file (that is, a
247single reviewer may review multiple files, but typically each file only needs
248to be reviewed by one person). It can be tempting to add multiple reviewers so
249that "whoever gets to it first" can review, but this has two common failure
250modes:
251- Reviewer Alpha and Beta both review the CL, resulting in duplicate effort.
252- Out of fear of the above failure case, neither reviewer Alpha nor Beta review
253 the CL.
254
255There are times when requesting multiple reviewers for the same file may be
256desirable - such as when the code is particularly complicated, or when the file
257uses multiple systems and a perspective from each is valuable. In this case,
258please make it explicit that you would like both reviewers to review.
259
Daniel Cheng86135f32019-02-27 07:10:38260### Requesting review
261
262Open the change on [the web][crrev]. If you can't find the link, running `git
263cl issue` will display the review URL for the current branch. Alternatively,
264visit <https://chromium-review.googlesource.com> and look in the "Outgoing
265Reviews" section.
266
267Reviewers expect to review code that compiles and passes tests. If you have
268access, now is a good time to run your change through the [automated
269tests](#running-automated-tests).
270
271Click **Add Reviewers** in the left column (if you don't see this link, make
272sure you are logged in). In the **Reviewers** field, enter a comma-separated
273list of the reviewers you picked.
274
275In the same dialog, you can include an optional message to your reviewers. This
276space can be used for specific questions or instructions. Once you're done,
Fredrik Söderquist53031aff2020-02-07 16:04:00277make sure to click **Start Review**, which notifies the requested reviewers that
278they should review your change.
Daniel Cheng86135f32019-02-27 07:10:38279
280**IMPORTANT: UNTIL YOU SEND THE REVIEW REQUEST, NO ONE WILL LOOK AT THE REVIEW**
281
282### Review process
283
284All changes must be reviewed (see [code review policies][code-reviews]).
285
286You should get a response within **one** business day; re-ping your reviewers
287if you do not.
288
289To upload new patch sets that address comments from the reviewers, simply
290commit more changes to your local branch and run `git cl upload` again.
291
292### Approval
293
294When the reviewer is happy with the change, they will set the "Code-Review +1"
295label. Owners of all affected files must approve before a change can be
296committed. See: [code review policies: owners][code-reviews-owners].
297
298## Running automated tests
299
300Before being submitted, a change must pass the commit queue (CQ). The commit
301queue is an automated system which sends a patch to multiple try bots running
302different platforms: each try bot compiles Chromium with the patch and ensures
303the tests still pass on that platform.
304
305To trigger this process, click **CQ Dry Run** in the upper right corner of the
306code review tool. Note that this is equivalent to setting the "Commit-Queue +1"
307label. Anyone can set this label; however, the CQ will not process the patch
308unless the person setting the label has [try job access][try-job-access].
309
310If you don't have try job access and:
311
312- you have an @chromium.org email address, request access for yourself.
313- you have contributed a few patches, ask a reviewer to nominate you for access.
314- neither of the above is true, request that a reviewer run try jobs for you in
315 the code review request message.
316
317The status of the latest try job for a given patchset is visible just below the
318list of changed files. Each bot has its own bubble, using one of the following
319colors to indicate its status:
320
321- Gray: the bot has not started processing the patch yet.
322- Yellow: the run is in progress. Check back later!
323- Purple: the trybot encountered an exception while processing the patch.
324 Usually, this is not the fault of the patch. Try clicking **CQ Dry Run**
325 again.
326- Red: tests failed. Click on the failed bot to see what tests failed and why.
327- Green: the run passed!
328
329## Committing
330
331Changes should generally be committed via the [commit queue][commit-queue].
332This is done by clicking **Submit to CQ** in the upper right corner, or setting
333the "Commit-Queue +2" label on the change. The commit queue will then
334send the patch to the try bots. If all try bots return green, the change will
335automatically be committed. Yay!
336
337Sometimes a test might be flaky. If you have an isolated failure that appears
338unrelated to your change, try sending the change to the commit queue again.
339
340Alternatively, a developer with commit access can [directly
341commit][direct-commit] a change, bypassing the commit queue. This should only
342be used in emergencies because it will bypass all the safety nets.
343
Ben Pastene893979e2022-10-06 17:22:55344## Relanding a change
345
346Occasionally changes that pass the [commit queue][commit-queue] and get
347submitted into Chromium will later be reverted. If this happens to your change,
348don't be discouraged! This can be a common part of the Chromium development
349cycle and happens for a variety of reasons, including a conflict with an
350unanticipated change or tests not covered on the commit queue.
351
352If this happens to your change, you're encouraged to pursue a reland. When doing
353so, following these basic steps can streamline the re-review process:
354- **Create the reland**: Click the `CREATE RELAND` button on the original change
355 in Gerrit. This will create a new change whose diff is identical to the
356 original, but has a small paper-trail in the commit message that leads back to
357 the original. This can be useful for sheriffs when debugging regressions.
358- **Append the fix**: If the reland requires file modifications not present in
359 the original change, simply upload these fixes in a subsequent patchset to the
360 reland change. By comparing the first patchset with the latest, this gives
361 reviewers the ability to see the diff of _just_ the reland fix.
362- **Describe the fix**: In the commit message of the reland change, briefly
363 summarize what's changed that makes relanding again safe. Explanations can
364 include: "included needed fix", "disabled failing tests", "crash was fixed
365 elsewhere". Specifically for that last case: if the reland change is identical
366 to the original and the reland fix was handled separately in a preceding
367 change, make sure to link to that change in the commit message of the reland.
368
Darin Fisher0e196ee82019-09-06 22:39:12369## Code guidelines
370
371In addition to the adhering to the [styleguide][cr-styleguide], the following
372general rules of thumb can be helpful in navigating how to structure changes:
373
Darin Fisherf061fb12019-11-15 23:46:13374- **Code in the Chromium project should be in service of other code in the
375 Chromium project.** This is important so developers can understand the
376 constraints informing a design decision. Those constraints should be apparent
377 from the scope of code within the boundary of the project and its various
Peter Kasting54275102022-06-16 21:00:17378 repositories. In general, for each line of code, you should be able to find a
379 product in the Chromium repositories that depends on that line of code or else
380 the line of code should be removed.
Darin Fisher0e196ee82019-09-06 22:39:12381
Kentaro Harac196ba12022-09-26 07:57:33382 When you are adding support for a new OS, a new architecture, a new port or
383 a new top-level directory, please send an email to
384 [email protected] and get approval. For long-term maintenance
385 reasons, we will accept only things that are used by the Chromium project
386 (including Chromium-supported projects like V8 and Skia) and things whose
387 benefit to Chromium outweighs any cost increase in maintaining Chromium's
388 supported architectures / platforms (e.g. adding one ifdef branch for an
389 unsupported architecture / platform has negligible cost and is likely fine,
390 but introducing new abstractions or changes to higher level directories has
391 a high cost and would need to provide Chromium with corresponding benefit).
392 Note that an unsupported architecture / platform will not have bots on
393 Google-managed waterfalls (even FYI bots) or maintained by Chromium
394 developers. Please use existing ifdef branches as much as possible.
Dirk Prankebfd0b6e2020-06-16 23:09:53395
Darin Fisher0e196ee82019-09-06 22:39:12396- **Code should only be moved to a central location (e.g., //base) when
397 multiple consumers would benefit.** We should resist the temptation to
398 build overly generic common libraries as that can lead to code bloat and
399 unnecessary complexity in common code.
400
401- **The code likely wasn't designed for everything we are trying to do with it
402 now.** Take time to refactor existing code to make sure the new feature or
403 subcomponent you are developing fits properly within the system. Technical
404 debt is easy to accumulate and is everyone's responsibility to avoid.
405
406- **Common code is everyone's responsibility.** Large files that are at the
407 cross-roads of many subsystems, where integration happens, can be some of the
408 most fragile in the system. As a companion to the previous point, be
409 cognizant of how you may be adding more complexity to the commons as you
410 venture to complete your task.
411
412- **Changes should include corresponding tests.** Automated testing is at the
413 heart of how we move forward as a project. All changes should include
414 corresponding tests so we can ensure that there is good coverage for code and
415 that future changes will be less likely to regress functionality. Protect
416 your code with tests!
417
Darin Fisher943fdf992020-10-29 18:02:50418- **Stick to the current set of supported languages as described in the
419 [styleguide][cr-styleguide].** While there is likely always a slightly better
420 tool for any particular job, maintainability of the codebase is paramount.
421 Reducing the number of languages eases toolchain and infrastructure
422 requirements, and minimizes the learning hurdles for developers to be
423 successful contributing across the codebase. Additions of new languages must
Takuto Ikuta9bc7d4ef2023-01-06 17:55:45424 be approved by [//ATL_OWNERS](../ATL_OWNERS).
Darin Fisher943fdf992020-10-29 18:02:50425
Kentaro Haradd8f7d702022-05-18 15:45:51426- **When your team is making API changes or migrating between services, the
427 team mandating the change needs to do at least 80% of the work.** The
428 rationale is to reduce externalities by having the team that requires a
429 change spend the vast majority of the time required to make it happen.
430 This naturally encourages designing to minimize the cost of change, be it
431 through automation, tooling, or pooled centralized expertise. You can find
432 more detailed rationale in [this doc](https://docs.google.com/document/d/1elJisUpOb3h4-7WA4Wn754nzfgeCJ4v2kAFvMOzNfek/edit#)
433 (Google internal). If you need an exception or help, please contact
434 [email protected].
435
Daniel Cheng86135f32019-02-27 07:10:38436## Tips
437
Dominik Röttschesd113bfa2019-07-10 08:56:24438### Review etiquette
439
Daniel Cheng86135f32019-02-27 07:10:38440During the lifetime of a review, you may want to rebase your change onto a newer
441source revision to minimize merge conflicts. The reviewer-friendly way to do
442this is to first address any unresolved comments and upload those changes as a
443patchset. Then, rebase to the newer revision and upload that as its own
444patchset (with no other changes). This makes it easy for reviewers to see the
445changes made in response to their comments, and then quickly verify the diffs
446from the rebase.
447
448Code authors and reviewers should keep in mind that Chromium is a global
449project: contributors and reviewers are often in time zones far apart. Please
450read these guidelines on [minimizing review lag][review-lag] and take them in
451consideration both when writing reviews and responding to review feedback.
452
Dominik Röttschesd113bfa2019-07-10 08:56:24453### Watchlists
454
455If you would like to be notified about changes to a set of files covering a
456topic or an area of Chromium, you may use the [watchlists][watchlist-doc]
457feature in order to receive email notifications.
458
Kalvin Lee23598832020-07-22 07:36:28459## Appendix: CL footer reference {#cl-footer-reference}
460
461Chromium stores a lot of information in footers at the bottom of commit
462messages. With the exception of `R=`, these footers are only valid in the
463last paragraph of a commit message; any footers separated from the last
464line of the message by whitespace or non-footer lines will be ignored.
465This includes everything from the unique `Change-Id` which identifies a
466Gerrit change, to more useful metadata like bugs the change helps fix,
467trybots which should be run to test the change, and more. This section
468includes a listing of well-known footers, their meanings, and their
469formats.
470
471* **Bug:**
472 * A comma-separated list of bug references.
473 * A bug reference
474 * can be a bare number, e.g. `Bug: 123456`, or
475 * can specify a project and a number, e.g. `Bug: skia:1234`.
476 * On chromium-review, the default project is assumed to be `chromium`,
477 so all bugs in non-chromium projects on bugs.chromium.org should be
478 qualified by their project name.
479 * The Google-internal issue tracker is accessible by using the `b:`
480 project prefix.
481* **Fixed:** The same as `Bug:`, but will automatically close the
482 bug(s) as fixed when the CL lands.
483* **R=**
484 * This footer is _deprecated_ in the Chromium project; it was
485 deprecated when code review migrated to Gerrit. Instead, use
486 `-r [email protected]` when running `git cl upload`.
487 * A comma-separated list of reviewer email addresses (e.g.
488 [email protected], [email protected]).
Kalvin Lee23598832020-07-22 07:36:28489* **Cq-Include-Trybots:**
490 * A comma-separated list of trybots which should be triggered and
491 checked by the CQ in addition to the normal set.
L. David Baron08adb302021-12-13 14:23:43492 * Trybots are indicated in `bucket:builder` format (e.g.
493 `luci.chromium.try:android-asan`).
494 * The "Choose Tryjobs" UI in the "Checks" tab in Gerrit shows (and has
495 a button to copy) the Cq-Include-Trybots syntax for the currently
496 selected tryjobs.
Kalvin Lee23598832020-07-22 07:36:28497* **No-Presubmit:**
498 * If present, the value should always be the string `true`.
499 * Indicates to the CQ that it should not run presubmit checks on the CL.
500 * Used primarily on automated reverts.
501* **No-Try:**
502 * If present, the value should always be the string `true`.
503 * Indicates to the CQ that it should not start or check the results of
504 any tryjobs.
505 * Used primarily on automated reverts.
506* **No-Tree-Checks:**
507 * If present, the value should always be the string `true`.
508 * Indicates to the CQ that it should ignore the tree status and submit
509 the change even to a closed tree.
510 * Used primarily on automated reverts.
511* **Test:**
512 * A freeform description of manual testing performed on the change.
513 * Not necessary if all testing is covered by trybots.
514* **Reviewed-by:**
515 * Automatically added by Gerrit when a change is submitted.
516 * Lists the names and email addresses of the people who approved
517 (set the `Code-Review` label on) the change prior to submission.
518* **Reviewed-on:**
519 * Automatically added by Gerrit when a change is submitted.
520 * Links back to the code review page for easy access to comment and
521 patch set history.
522* **Change-Id:**
523 * Automatically added by `git cl upload`.
524 * A unique ID that helps Gerrit keep track of commits that are part of
525 the same code review.
526* **Cr-Commit-Position:**
527 * Automatically added by the git-numberer Gerrit plugin when a change
528 is submitted.
529 * This is of the format `fully/qualified/ref@{#123456}` and gives both
530 the branch name and "sequence number" along that branch.
531 * This approximates an SVN-style monotonically increasing revision
532 number.
533* **Cr-Branched-From:**
534 * Automatically added by the git-numberer Gerrit plugin on changes
Emily Stark84d57192021-05-14 18:58:25535 which are submitted to non-main branches.
536 * Aids those reading a non-main branch history in finding when a
537 given commit diverged from main.
Dominik Röttschesd113bfa2019-07-10 08:56:24538
Daniel Cheng86135f32019-02-27 07:10:38539[//]: # (the reference link section should be alphabetically sorted)
John Palmer046f9872021-05-24 01:24:56540[checkout-and-build]: https://chromium.googlesource.com/chromium/src/+/main/docs/#checking-out-and-building
John Abd-El-Malek27e1cf02019-12-18 17:35:18541[chrome-dd-review-process]: http://go/chrome-dd-review-process
542[chromium-design-docs]: https://groups.google.com/a/chromium.org/forum/#!forum/chromium-design-docs
Daniel Cheng86135f32019-02-27 07:10:38543[code-reviews-owners]: code_reviews.md#OWNERS-files
544[code-reviews]: code_reviews.md
Toby Huang5105f812019-08-08 23:47:57545[commit-checklist]: commit_checklist.md
Daniel Cheng86135f32019-02-27 07:10:38546[commit-queue]: infra/cq.md
547[core-principles]: https://www.chromium.org/developers/core-principles
548[corporate-cla]: https://cla.developers.google.com/about/google-corporate?csw=1
549[cr-authors]: https://chromium.googlesource.com/chromium/src/+/HEAD/AUTHORS
John Palmer046f9872021-05-24 01:24:56550[cr-styleguide]: https://chromium.googlesource.com/chromium/src/+/main/styleguide/styleguide.md
Daniel Cheng86135f32019-02-27 07:10:38551[crbug-new]: https://bugs.chromium.org/p/chromium/issues/entry
552[crbug]: https://bugs.chromium.org/p/chromium/issues/list
John Palmer046f9872021-05-24 01:24:56553[cros-authors]: https://chromium.googlesource.com/chromium/src/+/main/AUTHORS
554[cros-dev-guide]: https://chromium.googlesource.com/chromiumos/docs/+/main/developer_guide.md
Daniel Cheng86135f32019-02-27 07:10:38555[crrev]: https://chromium-review.googlesource.com
556[depot-tools-setup]: https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up
John Abd-El-Malek27e1cf02019-12-18 17:35:18557[design-doc-template]: https://docs.google.com/document/d/14YBYKgk-uSfjfwpKFlp_omgUq5hwMVazy_M965s_1KA
Daniel Cheng86135f32019-02-27 07:10:38558[direct-commit]: https://dev.chromium.org/developers/contributing-code/direct-commit
559[discussion-groups]: https://www.chromium.org/developers/discussion-groups
560[github-tutorial]: https://try.github.io
561[good-git-commit-message]: https://chris.beams.io/posts/git-commit/
562[individual-cla]: https://cla.developers.google.com/about/google-individual?csw=1
Daniel Cheng737635ba2021-11-05 15:25:46563[life-of-a-chromium-developer]: https://docs.google.com/presentation/d/1abnqM9j6zFodPHA38JG1061rG2iGj_GABxEDgZsdbJg/edit
Daniel Cheng86135f32019-02-27 07:10:38564[noms-tutorial]: https://meowni.ca/posts/chromium-101
565[review-lag]: https://dev.chromium.org/developers/contributing-code/minimizing-review-lag-across-time-zones
566[skia-dev-guide]: https://skia.org/dev/contrib
567[try-job-access]: https://www.chromium.org/getting-involved/become-a-committer#TOC-Try-job-access
568[v8-dev-guide]: https://v8.dev/docs
Dominik Röttschesd113bfa2019-07-10 08:56:24569[watchlist-doc]: infra/watchlists.md