Now that active development is starting to happen on comm-central and it's not just a canary for 'future problems', perhaps we should consider actually having two sets of Thunderbird comm-central builders:
1) Thunderbird-canary. Always builds latest mozilla-central.
2) Thunderbird. Always builds the most recent revision of mozilla-central that got greens on all platforms in a Thunderbird-canary build.
a) have to run around doing heroic things to un-break the build when they do cause comm-central-only breakage, or worse yet, request that they back things out because of our problems.
b) have the comm-central tree in a questionable state where we cannot tell mozilla-central breakage from our own breakage and hence need to close the tree.
I would suggest that we would generally aim for Thunderbird to generally stay within a few commits of Thunderbird-canary most of the time. Intermittent oranges do happen, and they would likely cause somewhat jerky motion of the revision we use, but I would expect it to be manageable. When a comm-central-affecting commit does land in mozilla-central, I expect we would try and resolve it on a timescale of ~3 real days, with larger problems taking up to a week before people we should start getting concerned. The goal is to avoid requiring heroics or the introduction of sloppy fixes that are created and reviewed under duress.
I would suggest that we do not keep the 'good' revision in revision control, but do publish it at a public URL and that we do point client.py at it so that random people who want to build Thunderbird do not need to deal with breakage.
I would also suggest we increase the build pool size and take steps to ensure that Thunderbird-canary cannot steal builders from Thunderbird, as I have found it continues to do such things currently.
I think these are all great ideas. Thanks for moving forward on this.
One point, though:
On 11.05.2010 06:55, Andrew Sutherland wrote:
I would suggest that we do not keep the 'good' revision in revision control, but do publish it at a public URL and that we do point client.py at it so that random people who want to build Thunderbird do not need to deal with breakage.
Nice idea, but I think it is better to commit to repo somehow. Maybe at slower intervals.
On 11.05.2010 18:51, Ben Bucksch wrote:I think these are all great ideas. Thanks for moving forward on this.
One point, though:
On 11.05.2010 06:55, Andrew Sutherland wrote:
I would suggest that we do not keep the 'good' revision in revision control, but do publish it at a public URL and that we do point client.py at it so that random people who want to build Thunderbird do not need to deal with breakage.
Nice idea, but I think it is better to commit to repo somehow. Maybe at slower intervals.
Actually, let me refine that. My proposal earlier was:
We commit the *first* (not the last known) revision of m-c that this version of c-c works with, let me call it "GECKO_VERSION_MIN". In other words, whenever we make a m-c bustage/compatibility fix, we also change the "known good" m-c revision. All subsequent checkouts and revisions of c-c then take that this m-c version. Newer versions of m-c can be used on your own risk (that is what tinderbox-canary would track). But you'll always have a good, compatible version of m-c matching this version of c-c.
You could also add a second version "also known to work with", let's say "GECKO_VERSION_GOOD", which is updated in the repo every week or so, and published on a webserver (SSL, please!). That's the version you talked about.
It's not much work to implement this:
- whenever you make a m-c bustage or compatibility fix, you update GECKO_VERSION_MIN and GECKO_VERSION_GOOD in build/gecko-version.txt in the same commit.
On 11/05/2010 05:55, Andrew Sutherland wrote:Now that active development is starting to happen on comm-central and it's not just a canary for 'future problems', perhaps we should consider actually having two sets of Thunderbird comm-central builders:I think you're right that we need to consider both alternate methods of allowing development to continue.
1) Thunderbird-canary. Always builds latest mozilla-central....
2) Thunderbird. Always builds the most recent revision of mozilla-central that got greens on all platforms in a Thunderbird-canary build.
a) have to run around doing heroic things to un-break the build when they do cause comm-central-only breakage, or worse yet, request that they back things out because of our problems.Ok, so first and foremost, we should *never* be requesting that they back-out because of our problems. The only time I think they should consider backing out because of problems raised by our tree is when we've clearly picked up an issue in one of our test cases that they haven't covered, i.e. its a true bustage that could affect Firefox as well (for instance, I know we've picked up js faults in the past).
b) have the comm-central tree in a questionable state where we cannot tell mozilla-central breakage from our own breakage and hence need to close the tree.Indeed, that is the most difficult issue.
So before we go into the specifics of your proposal, I'd like to just go through some of the most frequent bustage areas that we've been seeing:
- Build Config
- m-c has been doing a lot of rework on build config areas and have been either breaking non-libxul builds, or changing things such that we need to port them across to comm-central build config.
- These are two things that I think we can consider improving:
- Ted is currently working on a way to include app specific components within the libxul library [1]. This is for non-xulrunner builds, but would mean that we could be built like Firefox, as mailnews could be linked into libxul *and* use internal linkage. I probably need to cover this in more detail elsewhere, but this would certainly help to match us closer to FF and reduce bustage.
- This would also mean we could go onto using packaged tests, which would further help with matching FF.
- Reworking how comm-central works. I've had on my plate for a while (and unfortunately I've just not got round to it yet) to start a conversation on how to improve how we do comm-central. Basically looking at the ways of reducing the need to port bugs from mozilla-central all the time.