| # 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 |
| |