Z Object Publishing Environment

Search | Download | Documentation | Resources

Search  

 

 Guest

Join Zope.org
Log in


Developer Home
Get Involved!
The Fishbowl
Resources
Proposals
Projects


 Zope Exits

ZopeZen
Zope Newbies
EuroZope
Appwatch.com


page served by app1

Zope Release Policy

Introduction

There are several groups to whom an understanding of the workings of the Zope release cycle is important.

  • The Zope user community

    The community wants to know what to expect from product releases in terms of features, fixes, stability and backward compatibility. As the community becomes a more active participant in developing the Zope code, they will also need to have some understanding of our company goals and how they influence the release policy in order to most effectively coordinate their work with our own.

  • DC consulting customers

    Consulting customers need to know that their projects are being delivered on a stable platform and need to be able to anticipate what their maintenance strategy will be going forward in terms of software updates.

  • DC consulting project managers

    Project managers at DC need to be able to coordinate their customer projects with the Zope release cycle to be able to deliver projects for consulting customers on stable releases. They also need to be able to advise customers on maintenance strategy after delivery.

  • DC product managers

    Product managers at Digital Creations need to coordinate planned development of the Zope platform and set expectations for delivery.

  • Zope developers

    Internal developers and (soon) active community members with checkin priveleges need to understand the release policy and the mechanics that support it in order to coordinate their development projects.

Goals of the release policy

  • Formalize expectations for Zope releases

    The release policy should document the naming convention for releases and how names relate to release content, quality, level of testing, and backward compatibility.

  • Deliver customer projects on stable, supported releases

    The release policy must make it possible to ensure that customer projects may be fielded on stable public releases.

  • Allow both product management and customer projects to push the platform forward

    It should be possible for the fruits of both planned development work and consulting engagements to be incorporated into regular Zope releases. The policy should ensure that the goals of both consulting project managers and Zope product management may be achieved in a largely independent way.

Zope software releases

To ensure that regular Zope releases can be made that accomodate the goals of the product plan, the community and consulting project managers, we have adopted a release methodology that allows us to avoid contention between those sets of goals.

Zope releases are named using a three number naming convention: major revision, minor revision and bug-fix revision. The meaning of each number in the release name are outlined below.

  • The first number is the major revision and changes very infrequently. Major revision releases may contain major architectural changes and may not be backward compatible with existing code or data. Major revision releases may require data and/or code conversion in order to upgrade (though we of course try to avoid this as much as possible). Major revision releases are driven by product planning.

    Major releases go through an alpha release where glaring problems are resolved and final features are added. A possibly lengthy beta period follows where no new features are added, bugs are fixed and testing is performed both internally and by use in the Zope community. Successive beta releases are made until the software and any associated upgrade tools and documentation are deemed stable.

  • The second number is the minor revision and changes on a fairly regular basis. An minor revision release may contain new features driven by Zope product planning and / or new features resulting from consulting project work. Minor revision releases may in rare cases contain minor backward incompatibilites, though we try hard to avoid this unless absolutely necessary.

    Minor revision releases go through at least a short beta period before final release. Depending on the scope of the changes for the release, there may be an alpha release before the beta if it is deemed necessary. During the beta period no new features are added and bugs are fixed. Testing for an minor revision release consists of internal testing by DC and community coverage during the beta period. Successive beta releases are made if needed until the software is deemed stable and a final release is made.

  • The third number is a bug-fix revision and changes on an as-needed basis. Bug-fix releases contain only bug fixes and should always be backward compatible.

    Bug fix releases do not go through an alpha or beta release, though they are tested internally with a focus on verifying the bug fixes made for the release.

In the future, DC may consider a strategy for managing some of the major pieces of Zope as separate "components" that may have their own release cycles independent of the overall Zope release cycle. This would allow greater flexibility for the individual development of different components of Zope while still allowing allowing them to be incorporated into the main Zope release cycle. Because the development process mechanics that support the release policy now allow for more frequent releases, the need to evolve individual components separately may not be such a problem. We may revisit this in the future.

Impact on the development process

To implement this policy effectively, developers (both internal and external) will need to follow some general rules and be aware of some basic mechanics of the release process when working on the Zope code.

In the past, we made alpha releases from the "trunk" in CVS, and at the time of the first beta we created a new branch for the given release (say, 2.1.0). So a branch would be created reflecting 2.1.0b1 and all further development on the 2.1.x series through final release and beyond into maintenance would need to be done on the 2.1.0 branch.

Immediately after the branch was created, many major surgeries would often begin on the trunk and it would take a lot of time and effort to get the trunk back to a relatively stable state in order to make the next (non-bug fix) release. This approach caused a lot of problems because it was difficult to orchestrate releases when they were needed by various parties and the goals of product managers and consulting project leaders often became at odds with one another.

One of the keys to supporting a process that allows frequent releases is ensuring that when major surgeries happen, they happen in a way that does not block the release cycle. This means that no actual development work may happen on the Zope "trunk" in CVS. All development activity should happen in branches and only be merged into the trunk when the work is stable enough to be included in the next beta release. The trunk should never be in a state where we would be uncomfortable making an alpha or beta from it on 2 days notice.

There is a companion to this this document that describes the mechanics and conventions for working with the Zope code in activity branches.

The second key to allowing frequent releases and avoiding contention is for product management at DC to refrain from promising specific new features for particular Zope releases. Promising feature sets for specific releases puts us at risk of having to delay a release needed to support a consulting project or other important issue in order to keep our promise. Infrastructure projects driven by product management should have their own plans and milestones that are not tightly coupled to the Zope release schedule.

Created by Brian. Last modified on 2000/07/06.

 
 
Privacy policy       Printable Page