ReportLab Library Release Policy

This page sets out how we number releases.

We believe in Agile Development and our code base is almost always in a releasable state; test suites are run every night, and daily builds made available. The numbered releases are largely a convenience, and commercial customers can obtain stable interim builds at other times to suit project requirements.

We do concurrent releases of our open source (reportlab) and commercial (rlextra) packages with the same numbers. The commercial packages are documented here, along with their release notes. Serious users are advised to keep abreast of the commercial package documentation; it sits on top of the Open Source one, and we are better at keeping the docs up to date, so new RML features will usually imply new ones in the ReportLab Toolkit.

Version 1.X

We have generally aimed for extreme backward compatibility since our first release in summer 2000. The last major release was version 1.20 from November 2004. This made it hard to make changes, and in May 2005 we introduced a repository branch named python21-stable to support existing customers and releases while working 'safely' on newer features. Once we had migrated all the customer release processes to run off this, we could afford to be more experimental with the trunk of the repository. Now that 2.0 is out, we have renamed branches/python21-stable to branches/version1, and released 1.21 from that branch (see "what's new in 1.21"). The 1.21 release incorporates some feature additions and bug fixes from the last 18 months' work but in a manner compatible with 1.20.

Version 2.0

The key change in 2.0 is use of unicode (see "what's new in 2.0"). Briefly, we now accept unicode and use unicode consistently throughout the entire toolkit. This will break some applications, hence the increment of the major version number to "2".

Version 2.0 was released in May 2006. It's maintained on the trunk of the subversion source code repository. It's in production use for major projects and we are documenting it. The code base was developed originally on a branch and merged into the trunk in March 2006. The first release of 2.0 was labelled "2.0a1" (subversion tag XXX). Development continues to take place on the trunk.

In the event that a critical bug is found with the 2.0 release, and we needed to provide a patch specifically for this, we would create a branch off the 2.0 tag and issue a version "2.0.1". Likewise for version 2.1, 2.2 and so on. However in general we try not to introduce a third number.

Version 3.0 ("ReportLab 3000")

As with the Python language itself, we one day hope to do a release which cleans up a lot of things and corrects earlier design mistakes. This is (always) about 2 years in the future ;-) Various useful preliminary experiments towards this may appear in separate packages to avoid confusing the user base and allow parallel running.

If at some point we decide to begin further development on the trunk which is INCOMPATIBLE with the 2.0 series, we will create a "2.0 maintenance" branch and advise of this, then start working towards 3.0 on the trunk...