Changes between Version 8 and Version 9 of ImprovingPractices


Ignore:
Timestamp:
Aug 23, 2007, 11:41:53 AM (15 years ago)
Author:
Beman Dawes
Comment:

Reorganize release tree per Rene's suggestion, define the role of the release manager

Legend:

Unmodified
Added
Removed
Modified
  • ImprovingPractices

    v8 v9  
    1313 * Timely Boost releases on a predictable schedule, with no possibility that problems with a few libraries can delay a release of Boost as a whole.
    1414
    15  * The next [#Release-ready release-ready] Boost code available from the Subversion repository at all times, including both fixes and new libraries added subsequent to the last official release. Users of this version should not have to wait for a formal release, and should not have to run the risk of instability associated with purely developmental branches.
     15 * The upcoming release available from the Subversion repository at all times, [#Release-ready release-ready] and including both fixes and new libraries added subsequent to the last official release. Users of this version should not have to wait for a formal release, and should not run the risk of instability associated with purely developmental branches.
    1616
    1717 * Release preparation does not require super-human effort by the release manager, developers, or testers.
     
    5252== Repository Organization ==
    5353
    54  ==== ''Main trunk'' ====
     54Overview:
     55
     56{{{
     57//svn.boost.org/svn/boost/trunk/ (boost-root)
     58                          branches/ (branch-name) / (content)
     59                          tags/ (tag-name / (content)
     60                          release/trunk/ (boost-root)
     61                                  tags/ (tag-name / (boost-root)
     62}}}
     63
     64==== ''Main trunk'' ====
    5565 The main development and test location.
    5666
     
    6171 The URL for the main trunk is [source:/trunk http://svn.boost.org/svn/boost/trunk]
    6272
    63  ==== ''Development branches'' ====
     73==== ''Development branches'' ====
    6474 Location for speculative/experimental/future work on an individual library or set of libraries.
    6575
    66  The URL for development branches is !http://svn.boost.org/svn/boost/branches/branch-name
     76 The URL for development branches is in the form !http://svn.boost.org/svn/boost/branches/branch-name
    6777
    68  ==== ''Next'' ====
    69  The tree that will become the next release of Boost. This is where a library is merged by its developers when an update for the library is [#Release-ready release-ready].
     78==== ''Release tree'' ====
    7079
    71  The URL for next is http://svn.boost.org/svn/boost/release/next
     80The release tree is the domain of the release manager. The release manager sets the policies for when and by whom updated libraries can be merged into the release trunk, and may set locks and permissions on the release tree to enforce those policies. The policies will vary at different points of time during the release cycle.
     81 
     82===== ''Release trunk'' =====
     83 The boost-root that will become the next release of Boost. This is where a library is merged when an update for the library is [#Release-ready release-ready].
    7284
    73  ==== ''Release tags'' ====
     85 The URL for the release trunk is http://svn.boost.org/svn/boost/release/trunk
     86
     87===== ''Release tags'' =====
    7488 These are copies of the the Release tree made by the release manager, identifying the basis for generating tarballs and such. There are two forms; one for release candidates, another for final releases.
    7589
    76  The URLs for release candidates are in the form !http://svn.boost.org/svn/boost/release/RC_1_35_0_n
     90 The URLs for release candidates are in the form !http://svn.boost.org/svn/boost/release/tags/RC_1_35_0_n
    7791
    78  The URLs for final releases are in the form !http://svn.boost.org/svn/boost/release/1_35_0
     92 The URLs for final releases are in the form !http://svn.boost.org/svn/boost/release/tags/1_35_0
    7993
    8094== Development Cycle ==
    8195
    82 Developers can ensure a [#Stable stable] development environment by checking out [source:/release http://svn.boost.org/svn/boost/release] as their working copy, and then [http://svnbook.red-bean.com/en/1.1/ch04s05.html switching] only the library they are working with to [source:/trunk http://svn.boost.org/svn/boost/trunk] or a library specific development branch.
     96Developers can ensure a [#Stable stable] development environment by checking out [source:/release/trunk http://svn.boost.org/svn/boost/release/trunk] as their working copy, and then [http://svnbook.red-bean.com/en/1.1/ch04s05.html switching] only the library they are working with to [source:/trunk http://svn.boost.org/svn/boost/trunk] or a library specific development branch.
    8397
    84 === Merging from trunk to next ===
     98=== Merging from development trunk to release trunk ===
    8599
    86 When the next version of a library has been tested and is stable on the trunk, and is fully [#Release-ready release-ready], it is merged next by its developers.
     100When the next version of a library has been tested and is stable on the main trunk, and is fully [#Release-ready release-ready], it is merged into the release trunk.
    87101
    88 Detailed procedure for developers:
     102Detailed procedure for merging:
    89103
    90  * Verify that the library meets all release criteria. '''Important:''' Libraries must not be merged into next until they are already known to be fully [#Release-ready release-ready].
     104 * Verify that the library meets all release criteria. '''Important:''' Libraries must not be merged into the release trunk until they are already known to be fully [#Release-ready release-ready].
    91105
    92106 * TortoiseSVN:
    93    * Start with a working copy of https://svn.boost.org/svn/boost/release/next.
     107   * Start with a working copy of https://svn.boost.org/svn/boost/release/trunk.
    94108   * Select the directory and/or files to be merged.
    95109   * Right-click selection for context menu, and TortoiseSVN > Merge...
    96      * From: https://svn.boost.org/svn/boost/release/next/...
     110     * From: https://svn.boost.org/svn/boost/release/trunk/...
    97111     * From: Head revision
    98112     * To: '''Uncheck''' the Use "From:" URL checkbox.
     
    120134== Testing ==
    121135
    122 Both trunk and next testing go on continuously, independent of when releases actually occur. Testers never have to change the repository URLs they test against.
     136Both development trunk and trunk testing go on continuously, if needed, independent of when releases actually occur. Testers never have to change the repository URLs they test against.
    123137
    124138=== Trunk testing ===
     
    126140The [#Maintrunk main trunk] is where most testing resources should be concentrated, since these tests are what tell developers that their library works on all tested platforms and tell the release management team that it is OK to merge a library into the release tree.
    127141
    128 === Release next testing ===
     142=== Release trunk testing ===
    129143
    130 In theory, it should not be necessary to test next at all, since everything merged into it should already be known to be [#Release-ready release-ready].
     144In theory, it should not be necessary to test the release trunk at all, since everything merged into it should already be known to be [#Release-ready release-ready].
    131145
    132 In practice, the release criteria platform/compiler combinations at the minimum should be tested on next. A single reliable test runner for each release criteria platform/compiler combination should be sufficient.
     146In practice, the release criteria platform/compiler combinations at the minimum should be tested on the release trunk. A single reliable test runner for each release criteria platform/compiler combination may be sufficient, but that's up to the release manager to decide.
     147
     148== Role of the Release Manager ==
     149
     150The release manager has the responsability of generating a timely high-quality release.
     151
     152The release manager has the authority to make all critical decisions about releases, including setting release criteria, release cycle timing, revisions of problem libraries to prior versions, and all other release related decisions.
    133153
    134154== Acknowledgments ==
     
    142162Discussion during [http://www.boostcon.com BoostCon 2007] between Beman Dawes, Thomas Witt, Troy Straszheim, Dave Abrahams, Eric Niebler, and Doug Gregor shaped this proposal.
    143163
    144 Comments and corrections to this page were contributed by Stefan Seefeld, Peter Dimov, ...
     164Comments and corrections to this page were contributed by Stefan Seefeld, Peter Dimov, Rene Rivera, Robert Ramey, Michael Caisse, Nicola Musatti, ...
    145165
    146166----