Thunderbird/Release Driving/Rapid Release Activities/Compatibility Bump

From MozillaWiki
Jump to: navigation, search

Compatibility bump information goes to addons.mozilla.org and is used to determine if to bump an add-on's maximum application compatible version or not.

Obtaining the data

This assumes we are doing a compatibility bump for the version of Thunderbird currently on Earlybird, i.e. the comm-aurora repository.

Throughout the notes, we'll be taking version 11 as an example.

If the Earlybird version is 11, then you're doing the compatibility bump from 10 to 11.

Setting up

  • Make sure you have a clean comm-aurora repository.
$ hg clone http://hg.mozilla.org/releases/comm-aurora
$ cd comm-aurora
  • Determine the tags for the previous merges to comm-aurora
    • If this hasn't been merged to comm-beta yet, then the latest tag can be "default"
    • The previous tag will be AURORA_<version - 1>_END, e.g. in the example "AURORA_10_END"
  • Mercurial is only so-so at ignoring whitespace changes. You may want to follow the instructions in the Mozilla Mercurial guide and replace "hg diff -w" in the instructions below.

Collecting the data

This is currently a manual process, but generally the changes aren't too big.

All the changes, ordered by hg diff

I've been experimenting with a new way of retrieving all the relevant changes. I use the following shell script, stored in a file named revReports.sh:

#! /bin/sh
# Produce diffs for version compatibility reports
# https://wiki.mozilla.org/Thunderbird/Release_Driving/Rapid_Release_Activities/Compatibility_Bump
# Usage revReports.sh <base-rev> (<final-rev)?; e.g. revReports.sh AURORA_14_END
#       or revReports.sh AURORA_15_END AURORA_16_END

hg log -p --exclude 're:.*\/test\/.*' --exclude 'suite' --exclude 'calendar' -r ${1}:${2-default} --include 'glob:**.{idl,js,dtd,properties}'

The advantage is that this gives the hg revision and bugzilla reference in the same output, near the change, so it removes the step of searching for the relevant bug after spotting a relevant change in the diff output. The downside is that it doesn't exclude whitespace changes.

idl/xpcom changes

$ hg diff -w --exclude 're:.*\/test\/.*' --exclude 'suite' --exclude 'calendar' -r AURORA_10_END -r default --include 're:.*\.idl$'

(you can pipe to less or a file if you want).

What to look for:

  • Interfaces removed
    • Record the interface name
  • Interfaces changed
    • If a function was added it doesn't get listed
    • If a function was removed or changed, list interface name and function

What not to look for:

  • [noscript] interface changes
    • Javascript add-ons won't use these anyway, and we don't bump compatibility on binary add-ons.
  • ACString -> AUTF8String changes
    • e.g. for attribute names. Generally this is just coping with non-ascii strings better, and doesn't affect accessing those attributes/interfaces from javascript.

For each item in the list use mxr to look up the bug number for the change and add to the list.

Javascript changes

$ hg diff -w --exclude 're:.*\/test\/.*' --exclude 'suite' --exclude 'calendar' -r AURORA_10_END -r default --include 're:.*\.js$'

What to look for:

  • Global variables removed
    • Sometimes its reasonably obvious they are unlikely to be used, or the name might be a bit to generic to not bump compatibility on. However sometimes there are some that extensions have grown to rely on
    • Record the variable name
  • Functions/objects removed
    • Record the function name
  • Files removed
    • Record the file name
  • Functions with changed parameters - only where we remove parameters
    • Record the function name

For each item in the list use mxr to look up the bug number for the change and add to the list.

Locale Files

$ hg diff -w --exclude 're:.*\/test\/.*' --exclude 'suite' --exclude 'calendar' -r AURORA_10_END -r default --include 're:.*\.dtd$'
$ hg diff -w --exclude 're:.*\/test\/.*' --exclude 'suite' --exclude 'calendar' -r AURORA_10_END -r default --include 're:.*\.properties$'

What to look for:

  • Strings removed
    • Record the string name
  • Files removed
    • Record the file name

Bug Report

  • Clone an existing bug report, e.g. bug 693562 or bug 707938.
  • cc :standard8 and assign to :sancus if not already.
  • Example information to put on bug report (these examples are not from the 10 -> 11 bump):
We need to run a compatibility bump for all Thunderbird add-ons from version 10 to 11.

In addition to the Firefox 10 -> 11 changes, the specific list for Thunderbird is below.

Interface Changes

- Bug 668700
-- nsIMsgSearchScopeTerm.mailFile and nsIMsgSearchScopeTerm.inputStream have been replaced

Javascript Changes

- MsgDeleteMessageFromMessageWindow
-- Function removed by bug 702201
- AddMessageComposeOfflineObserver
- RemoveMessageComposeOfflineObserver
-- Both functions renamed, by bug 682581

- gDownloadManagerStrings
-- Variable removed by bug 700220

Files Removed

- nsTryToClose.js
-- removed by bug 539997
- myStringFile.dtd
-- removed by bug xxxxxx

String Changes

- Strings removed/renamed: mystring.label,mystring.accesskey