| 1 | {{{ |
| 2 | #!rst |
| 3 | ============================================================================== |
| 4 | GDAL Release Management Process |
| 5 | ============================================================================== |
| 6 | |
| 7 | :Author: Howard Butler |
| 8 | :Contact: hobu.inc@gmail.com |
| 9 | :Date: 2007-12-04 |
| 10 | |
| 11 | .. sectnum:: |
| 12 | |
| 13 | .. contents:: |
| 14 | :depth: 3 |
| 15 | :backlinks: top |
| 16 | |
| 17 | This document steals heavily from MapServer `MS RFC 34`_, written by |
| 18 | Daniel Morissette. |
| 19 | |
| 20 | |
| 21 | Version Management |
| 22 | ------------------ |
| 23 | |
| 24 | GDAL uses a typical major.minor.revision (eg, 1.5.0) release numbering scheme |
| 25 | with the major release limited to containing drastic API or behavioral |
| 26 | changes (very few to date), the minor release typically being the annual |
| 27 | or semi-annual release containing new features and drivers, and the revision |
| 28 | release containing backported fixes to a maintenance branch. |
| 29 | |
| 30 | Major |
| 31 | ..... |
| 32 | |
| 33 | The project desires to have very few major releases, as maintaining a |
| 34 | rigorously backwards compatible API is a long-standing goal of the project. |
| 35 | A major release is expected to be highly disruptive to client software, and |
| 36 | it is expected that only large scale architectural re-engineering would |
| 37 | precipitate a major release. We're. not. having. one. |
| 38 | |
| 39 | Minor |
| 40 | ..... |
| 41 | |
| 42 | The project desires to have an annual or semi-annual minor release that is |
| 43 | limited to new features, slight structural enhancements, new APIs (no |
| 44 | removals), and re-engineering of the library's subsystems. It is expected |
| 45 | that the minor release will happen no earlier than every six (6) months |
| 46 | and no later than one (1) year, periodically. Continuing development |
| 47 | within the main development trunk is expected to be tracking what will |
| 48 | ultimately be the next minor release. |
| 49 | |
| 50 | Revision |
| 51 | ........ |
| 52 | |
| 53 | The project desires to have revision releases (maintenance releases) of |
| 54 | the previously released minor release every two (2) to six (6) months, |
| 55 | periodically, until a revision release of the current minor release |
| 56 | has been made. For example, if the 1.4 maintenance branch contains a continuing |
| 57 | stream of revision releases -- 1.4.1, 1.4.2, ..., 1.4.4 -- and the 1.5.0 |
| 58 | minor release was made, maintenance in the 1.4 branch would continue until a |
| 59 | 1.5.1 maintenance release was produced. |
| 60 | |
| 61 | |
| 62 | Major Release Process |
| 63 | --------------------- |
| 64 | |
| 65 | We're. not. having. one. |
| 66 | |
| 67 | Minor Release Process |
| 68 | --------------------- |
| 69 | |
| 70 | GDAL's minor release cycle is time-based. The normal development process of |
| 71 | a GDAL minor release consists of various phases, with the close of the |
| 72 | development phase to final release taking typically one (1) month: |
| 73 | |
| 74 | Development |
| 75 | ........... |
| 76 | |
| 77 | Continuing development within the main trunk of svn according to the |
| 78 | committer guidelines described in `RFC 1`_ and `RFC 3`_. Both feature |
| 79 | development and bug fix activity happen in trunk during this period, |
| 80 | which may last anywhere from five (5) to eleven (11) months. |
| 81 | |
| 82 | Pre-release Meeting |
| 83 | ................... |
| 84 | |
| 85 | After development momentum appears to slow, or at what looks like a |
| 86 | natural release point, a PSC member or committer should call for the |
| 87 | pre-release meeting. The purpose of this meeting is to select the release |
| 88 | manager for the minor release and coordinate activities that need to be |
| 89 | completed. These activities include setting any additional meetings, |
| 90 | specifying deadlines such as the RFC Freeze and Beta 1, and fleshing out |
| 91 | the expected timetable the project will take as it marches toward release. |
| 92 | |
| 93 | RFC Freeze |
| 94 | .......... |
| 95 | |
| 96 | Changes or additions that would require an RFC under the guidelines |
| 97 | of `RFC 1`_ need not be complete by the RFC Freeze date, but the RFC should |
| 98 | be posted for general review by this date. Late additions or significant |
| 99 | changes to existing RFCs should be handled by the release manager on a |
| 100 | case-by-case basis. |
| 101 | |
| 102 | Beta 1 |
| 103 | ...... |
| 104 | |
| 105 | Beta 1 signals that feature development within the minor release |
| 106 | branch has been completed and developers are working toward polishing the |
| 107 | current codebase in expectation of the release. During the beta period, |
| 108 | outstanding bugs left on the release milestone in `Trac Roadmap`_ should be |
| 109 | completed or pushed off until the next release. Bug triage is the |
| 110 | responsibility of the release manager to delegate or assume as new bugs |
| 111 | continue to stream in from the beta process. |
| 112 | |
| 113 | Beta 2, 3, ..., X |
| 114 | .................. |
| 115 | |
| 116 | Betas after Beta 1 are left to the discretion of the release manager to |
| 117 | produce and announce. |
| 118 | |
| 119 | Release Candidate |
| 120 | ................. |
| 121 | |
| 122 | It is the responsibility of the release manager to bring forward the |
| 123 | release candidate by producing a tarball and by motioning to the mailing list. |
| 124 | If any significant problems are found and fixed, the motion may be retracted, |
| 125 | and a new release candidate may be issued. The decision forge ahead with |
| 126 | the release in the face of minor issues is at discretion of the release manager. |
| 127 | |
| 128 | Final Release |
| 129 | ............. |
| 130 | |
| 131 | After a release candidate has been issued and two (2) business days have |
| 132 | passed without significant issues, the release manager will package up the |
| 133 | final release and complete the activities listed in the `release procedures document`_ |
| 134 | that lives in svn. |
| 135 | |
| 136 | Release Manager Duties and Responsibilities |
| 137 | ------------------------------------------- |
| 138 | |
| 139 | For every minor release of GDAL, the PSC elects a release manager (this is |
| 140 | usually done at the pre-release meeting in IRC). The overall role of the |
| 141 | release manager is to coordinate the efforts of developers, testers, |
| 142 | documentation, and other contributors to lead to a release of the best |
| 143 | possible quality within the scheduled timeframe. The PSC delegates to the |
| 144 | release manager the responsibility and authority to make certain final |
| 145 | decisions for a release, including: |
| 146 | |
| 147 | * Approving or not the release of each beta, release candidate, |
| 148 | and final release. |
| 149 | * Approving or rejecting non-trivial bug fixes or changes after Beta 1 |
| 150 | * Maintaining the release schedule (timeline) and making changes as |
| 151 | required. |
| 152 | |
| 153 | The release manager's role also includes the following tasks: |
| 154 | |
| 155 | * Setup and maintain the `Trac Roadmap`_ for the release, prioritizing |
| 156 | bugs, and coordinating with developers. |
| 157 | * Organize regular IRC meetings (including agenda and minutes) |
| 158 | * Complete the tasks described in the `release procedures document`_. |
| 159 | |
| 160 | Any of the above tasks can be delegated, but they remain the ultimate |
| 161 | responsibility of the release manager. |
| 162 | |
| 163 | _`MS RFC 34`: http://mapserver.gis.umn.edu/development/rfc/ms-rfc-34/ |
| 164 | _`RFC 1`: http://trac.osgeo.org/gdal/wiki/rfc1_pmc |
| 165 | _`RFC 3`: http://trac.osgeo.org/gdal/wiki/rfc3_commiters |
| 166 | _`Trac Roadmap`: http://trac.osgeo.org/gdal/roadmap |
| 167 | _`release procedures document`: http://trac.osgeo.org/gdal/browser/trunk/gdal/HOWTO-RELEASE |
| 168 | }}} |