The Story of Pillow

On March 4, 2013 I got an email from the Python Software Foundation

On March 4, 2013 I got an email from the Python Software Foundation (PSF):

This email notification is being sent to you to inform you of the PSF Board’s decision to fund the facilitation of a Python 3 compatible release of the Python Imaging Library for the amount of $1,300 USD. Please see the resolution that was passed unanimously on March 4, 2013 via email below:

Yay! That was in response to my proposal asking for funding to finish a Pillow 2.0.0 release. In that proposal, I presented the “story of Pillow” which I’d like to present again now, for anyone interested:

Tired of seeing the proliferation of third party packagings of the Python Imaging Library, in 2010 Alex Clark took Hanno Schlicting’s repackaging and used it to create a fork of the Python Imaging Library on GitHub. He subsequently released that fork to PyPI as Pillow 1.0. The ability to add additional development library paths to setup.py (e.g. 64 bit library and headers directories) and make releases quickly eventually led to widespread adoption of Pillow.

A little over a year later on 2011-09-08, Takayuki Shimizukawa uploaded the first Windows (win32) eggs. Since then, every Pillow release included Windows eggs thanks to Takayuki. And on 2013-02-02, the first 64-bit Windows eggs (amd64) were uploaded to PyPI by Takayuki.

For the first 3 years, the fork focused on packaging fixes only. Now a Python 3 compatible pull request from Brian Crowell has been merged, and the final stages of release preparation are underway. In early 2013, Barry Warsaw created an Ubuntu Personal Package Archive and tested it with Python 3. And the Fedora Project is now planning to include Pillow with their release of Fedora 19. Finally, the Pillow project has promised a Python 3 compatible release of Pillow by PyCon 2013.

That release is now done! And I have had an absolute blast working on Pillow full time over the course of the last week or so. So much so, that I’m going to propose you help me continue to have fun and be productive with Pillow… but more on that later. First, about the new release.

About 2.0.0

alternate text

This release marks the first “serious effort” I have put into Pillow. While I’ve always enjoyed working on it in my spare time, I knew that there was no way I could finish it in time for PyCon 2013 (as I promised) without getting some financial assistance.

Enter: The PSF, who graciously offered to fund my work (and the work of one other contributor). Once I had funding in place, I knew exactly what needed to be done:

  • So much time has passed since the fork, no one seemed to care if we made image code changes (we were originally a packaging fork), so this release contains EVERY PATCH EVER SUBMITTED TO PIL but not released until now. I’m exaggerating, but we really crammed a lot of “goodness” in to the 2.0.0 release along with Python 3 support which is what prompted the release in the first place.
  • In order to fully test, I fine-tuned my tox environment on Mac OS X (tox is awesome) as well as fired up a new Windows VM (and used an already-existing Linux VM). Additionally, other folks joined in to test on their environments (most notably Christophe Gohlke and Eric Soroos). You’ll find the results here: https://github.com/python-imaging/Pillow#platform-support. That means: THIS RELEASE HAS BEEN FULLY, EXTENSIVELY, AND EXHAUSTIVELY DEVELOPED AND TESTED. Aside from the possible inconvenience of Pillow 2.0.0 dropping 2.4 and 2.5 support (use Pillow 1.x if you need Python 2.4,2.5), you should not have any trouble with it. If you do, please open a ticket here: https://github.com/python-imaging/Pillow/issues.
  • As important as quality software is to me, quality presentation is almost equally important. (That’s developer-eye quality, not designer-eye quality. ;-)) So I spent a lot of time cleaning up and enhancing the more subtle aspects of the release e.g. README.rst, docs/* (including the pythondoc documentation and HISTORY.txt and CONTRIBUTORS.txt). The pythondoc documentation has been converted to re-structured text and is hosted on ReadTheDocs: http://pillow.readthedocs.org/en/latest/. The website has been updated to include an actual image generated by PIL http://python-imaging.github.com/.

I hope you enjoy and use Pillow 2.0.0. If you’d like to see me continue to devote significant time to maintaining Pillow, please consider a gittip! Thank you.