enthought / enthought/enable

Retire SWIG-based Agg backend in favour of Cython-based Celiagg

Open
#414 6 comments 0 reactions 0 assignees View on GitHub
ETS Backlog type: enhancement type: refactor
Dominant language
C
Stars
97
Forks
45
PR merge metrics
No merged PRs in 30d

Description

The SWIG-based Agg wrapper is showing its age: it is using an old version of Agg; it doesn't work with modern GCC or SWIG versions, the build process is idiosyncratic, and it is overall hard to maintain and modify. Celiagg is a Cython-based alternative wrapper of the Agg backend with better overall architecture and, importantly, is a stand-along package which is independent of Kiva. There is already a Celiagg backend for Kiva.

We should switch the default `image` backend to use Celiagg, and deprecate and retire the SWIG-based Agg wrapper.

Most of the pieces are in place for this, but it will likely be a multi-phase process:

1. Audit Celiagg for feature compatibility (does it do everything right) and performance (we can take some performance degradation in exchange for reducing maintenance overhead, but 10x slower is too much).
2. If there are discrepancies, fix them.
3. Expose the current Agg backend as a separate-but-equivalent Kiva backend to the image backend ('oldagg' or 'swigagg' or something, not just 'agg').
4. Switch the image backend to use Celiagg (while keeping the current celiagg backend)
5. Deprecate the agg backend
6. Remove the agg backend

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.