You are not logged in Log in Join
You are here: Home » DevHome » Subversion » ZopeDevelopmentProcess

Log in
Name

Password

 
 

History for ZopeDevelopmentProcess

++added:
Details of the Zope Developement Process

  If you have read the CommitterGuidelines, you know the general 
  rules that the Zope developers play by. But to avoid chaos, there 
  is some detailed information that all committers need to know. 

  Bugs, Features and Where They Go

    Zope development usually happens concurrently on two "branches",
    where one of the branches is often (but not always) the trunk.

    Here is how it works: the next "feature release" is usually
    represented by the trunk. Substantial new features that have
    gone through the fishbowl process and been ok'ed by the owners
    of the affected areas get checked into the trunk (where they
    will be available when the next feature release is made).

    Smaller features (minor things that do not affect UI or
    documentation in a way that justifies the weight of a whole
    fishbowl project) also are checked into the trunk, again,
    after ok'ing them with the appropriate owners.

    In both cases, any features added should be noted in the
    CHANGES.txt *in the trunk* (*not* in the "current release
    branch" - more on that below).

    At the time the first beta of the new feature release is made,
    we create a new branch for that feature release (rooted at the
    trunk at the time the first beta is made). For 2.8, for example,
    I will create a branch named 'Zope-2.8', and all further
    checkins for the 2.8.x line need to go to that branch.

    Because by definition a beta should be "feature complete", from
    this point on only *bug fixes* should go into the Zope-2.8.

    At this point, the Zope-2.8 is considered the "current
    release branch". The trunk now represents the "next feature
    release" again (presumably 2.9).

    This is pretty straightforward for features - it is a little
    more complex (and we have to be a little more careful about)
    bug fixes. As noted above, there are usually two branches that
    are under active development (the trunk and the current release
    branch). A *bug fix* needs to go into *both the current release
    branch and the trunk* (so that the bug does not reappear in the
    next feature release).

    When you check in a bug fix, you almost always need to:

      - Check in the fix on the current release branch

      - Note the fix in the /doc/CHANGES.txt on the current release
        branch

      - Merge the fix to the trunk to be sure its fixed for the
        next feature release

    Note that you don't need to note the fix in the CHANGES.txt on the
    trunk if you don't want to. At the time a new feature release is made,
    we merge the items in CHANGES.txt from the trunk and current release
    branch so that for any given release it notes the actual changes as
    of that release.


  How Release Affect The Process

    Even if a bug fix is a nobrainer, all committers still need
    to be aware of what is going on in the release process before just
    checking something in. For example, our goal is
    that *no changes are made between the final beta and a release*.

    If we are in the final beta of 2.8.1, for example, no one should
    be doing commits on the Zope-2.8 branch until the final release
    is made. That doesn't mean you can't fix bugs, just that you
    may have to do them on a private activity branch that week and
    merge them after the release

    The release manager for a release will let committers know via
    zope-coders when an event that all committers need to know about
    (like a release) is imminent. It is the responsibility of all
    committers to pay attention to prevent causing problems with
    releases.


  What About Older Releases?

    One question that arises here is: "what about fixing bugs in
    back releases"? That is sometimes a valid thing to want to do,
    but to date we have only actively maintained the trunk and
    the current release branch. The reason for that is mainly due
    to overhead and resource availability.

    Ideally, we could backport important bug fixes to older versions
    and make occasional bug-fix releases of those older versions. In
    reality, we don't have the resources (internally at ZC) to commit
    to that. It also imposes a greater (possibly much greater, depending
    on the goal) burden on every committer who checks in a bug fix. As
    we continue opening the development process to the community, this
    could become a possibility if people are found who can commit to
    the effort required to coordinate the maintenance of older releases.