Retire SWIG-based Agg backend in favour of Cython-based Celiagg
- 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
Assessment
This issue has not been assessed yet.