Media/WebRTC/Up-streaming Changes
Prerequisites
- Install the prerequisite software for libwebrtc development as instructed here.
- While that is installing create an account with the upstream repo. In order to submit patches as a Mozilla employee this will involve filling out a corporate contributor agreement via this bug. Also see the sections Contributing Your First Patch and Contributor Agreement for more information about the agreement itself.
One can check that one has been successfully added here. When you click "Manage your Agreements" at the bottom of the page should see that you have a Mozilla Corporate CLA listed. If you aren't already logged into a Google service, you will need to use Mozilla's SSO portal to log in to gmail or any other google product.
Installing Commit-Id Git Commit Hook Plugin
In order to push patch stacks (instead of squashing), one needs to have a Git commit hook installed to correlate the stack patches using a Change-Id.
Checking Out The Source
- Use the instructions here to checkout the upstream repo if you have not already. To get all of the branch heads one will need to alter the
webrtc-checkout/src/.git/config
file add the following linefetch = +refs/branch-heads/*:refs/remotes/branch-heads/*
and rungit pull
. This is useful so that one can test out the patch against both main and the head of the release branch that is currently in use by Firefox.
Running Tests
- While these instructions are for running Chromium tests, the same process applies for libwebrtc. There is no facility to help you run all the tests, you need to run all the test binaries that are produced. There are no facilities for helping you identify which tests you should be running. Inserting an RTC_CHECK(false), can be useful for verifying that one is testing using the correct binary.
- You may find building without your change, building with your change, and then sorting the tests by last modified will help identify candidates to run.
Code Submission Process
Setting up Git Credentials
Please follow the directions here to set up you git credentials so that you can push to the review servers.
Writing A Unit Test
It is very likely that one will need to write a libwebrtc unit test that covers the code change, or alter a unit test to pass with the new code change. The unit test should ideally run correctly on both the main branch and the release branch that Firefox is using.
Opening An up-stream Bug
One will need to file a bug for one's fix under the appropriate component in the WebRTC Monorail instance. In the bug one may mention that there is a fix that has been shipped in Firefox, and include a link to the
Submitting An up-stream Patch
- libwebrtc uses this Gerrit instance to track reviews. Note the ID of the bug that Monorail generated as one will need to use that ID in the commit message of your proposed fix. One's git commit message should include a line that reads `BUG=webrtc:xxxx`, where xxxx is the bug ID from Monorail.
Requesting A Reviewer
In the past we have emailed our contact at google seeking reviews for specific bugs.
Asking For CI Runs
One can request a CI in the discussion for the review. Sometimes it takes a while for people to get to it. TODO There is a method for requesting CI access, talk to Pehrsons.
After The Code Is Landed Up-stream
Now that the code is landed up-stream there are two more steps that one needs perform. Firstly, in the Mozilla repo one will create a backout patch for the code that was up-streamed. Secondly, one will create a cherry-pick patch from the upstream release.
Tracking Progress
There is a spreadsheet to track the progress of our in progress up-stream patches.