Clone wiki

reportlab / RoadMap

ReportLab library roadmap

This page sets out a rough roadmap to allow modernisation of our library during 2013.

Repo move to Mercurial - early March 2013 - DONE!

Release 2.7 - late March 2013?

This release will be minor and will deliver a few bug fixes and minor features accumulated since our last release in September 2012. It will be the LAST release where we support Python 2.5 and 2.6. However, we plan to make a branch, and to support this for some time. The policy will be to support bug fixes that actually bite people, but to spend as much time as we can on our '3.0' branch.

The Road to 3.0

From April 2013 we hope to out our efforts into a major modernisation of both the open source and commercial libraries.

Make it more 'developable'

  • remove as much code as possible, especially old / uncool demos, so we have less to port
  • if the 2.7 standard library does something we used to do ourselves, or there are good components in the Python world now, we will use them, and get rid of code of our own. Examples MAY include
    • replace xmlllib parsing with elementtree / lxml
    • pillow and.or libpng/libjpeg rather than PIL
  • overhaul the test suite to work nicely with the new discover features, intelligent skipping (e.g. platform specific or tests needing compiled accelerators). Try to get so it works for everyone. Ability to run cleanly with tox sounds like a good idea for what follows.

  • core runtime code should have minimal dependencies, but we are open to using more libraries for things like building the docs and running the tests.

  • use the byte string / unicode string features in 2.7 to clearly label in our code where we expect to deal with each, and tighten up any fuzziness. If we're constructing chunks of a PDF file, it's bytes; if we're accepting text input, it's unicode. In between, we aim to set a clear policy rather than converting back and forth needlessly.

2.7 / 3.3 compatibility

After the above changes, we will try to make the code run simultaneously with Python 2.7 and 3.3. This will involve starting with pdfgen and 'hello world', then building outwards.

New features

Want something? add it here... Once the code is modernised somewhat, we are long overdue for a wave of changes. Be warned that some may appear only in our commercial package.

  • Platforms

    • pypy support sounds worth exploring
    • anyone actually interested in Jython / IronPython?
  • New PDF features

    • move baseline up to PDF 1.7, which has been an ISO standard for several years?
    • support for specific PDF variants - accessibility
    • support for OpenType fonts
    • support for color gradients (linear and radial)
  • PDFgen

    • textobject / pathobject may be deprecated or disappear. They were devices to avoid a couple of internal checks which made little or no performance difference.
    • support for any new PDF features
  • Flowables

    • New FitToFrame flowable, changing a flowable's size to fit into a frame (while maintaining its ratio) by shrinking or increasing if needed.
    • Added multi-language hyphenation to Paragraphs, more or less like those by Henning von Bargen's Wordaxe, but without the pain of installing them.

(Anyone, this is a wiki. Feel free to add wish lists or discussion...)