Looking for OSX and Jupyter notebook experts for integrating a new renderer into Matplotlib

Hi all,

Some of you may already have heard about mplcairo (
https://github.com/matplotlib/mplcairo), a new backend for Matplotlib I
have been developing for the past two years. Briefly, it relies on the
cairo library (https://www.cairographics.org/) to generate higher quality
images than Matplotlib's current backends, both in raster format (for which
Matplotlib currently uses Agg, a library that whose development has
stalled) and in vector (PDF, PS, SVG) formats (for which Matplotlib
currently uses hand-written backends). (A list of mplcairo's features and
differences from Matplotlib's default backends is listed in its README, at

Given mplcairo's features, there is interest in the Matplotlib core
developer team to move it into Matplotlib itself, with the ultimate goal to
(possibly) make it the default backend. Obviously, there are many steps
before this can happen, but, in particular, there are two for which I am
looking for help:

- Improve the macOS build: Currently, I provide wheels for Linux and
Windows, but am unable to provide wheels for macOS. Briefly, this is
because mplcairo depends on a C++17-compliant C++ standard library, which
is not available on OSX<10.14. On Linux, this is handled by statically
linking a recent enough libstdc++ into the wheel, but I have not been able
to do so on maxOS (I do not work on that platform...). If anyone knows how
to make this work on macOS, their help would be greatly appreciated.

- Improve integration with the Jupyter notebook: Currently, Jupyter
notebook's Matplotlib integration hard-codes the renderer to use to Agg.
At some point, I had tried to make the notebook use mplcairo instead by
forcefully overwriting the contents of the Agg backend with the mplcairo
backend (ugh), which worked for a while, but things have changed enough on
the notebook side (I believe) that this is not working anymore. Probably a
more correct solution would be to make the backend actually properly
configurable on the notebook's side. Given that I personally hardly ever
use the notebook as well, here again help from a notebook expert would be
most welcome.

Matplotlib brownie points for any helping hands :slight_smile:

Thanks in advance,

Antony Lee
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20190603/3470287d/attachment.html>