wiki:QtWebKitReleases

Version 34 (modified by Ademar Reis, 8 years ago) (diff)

--

Procedures and policies for releases of QtWebKit

Releases of QtWebKit are cut from WebKit's trunk. Some time before the release a new branch is created and hosted in a Git repository. After the release it becomes a maintenance branch.

Release branches

QtWebKit 2.2

QtWebKit 2.1

QtWebKit 2.0

Release branch creation

Getting changes into a release branch

If you'd like to include a patch in the release branch, please consider only fixes for:

  • Security related problems
  • Data corruption
  • Crashes
  • Broken build
  • Regression from the previous release
  • Documentation changes
  • Crucial usability issue (after discussion in the mailing list)

There are two ways to integrate changes into a release branch:

  • The commit is landed in trunk and then cherry-picked into the release branch.
  • Time constraints prevent us from landing the patch and we have to include a change before landing it (exceptional patch, see below).

Exceptional patches must satisfy the following criteria before they are included in the release:

  • An entry with the attached patch is filed in bugs.webkit.org (using http://webkit.org/new-qtwebkit-bug);
  • The patch has a ChangeLog entry;
  • The changes are public and live on a gitorious branch, rebased with the targeted release;
  • They should have a layout test included whenever possible;
  • At least one WebKit reviewer signs off on the patch and no other reviewer objects;
  • The bug is marked to block the tracker bug for patches pending trunk inclusion: https://bugs.webkit.org/show_bug.cgi?id=32653;
  • Any exception has to be first discussed in the public mailing list;

After the release we have to make a concentrated effort in reducing the number of exceptional patches, by reviewing the changes in the bugs that the tracker bug (32653) depends on.

Procedures for cherry-picking and weekly releasing

The process for cherry-picking changes from trunk to a stable branch is semi-automated. To keep things working as expected, some care must be taken when commiting changes there. Below are the basic steps and the commands involved:

  • Clone the qtwebkit git/svn mirror and keep it up to date;
  • Downloand and setup qtwebkit/tools (change PATH and PYTHONPATH as necessary);
  • Check UsingMirrorWithGitSvn and UsingGitWithWebKit for setup instructions and valuable tips and tricks;
  • Set your username and password in git-config (see instructions in the link above);
  • From the branch where you want to cherry-pick a change (git new-workdir is your friend), run cherry-pick-into-release-branch.py (see --help). This script will parse bugzilla, ask for cherry-picks, add comments and remove bugs from their trackers;
  • If there's a conflict, the script will abort. In that case:
    • Solve the conflict (git status, git rm, git add, patch the files manually, etc -- your choice);
    • Commit the changes with a standard git commit command. It'll keep the changelog from the original git commit plus a list of conflicting files, but you'll have to add a line "Author: Foo Bar <foobar@whatever.com>", otherwise you'll be listed as the commit author;
    • Run the script again, it'll detect the new commit and continue as expected;
  • Before letting the script add a comment to bugzilla, make sure the build is not broken and run some basic tests (run QtTestBrowser, the API tests, the layout tests -- your choice), so that if there's something broken, you can fix it and git commit --amend the changes before a reference is added to bugzilla;
  • Sometimes a fix has follow-up commits to rebaseline layout tests or add other minor fixes. You can find them in the git log of trunk. The script won't detect these, but it can be done by looking for the bug ID and the SVN revision (to-do).
  • Avoid adding extra commits in the branch, always prefer cherry-picks to keep cross references with what's in trunk (via git-svn-id);
  • If the patch is a backport, you're free to add your own changelog, but make sure there are at least two lines there: one with the bug title and one with the full bug URL;
  • In case of doubts, follow the example of what's already there (see git log);
  • Check this thread about the usage of meta-bugs on the QtWebKit Mailing List.

IMPORTANT: Special care must be taken when handling fixes for security bugs. Please check the QtWebKit Security Page for details and instructions.

To create release notes reports (similiar to the ones posted weekly to the QtWebKit Announcement Mailing List), run the create-release-notes.py (see --help). Some examples:

  $ create-release-notes.py --commits <previous-tag> --email 'foo@bar.com;bar@foo.com'
  $ create-release-notes.py --since-last-tag --commits --email webkit-qt@lists.webkit.org --announce

Tag the repository (git tag -a for an annotated tag) and then push the changes (git push --tags).

Release Criterias and Timeline

These are the simplified release criteria. QA criterias and product requirements are not listed here.

Technology Previews (TPs)

A TP release is basically to invite the community to try out new features and provide some initial feedback. It has no major quality guarantees and the decision about when to release it heavily depends on the feeling from the development team.

  • All buildbots should be green;
  • The development team should be relatively confident that basic features work on the reference platform;
  • The code builds and pass through a basic smoke test on all Tier 1 platforms;

Betas

A beta release means the software is stabilizing but has known bugs we plan to fix before the release. There may be multiple betas during the development process.

  • We have buildbots running on all Tier 1 platforms and they're green;
  • The QA team has tested the code for regressions against the latest stable release using the same testcases (and bugs have been opened if necessary);
  • QA Team is actively testing the release on Tier 1 platforms and the weekly ratio between critical bugs fixed and critical bugs reported is bigger than 1;
  • The code builds and pass through a basic smoke test on all Tier 2 platforms;

Release Candidate (RC)

A RC release is made when we believe the code is ready to ship.

  • There has been at least one beta release;
  • All buildbots are green;
  • There are no critical bugs blocking the release;
  • Reports from QA indicate we're in better shape than the previous official version;
  • We're confident that the software is ready;

Once the first RC is out, no more "nice-to-have" fixes will be accepted and thus the meta bug is closed;

Final Release

The final release is the last RC but with final versioning.

  • At least one week has passed since the last RC release and no critical bugs have been reported;

After the final release, the meta but that tracks critical bugs blocking the release is closed;

Minor Update (maintenance)

A meta-bug for maintenance is open on bugzilla, following the same pattern of the meta-bugs during the stabilization period.

Supported Platforms

There's always one Reference Platform where development and QA is focused and then Tier 1 and Tier 2 platforms, where testing and support criterias vary. The current list of supported platforms is:

Reference Platform:

  • Linux Desktop

Tier 1:

  • Apple Mac OS X 10.6 (Cocoa)
  • Microsoft Windows XP SP3 32-bit
  • Microsoft Windows 7 32 bits
  • Symbian (Symbian^3)

Tier 2:

  • Microsoft Windows Vista 32 bits
  • Apple Mac OS X 10.5 (Cocoa)
  • Meego 1.x

Details in the QtWebKitPlatformSupport wiki.

Release Management Tools

The scripts used to semi-automate the release management work (cherry-pick, bugzilla interaction, reports, release-notes, etc) can be found in the qtwebkit/tools git repository.

See Also