From Fedora Project Wiki
(puddletag)
(pyicq-t and pympdtouchgui)
Line 108: Line 108:
* [https://bugzilla.redhat.com/show_bug.cgi?id=895783 pogo] -- Patch attached to bug
* [https://bugzilla.redhat.com/show_bug.cgi?id=895783 pogo] -- Patch attached to bug
* [https://bugzilla.redhat.com/show_bug.cgi?id=895785 pony] -- Patch attached to bug
* [https://bugzilla.redhat.com/show_bug.cgi?id=895785 pony] -- Patch attached to bug
* [https://bugzilla.redhat.com/show_bug.cgi?id=895789 pyicq-t] -- Patch attached to bug
* [https://bugzilla.redhat.com/show_bug.cgi?id=895217 wallpapoz] -- Patch attached to bug
* [https://bugzilla.redhat.com/show_bug.cgi?id=895217 wallpapoz] -- Patch attached to bug
* [https://bugzilla.redhat.com/show_bug.cgi?id=895214 wavextract] -- Patch attached to bug
* [https://bugzilla.redhat.com/show_bug.cgi?id=895214 wavextract] -- Patch attached to bug
Line 116: Line 117:
A script to help with finding the places that PIL is used in these packages can be found here: https://fedorahosted.org/fesco/raw-attachment/ticket/985/scan-for-pil.py
A script to help with finding the places that PIL is used in these packages can be found here: https://fedorahosted.org/fesco/raw-attachment/ticket/985/scan-for-pil.py


* pyicq-t
* pympdtouchgui
* python-django-avatar
* python-django-avatar
* python-django-profile
* python-django-profile
Line 165: Line 164:
pkgwat(False dep.  Maintainer pinged)
pkgwat(False dep.  Maintainer pinged)
puddletag(False dep.  Bug filed)
puddletag(False dep.  Bug filed)
pympdtouchgui(False dep. Bug filed)


== Contingency Plan ==
== Contingency Plan ==

Revision as of 02:32, 16 January 2013

Feature Name Pillow

Summary

Replace PIL (python-imaging) with Pillow, an actively maintained fork which is also heading for python3 compatibility

Owner

  • Email: manisandro (at) gmail (dot) com

Current status

  • Targeted release: Fedora 19
  • Last updated: 2012-12-23
  • Percentage of completion: 40%


Detailed Description

The PIL project has been rather inactive lately (last release in 2009), and one big issue is the missing python 3 compatibility. There seems to be some general agreement that Pillow [1] is a likely candidate to succeed PIL, and in particular to bring python 3 support, see the discussion at [2]. Pillow describes itself as

 Pillow is the "friendly" PIL fork. PIL is the Python Imaging Library. Pillow was
 started for and is currently maintained by the Plone community. But it is used by
 many other folks in the Python web community, and probably elsewhere too.
 
 The fork author's goal is to foster packaging improvements via:
 
 - Publicized development and solicitation of community support.
 - Exploration of packaging problems within the fork, most noticably
   via adding setuptools support but also via clean up & refactoring
   of packaging code. 

Pillow is practically a drop-in replacement for PIL, except one small issue (see below).

For Python 3, there is a fork which offers Py3 compatibility here [3]. The patches are planed for review and merge into Pillow, see [4].

Benefit to Fedora

  • Actively maintained python imaging library
  • Python 3 compatibility

Scope

Tasks:

Action needed by other maintainers:

  • repoquery --whatrequires python-imaging* shows there are 74 packages depending on PIL.
  • Pillow is a drop-in replacement for PIL, with one detail: The PIL modules now use relative imports between each other, so it is no longer possible to write
 import Image

but one needs to write

 from PIL import Image

The former variant was only made possible by a PIL.pth file in %{python_sitearch}, and actually looks like a hack for backwards compatibility. (100% compatibility between PIL and Pillow could still be achieved by patching away the relative imports in the python2 variant.)

How To Test

  • Possibly patch packages to use
 from PIL import <Module>

instead of

 import <Module>

Note that the from PIL import <Module> syntax also works with the legacy python-imaging, so such changes will not break backwards compatibility with PIL.

User Experience

  • For end-users, nothing should change.
  • For developers using the python2 variant, next to nothing should change (except the import thing)
  • For developers wanting a python3 variant, there finally is one available

Dependencies

Tracker bug for implementing the switch to pillow

https://bugzilla.redhat.com/show_bug.cgi?id=894484

Problem building pillow for python3

Packages needing porting to work with pillow

Packages needing evaluation for porting

A script to help with finding the places that PIL is used in these packages can be found here: https://fedorahosted.org/fesco/raw-attachment/ticket/985/scan-for-pil.py

  • python-django-avatar
  • python-django-profile
  • python-django-simple-captcha
  • python-django-tracking
  • python-djblets
  • python-fabulous
  • python-glue
  • python-polybori
  • python-pygments
  • python-qrcode
  • python-textile (and needs a dep on PIL)
  • python-tgcaptcha
  • python-trml2pdf
  • python-xhtml2pdf
  • rapid-photo-downloader
  • sK1
  • scribus
  • spe
  • trac-spamfilter-plugin
  • tucan
  • uniconvertor

Packages not needing porting

  • python-imaging-devel (obsoleted by pillow)
  • python-imaging-sane (obsoleted by pillow)
  • python-imaging-tk (obsoleted by pillow)

Packages already ported

ReviewBoard autotest-framework-server bodhi-server calibre django-avatar dogtail flumotion(False dep on python-imaging. Bug filed) gdesklet-SlideShow griffith inksmoto(False dep on python-imaging-tk. Bug filed) libhocr-gtk(requires python-imaging-sane which isn't moving into the PIL directory) mapnik-python python-docutils openerp openslides(Needed for its use of reportlab) pkpgcounter pkgwat(False dep. Maintainer pinged) puddletag(False dep. Bug filed) pympdtouchgui(False dep. Bug filed)

Contingency Plan

Simply keep shipping the current python-imaging-1.1.7

Documentation

Pillow homepage and discussions:

Initial discussion on fedora-devel:

Release Notes

PIL has been replaced with Pillow, an actively maintained fork, which also offers Python 3 compatible modules. Pillow is a drop-in replacement for PIL, except that importing modules now requires the

 from PIL import <Module>

syntax istead of simply

 import <Module>

This change does not break backwards compatibility with the legacy PIL.

Comments and Discussion