| # Contributing to the WebRTC project | |
| ## License Agreement | |
| WebRTC welcomes patches for features and bug fixes! | |
| For contributors external to Google, follow the instructions given in the | |
| [Google Individual Contributor License Agreement][Google individual CLA]. | |
| In all cases, contributors must sign a contributor license agreement before | |
| a contribution can be accepted. Please complete the agreement for an | |
| [individual][individual] or a [corporation][corporation] as appropriate. | |
| [Google Individual CLA]: https://cla.developers.google.com/about/google-individual. | |
| [individual]: https://developers.google.com/open-source/cla/individual | |
| [corporation]: https://developers.google.com/open-source/cla/corporate | |
| ## Instructions | |
| ### Contributing your First Patch | |
| You must do some preparation in order to upload your first CL: | |
| * [Check out and build the code][Check out and build the code] | |
| * Fill in the Contributor agreement (see above) | |
| * If you’ve never submitted code before, you must add your | |
| (or your organization’s in the case the contributor agreement is signed by | |
| your organization) name and contact info to the | |
| [AUTHORS][AUTHORS] file | |
| * Go to [https://webrtc.googlesource.com/new-password](new-password) | |
| and login with your email account. This should be the same account as | |
| returned by `git config user.email` | |
| * Then, run: `git cl creds-check`. If you get any errors, ask for help on | |
| [discuss-webrtc][discuss-webrtc] | |
| You will not have to repeat the above. After all that, you’re ready to upload: | |
| [Check out and build the code]: https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/development/ | |
| [AUTHORS]: https://webrtc.googlesource.com/src/+/refs/heads/main/AUTHORS | |
| [new-password]: https://webrtc.googlesource.com/new-password | |
| [discuss-webrtc]: https://groups.google.com/forum/#!forum/discuss-webrtc | |
| [Chromium recommendations for code reviews]: https://chromium.googlesource.com/chromium/src/+/main/docs/cl_tips.md | |
| ### Uploading your First Patch | |
| Now that you have your account set up, you can do the actual upload: | |
| * Do this: | |
| * Assuming you're on the main branch: | |
| * `git checkout -b my-work-branch` | |
| * Make changes, build locally, run tests locally | |
| * `git commit -am "Changed x, and it is working"` | |
| * `git cl upload` | |
| This will open a text editor showing all local commit messages, allowing you | |
| to modify it before it becomes the CL description. | |
| Fill out the bug entry properly. Please specify the issue tracker prefix and | |
| the issue number, separated by a colon, e.g. `webrtc:123` or `chromium:12345`. | |
| If you do not have an issue tracker prefix and an issue number just add `None`. | |
| Save and close the file to proceed with the upload to the WebRTC | |
| [code review server](https://webrtc-review.googlesource.com/q/status:open). | |
| The command will print a link like | |
| [https://webrtc-review.googlesource.com/c/src/+/53121][example CL link]. | |
| if everything goes well. | |
| * Click this CL Link | |
| * If you’re not signed in, click the Sign In button in the top right and sign | |
| in with your email | |
| * Click Start Review and add a reviewer. You can find reviewers in OWNERS files | |
| around the repository (take the one closest to your changes) | |
| * Address any reviewer feedback: | |
| * Make changes, build locally, run tests locally | |
| * `git commit -am "Fixed X and Y"` | |
| * `git cl upload` | |
| * Once the reviewer LGTMs (approves) the patch, ask them to put it into the | |
| commit queue | |
| NOTICE: On Windows, you’ll need to run the above in a Git bash shell in order | |
| for gclient to find the `.gitcookies` file. | |
| [example CL link]: https://webrtc-review.googlesource.com/c/src/+/53121 | |
| ### Trybots | |
| If you're working a lot in WebRTC, you can apply for *try rights*. This means you | |
| can run the *trybots*, which run all the tests on all platforms. To do this, | |
| file a bug using this [template][template-access] and the WebRTC EngProd team | |
| will review your request. | |
| To run a tryjob, upload a CL as described above and click either CQ dry run or | |
| Choose Trybots in the Gerrit UI. You need to have try rights for this. Otherwise, | |
| ask your reviewer to kick off the bots for you. | |
| If you encounter any issues with the bots (flakiness, failing unrelated to your change etc), | |
| please file a bug using this [template][template-issue]. | |
| [template-access]: https://bugs.chromium.org/p/webrtc/issues/entry?template=Get+tryjob+access | |
| [template-issue]: https://bugs.chromium.org/p/webrtc/issues/entry?template=trybot+issue | |