Wednesday 25 January 2012

Branch, Trunk and Release Candidate


Q1. What is the trunk?
A.
The trunk is the central source code that is used for continuous and ongoing development. Trunk builds contain the very latest bleeding-edge changes and updates. For example Mozilla Firefox nightly builds cab be found at location ftp://ftp.mozilla.org/pub/firefox/nightly/

Have a look at the date and time each builds created. All the builds created last year on in folder 2011 and all the builds created this year a time and date.

Nightly

However, the trunk can also be very unstable at times, so it's good to ask around before using trunk builds. Latest trunk builds: ftp://ftp.mozilla.org/pub/firefox/nightly/latest-trunk/

Q2. What is a branch?
A. Branches are "forks" in the code, split from the trunk and destined to become end-user releases. At conception, a branch contains everything that the trunk contains, but from that point onwards, only certain fixes or changes will be accepted. Therefore, over time, the branch becomes more stable.

Mozilla branches are 1.0rc2, 1.5rc3, 2.0rc3, 3.0rc3, 3.5rc3, 3.6rc3 Branch can be seen under link: ftp://ftp.mozilla.org/pub/firefox/releases/

Q3. Why branch? Wouldn't it be better to have everyone working towards a release?
A. Many developers prefer to work on areas of the code which are too risky to change when approaching a release. Some of their changes may also take months to test and implement correctly. Their changes will be made to the trunk so that they don't delay the release and will be picked up in future branches.

Q4. How can you distinguish between trunk and branch builds?
A. The main way you can determine if you are using a trunk or branch build is to click the "Help" menu and choose "About". You should see a string that looks something like this:

1.9.0 Branch:
Code:
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.13pre) Gecko/20090727 GranParadiso/3.0.13pre

1.9.1 Branch:
Code:
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2pre) Gecko/20090727 Shiretoko/3.5.2pre

Trunk:
Code:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.3a4pre) Gecko/20100407 Minefield/3.7a4pre


The part that you want to note is the Gecko revision number (rv) and the Firefox version string. These correspond to which build you are using. It works something like this:
rv:1.7.x and Firefox 1.0.x = Gecko 1.7 (Firefox 1.0) Branch.
rv:1.8.0.x and Firefox (or Deer Park) 1.5.0.x = Gecko 1.8.0 (Firefox 1.5) Branch.
rv:1.8.1.x and Firefox (or Bon Echo) 2.0.0.x = Gecko 1.8.1 (Firefox 2) Branch.
rv:1.9.0.x and Firefox (or Gran Paradiso) 3.0.x = Gecko 1.9.0 (Firefox 3.0) Branch.
rv:1.9.1.x and Firefox (or Shiroteko) 3.5.x = Gecko 1.9.1 (Firefox 3.5) Branch.
rv:1.9.2.x and Firefox (or Namoroka) 3.6 = Gecko 1.9.2 (Firefox 3.6) Branch.
rv:1.9.2.4pre and Firefox (or Lorentz) 3.6.4pre and onwards = Gecko 1.9.2.x (Firefox 3.6) Branch - backporting out-of-process plugin support from trunk.
rv:1.9.3.x and Firefox (or Minefield) 3.7a1pre and onwards = Gecko 1.9.3 Trunk (towards Firefox 3.7)

Q5. Where can I find out the recent changes that have been made to the trunk or a branch?
A. Read the relevant nightly threads in the builds forum. An excellent unofficial changelog is maintained at The Burning Edge: http://www.squarefree.com/burningedge/releases/

Q6. Now that Firefox 3.6 has been released, what will happen to the branch?
A: Only security or stability updates will be checked into the Gecko 1.9.2 branch.
Any releases from Gecko 1.9.2 branch will be labelled Firefox 3.6.x

Q7: What new features are planned for Firefox? When will the next version be released?
A: Feature planning and release roadmap (always tentative) - https://wiki.mozilla.org/Firefox/Roadmap

Q8: What's Bon Echo/Gran Paradiso/Shiroteko/Namoroka/Lorentz /Minefield?
A: Bon Echo is the project codename for Firefox 2
Gran Paradiso is the project codename for Firefox 3
Shiroteko is the project codename for Firefox 3.5
Namoroka is the project codename for Firefox 3.6
Lorentz is the project codename for Firefox 3.6.4
Minefield is the name given to builds from the Firefox trunk.

Q9. Why use project codenames?
A. Alpha or developer-only builds use these code names to distinguish them from nightly builds, but also to maintain an element of distance from public-oriented builds (e.g. betas / release candidates / final). The code names are also used for the third-party/unofficial builds of Firefox releases.

No comments:

Post a Comment