Matplotlib Weekly Meeting
A regular sync meeting for the project's maintainers, which is open to the community. Everyone is welcome to attend and contribute to conversations.
Jan 09 2025 -
Call co-ordinates: Thursdays @ 21:00 (9:00PM) Berlin time (20:00 UTC during winter, 19:00 UTC during summer)
NOTE Open PR to adjust time next day light savings change, times must be in UTC scientific python mpl calender entry
Previous notes: Meeting Agendas
Archive: matplotlib/ProjectManagement
June 12
Agenda
attending:
new business
May 29
attending: @efiring @ksunden @story645 @QuLogic
Agenda
Old Business
New Business
Notes
- @ksunden prepping presentation
- organizing thoughts on data prototype stuff
- @QuLogic more font work
- libraqm is nearly there
- has working for raster backends
- needs another PR for vector backends
- two stacked prs: freetype + libraqm
- freetype is giant b/c also has everything that needs to rebuild images
- debating changing how this review stuff is going
- maybe do everything targeting a feature branch
- shouldn't have heavy rebase issues b/c kinda standalone
- advantage is that image changes can be per pr rather than 1 big PR
- 2 commits per pr - 1 w/ test related image changes, 2 w/ all changes, merge 1st commit into feature branch
- add a PR for pdf/ps side of things
- PR count: @QuLogic has 4, @anntzer has 3 (2 are subsumed into freetype PR), jouni has a pdf one
- Freetype PR
- 12 commits
- 2 will be replaced by #30059
- 4 are updating tests (could be contained to one PR)
- about 50 images change cause of kerning and ligarature (libraqm)
- 1 updating to freetype
- updating kerning and text hinting factor
May 22
Agenda
attending: @efiring, @greglucas, @QuLogic, @ksunden, @trygve, @story645
Old Business
Notes
New Contributor Meeting June 3rd
RSE updates
@ksunden was at scientific python summit
- lots of discussions on cross project compataibility, particulary on scalers vs. 0D arrays
- standardizing on what ArrayLike means
- spent time thinking on interactive tutorials tooling
@QuLogic
- updated WASM CI https://github.com/matplotlib/matplotlib/pull/29093
- plan to move to project builds
- font work
- removing the intermediate buffer allows for color support (intermediate is in gray school)
- mplcairo doesn't use ft2font
- plan for fonts is individual commits + image updates on last commit
- alt text PR is targted for 3.11
- potentially get a couple of font formats in as part of ongoing work
@greglucas plans to start grant work
Funding page/funding acknowledgements
-
Discussion of steering-council to create that page
- large-scale acknowledgement of grants, including grant numbers.
- do gsoc and gsod count
- do we list numfocus small dev grants
-
debate about whether now might be a good time to have it b/c could be seen as partisan
-
can also send stuff to numfocus for their announcements/annual reports/blog posts
-
@greglucas will send email to steering-committee about it
Multinorm
May 15
Agenda
attending: @tacaswell, @QuLogic, @story645
Old business
New business
Notes
RSE updates
- Kyle:
- at scientific-python summit this week
- Tom:
- Elliott:
font stuff
- #29816 will be a huge PR where commits are stacked
- is just freetype + other changes independent of libraqm
- change hinting factor from 8 to 1, means images change here and not w/ libraqm
- font features/language changes are API changes/independent
- should land before libraqm but needs a test font
- same alphabet set, English has ligatures but not German
- libraqm
- requires less image changes
- freetype in limbo b/c of @anntzer's feedback
- maybe add an rc_param for ligatures
- todo: pulling up more than one font from file
- adding superfamilies - needs design discussion
- alpha compositing #30043
- should have reference for where math/procedure comes from
- smoother alpha compositing between adjacent glyphs
aria api
- https://github.com/matplotlib/matplotlib/pull/21328
- add aria properties to artist
- set_aria and take a blind dictionary, do we want to validate to known aria types
- maybe validate if keys are allowed to take values/ validate values when possible
- in documentation add that this is for downstream consumers, we only use to pass along to filemetadata
- do we want to fail/accept/warn?
- depends on how fast the standards move
- dateelements property in html -> free form dictionary
- look at attributes rather than roles,
- https://github.com/highcharts/highcharts/tree/master <- is apparently very good at accessibility
- stash alt_text on file metadata (png on info/text)
- how is update managed comment
- widget - don't expose enough information for gui to use the information
- GUI toolkits render as rgba buffer
- missing focus + exposure of internal state
- tracks click through and updates png, can't tab to keyboard (GUI doesn't know it's a widget)
- add note about how our widgets are not accessible widgets, you need to use a GUI toolkit library for that
- svg can get all the things, static aria description is analog to alt text
- aria label is more about image + text, described by element
- telephone icon + telephone text -> description for icon comes from text
- description - describing things about element
May 8
Agenda
attending: @tacaswell, @efiring, @QuLogic, @ksunden, @story645
old business
New business
Notes
py314 issue
CoC
- submitted form to adopt this round
- consensus of discussions is to go with response as the option
RSE updates
- Kyle
- gotten 3.10.3 out, docs need to rebuild
- planning meeting for summit next week
- data prototype communication / presentation work
- Elliott
- fonts!
- intra-PR review of code from Antony
- have full implemetantion of libraqm with font features + language
- PR with libraqm (just core, not features + language)
- Tom
- mostly swamped with other work
fonts
- incorperating Antony's changes
- place mathtext from the bottom rather than top
- remove some back-compat to reporduce bugs from ttconf (that we no longer use)
affiliation
- what is the ask?
- adding paid training to external resources w/o tracking (just kick back an optional contribution)
- endorsement: adding to our page fine, us on their page would be very high bar
- adding to our page might need some kind of bar
Notes
May 1
Agenda
attending: @ksunden, @anntzer, @trygve, @QuLogic, @story645
old business
New business
Notes
CoC
- needs timeline for pr/public comment period
- soft consensus towards independent arbitrator
Font/RSE
- fonts waiting on some small things from @anntzer + @QuLogic
- PEP 735 (dependency groups) now implemented in PEP
3.10.x/RSE
- waiting on release critical draft PR: deep copy
- don't know if Python is keeping the change that motivated this PR or has suggested work arounds
- CI build release broken
RSE
April 24
Agenda
attending: @QuLogic @ksunden @QWhXj01mSwmTjk5kN1H_qQ @story645 @tacaswell
old business
New business
Notes
RSE updates
- Kyle:
- work on getting data-prototype on pypi
- some churn due to renaming (mpl-data-containers)
- Elliott
- font stuff
- rebased freetype (again) as all the place-holder stuff is in
- only one new issue in that the kerning looks off in someplaces
- spacing between a 't' and 'e' is off, reverts back to correct with libraqm
- fixed a bug in mathtex
- Tom
- some review, mostly other responsibilities this week
fonts
- looking good
- @story645 will provide hebrew text to add to test image
- still need to look into the the above discussed kerning between t and e
April 17
Agenda
attending: @QuLogic @ksunden @tacaswell @story645
Old business
Notes
RSE updates
- Kyle: data-prototype stuff, goal is on pypi tomorrow
- Elliott:
- mostly font stuff
- updated PR enabling windows on arm (public beta on arm runners), no numpy wheels yet, so we are not running tests yet
- rebased freetype PR again
- found another old bug that Mike had already written a patch for
- moved language to text objects
- Tom: some issue / PR review, trying to drop py310
Freetype migration
- still going
- computer modern alphabet looks a bit worse, but not sure if it appears in real words
last-resort font
- needs review + bump font cache number
mpl-gui
- still agreement we liked last week's consensus
April 10
_
Agenda
attending: @QuLogic @ksunden @tacaswell @story645 @QWhXj01mSwmTjk5kN1H_qQ (@efiring)
Old business
New business
Notes
RSE updates
- Tom: healthy again
- Kyle: image support in dataprototype + inspection tools
- Elliott: mostly text stuff
- 29872 -> decorator to replace text with rectangle to buffer from font rendering changes
- rebased freetype 2.13 PR again
- found one more place we need to thread passing
Text
object through apis
Grant updates
last-resort fallback font
drop 3.10
- we should do it on our schedule
- https://github.com/matplotlib/matplotlib/pull/29840 is (closed) PR from running a tool that was a bit more churn than we wanted
- mostly minor cleanup changes, no major new language features
- main work to do is rip out CI + metadata
- big picture: do we want this at all (what problems are we trying to solve):
- pyplot state/object stateless interface mixing
- unclear what's being tracked and what's not being tracked (what needs to be garbage collected?)
- consensus is towards minimal changes
- questions about naming / transition plans (in mpl-top level?, get its own?)
- pro of being in own namespace:
- gives future path of doing "now recommended thing"
- need to
- shim it underneath pyplot (pyplot manages everything) + own namespace where user manages everything
- put "nice" helpers in
mpl
to get Figure + Axes sets which never gets a GUI + import display to display
- current behavior in Matplotlib:
- plt.figure() -> creates GUI + registers with our global state
- Figure -> untracked figure object (normal Python gc rules)
- picks right backend on save
- no way to show via current machinary
- minimal change is to:
- add way to register figure to pyplot
plt.{adopt, add, register}_figure
and/or plt.show([list of figures])
- what's the priority queue for figures added to registry + added in show?
- show 'em all vs. show list of figures (maybe keyword or positional arg)
- no duplicates
- seperate figure creation from state management
- make a figure active via
plt.figure(fig)
b/c fig is currently a creation + retrievial API
- mpl-gui layers
- promotion machinary that matches figure object w/ approprirate figure canvas
- display: pass list of figure objects that it attaches GUI too, then runs event loop until dead
- state management (context manager): with figure(): -> calls display after the figure
- global registry (implemented like plt.ion by adapting a context manager)
- mpl & mpl-gui seperation of responsibilities:
- mpl: figure/subplot/etc creation helpers,
- mpl-gui: implementation of registeries/promotion stuff/etc, figure registeries
- pyplot uses mpl gui (mpl-gui is akin to _pyplot)
conclusions
- go with minimal apporach
- make it possible to (via
plt.figure
) register a "free" Figure with pyplot
- make
plt.show()
take a list of Figure objects that it will arrange to be shown
- declare victory for 3.11
- mpl-gui stays as a radical experimental project
April 3
attending: @QuLogic, @tacaswell, @ksunden, @efiring, @story645
Agenda
Old Business
New business
Notes
RSE updates
- Tom: not much due to personal contraints
- Kyle: working on improving the visualization of the graphs in the artists that can be explained to someone else
- Elliott: font stuff. have libraqm working in all cases including pdf/ps. still working on ligatures. Can get same results as before, but new stuff is broken
Fonts!
Take advantage of regenerating all of the images to remove a bunch of "back-compat" settings (hinting and kerning_factor).
Long discussion about where to put features and languages
Came to conclusion to put both on the Text
object and require backends to
pull language/feature information from that.
Only do Text
object level granularity for now (and open an issue to implement sub-string application)
March 27
attending: @ksunden, @efiring, @QuLogic, @anntzer , @story645
Old business
New business
Notes
- kyle: mostly data prototype stuff
- Elliot: freetype/text work
March 20th
attending: @ksunden, @efiring, @ksunden, @story645
Old business
Notes
- cve against freetype - fixed in 2.13.3
- not sure if mpl is affected b.c. don't support the features being exploited
- plan is to transition to new freetype
- need new tests b/c can't do blanket tolerance update
move release managers listing
- move listing of release managers from governance to:
- link/embed release manager info from release guide
March 13th
attending: @story645 @efiring @ksunden @timhoffm
Old business
New business
Notes
COC
Underlying questions:
- Do we trust Numfocus to handle this well?
- If we were doing it ourselves, or would want to handle things differently, how different would the outcomes be?
Numfocus modes:
- response:
- pro: we as a project don't have to deal with it: we don't have to set up rules and procedures how to handle CoC issues
- pro: we are not experts and can delegate appropriate handling of the topic to a third party (like we do with legal stuff)
- pro: having a third party handling this removes possible conflict of interest
- con: concern is that recommendations won't align w/ projects values
- con: Project is yielding what might be viewed as a responsibility.
- recommend:
- needs codification/process for communicating decision w/ reporter + reportee + process (w/justifications) for amendments
- Whole process could be slower. Does that make for a better outcome, or worse, on balance?
Proposal 1: go with response; if it doesn't work out, switch to recommend, or ditch Numfocus COC help.
Proposal 2: go with recommend; if it becomes a burden or causes problems, switch to response.
March 6th
attending: @tacaswell, @efiring, @rcomer, @ksunden, @story645
Old business
New business
Notes
RSE updates
- kyle
- scipy talk propsoal in
- Cleanup of 3.10.1 release (docs/announcement/etc)
- elliott
- tom
CoC updates
- two modes of opting-in
- discussion of prompt moderation is a common discussion across projects
- one way to think about this is all maintainers are delegated "event staff"
- NF is working on clarifying guidance for this
Feb 27
attending: @tacaswell @ksunden @trygvrad @story645 @QuLogic
Agenda
Old business
New business
Notes
RSE updates
- Elliott
- fonts!
- libraqm working except for font fallback
- 2 PRs coming setting up features for libraqm
- last resort font done (but docs are not buliding right)
- sent mail from discourse to mailtester which reports everything is good
- off for next 2 weeks
- Kyle
- 3.10.1 is tagged
- currently fighting latex doc build
- working on scipy proposal (now due next week instead of yesterday)
- Tom
- some review, moving grant paper work along
scipy
- no response from linkdin
- bluesky verification is doen
Feb 20
attending: @tacaswell, @ksunden, @trygvrad, @story645
Agenda
Old business
New business
Notes
RSE updates
- kyle
- data-prototype work
- making progress on 3.10.1 release out
- tom
- Elliott
- webservers cut over to new droplets
grant updates
CoC
- action in March on our part
- adopting this would be governance change
PRs
multivariate colormapping
Feb 13
attending: @tacaswell @ksunden @greglucas @story645 @QuLogic @timhoffm
Agenda
Old business
New business
Issues and PRs
Notes
Nasa grant 2024
- still moving (on both sides)
RSE updates
- Kyle:
- still making progress on data prototype work
- working on organizing, getting everything on one branch
- Tom:
- Elliott:
- work on website
- no complaints about discourse so will turn off old droplet
- preparing to move main website droplet to f41 (from f39)
- email sending on discourse
- had no DMARC records
- things that go into DNS that say to check other verications (that we do have setup)
- set DNS to say "please check and report errors"
- will get reports if it fails
bluesky
- going with
@matplotlib.org
does not prevent adding user names in the future
- go with the simpler
- @story645 will do bluesky side, @QuLogic will do DNS side
linkdin
- have a ticket in to get control of matplotlib company page
- can autoexpansion go into drawing of the images on collection so that it would autoexpand the norm
- mayb norm?colorbar? fail at drawtime, maybe warning but draw correctly
- problem is that colorbar is calling an eager draw_without_rendering?
- for calculating the values from the norm
- potentially move the autoscale logic out of colorbar into colorizer
- or move the computaion/resolution logic to colorbar
.draw
- might have singular value problems
- Move singular expansion logic on the colorbar over to the Norm autoscaling logic
- This may impact people who draw images without colorbars because previously the images would choose the "low" color, whereas we would autoexpand symmetrically.
- Do we have issues with auto-expansion and different scales like a LogNorm choosing the non-center color for a singular norm expansion.
hatchcolor collections
- managing 3rd party backend compatability
- potentially changing the backend interface w/ a versioning interface
- possibly moving towards graphic context dataclass
- what would be needed to support more backends?
- potentially can transforms be movable? (intermediate layers for supporting 3D?)
- current backend API has a lot of fallbacks if backend doesn't support more specific method
- discussion continued on PR
3.10.1
Feb 6
attending: @efiring, @tacaswell, @ksunden, @QuLogic, @story645
Agenda
Old business
New businesses
Notes
RSE updates
-
Kyle
- still chipping away on data-prototype
-
Tom
- minimal work, paper work is moving
-
Elliott
- working on text stuff
- working on website
- plausible work
- updated discourse, caused minor down time
- old droplet is still running if we need to investigate
- turn of within a week
GSOC
- @story645 will email matplotlib-dev to see if anyone wants to mentor, currently does not look like we can support this
linkd-in
- @tacaswell will try to get admin access
- @story645 wants access to publish announcements
bluesky
- @story645 will write up options for domain verification for next week
Jan 30
attending: @tacaswell @pawvelJ @efiring @ksunden @QuLogic @story645
Agenda
Old business
New business
Notes
Introductions
RSE updates
- Kyle
- rebuilt and republished 3.10
- continue on data-prototype stuff (mostly line and image so far)
- Elliott
- took care of Fedora build issues
- expand tolerances to additional archs, there is PR
- font work is on going, need to open PRs
- Tom
wheels
- remove icon/demphasize participation on public site but keep status quo
Jan 23
attending: @tacaswell, @efiring, @ksunden, @timhoffm, @scottshambaugh, @story645, @QuLogic, @trygvrad
Agenda
Old business
New business
Notes
RSE updates
- Kyle
- more pyplot compatibility with data prototype
- roll out plan
- start with separate project on pypi
- Tom
- some review work, CI work
- Elliott
- finishing up performance work
- got 17% memory and 35% runtime savings in RGBA pipeline (avoid copies!)
- look at making colormapping step faster by going to c++ and removing a lot of copies
- looks like there may be a factor of 4 available
- showing up as a problem now due to 3.10 change to interpolation stage
- looking at failing builds on fedora
- may need updated tolerances on non-x68_64 platforms
- font work?
replite
- start on docs landing page (stable/index)
- make sure it builds before moving it around
- make sure not putting heavy network load in most common pages
- potentially move the live repl to quickstart
- adding repls and launch buttons to examples is downstream PR
grouped bar charts
3D things broke
- looking at how to preserve speedups without breaking non-square wire frames
- most of the speedup was in the autoscale code, maybe call that twice rather than forcing a ragged array with nans
discussion about color map
- why do we do lookup?
- general method that works for all color maps
- has performance benfits
- some discritization artifacts still possible with our default size
- intentionally using a small number of samples when can lead to better compressed pngs
multi-dimension colormap
- @tacaswell will look today or tomorrow
- needs review
- adds extra call signature to
imshow
- pay attention to docstrings
what to focus on in grouped bar chart
Jan 16
attending: @tacaswell @timhoffm @efiring @ksunden @QuLogic @story645
Agenda
old business
new business
Notes
NASA
- grant paper work is moving so we can start spending money
RSE updates
-
kyle
- planning stages for data-prototype work to be ready for scipy submissions
- list of pyplot functions to re-implement
- wrap of partially implemented thoughts
-
elliott
- catching up, going over PRs
- took a break on font stuff
- looking at performance thing
- have an open PR to cut down memory usage in RGBA stage interpolation
- 25-30% memory reduction for 100K size increase on the so
-
Tom
- mostly grant management
- some review
consolidate small-medium project pages
ok, sounds good to do
trade mark claims
paperwork is moving with legal
Jan 9
attending: @greglucas, @efiring, @story645, @tacaswell, @rcomer, @ksunden, @efiring @timhoffm
Agenda
old business
new business
Notes
RSE updates
- Tom
- time off
- python-build-standalone
- some review
- Kyle
- some time off
- working on planning the next 2 months of work
- catch up
what big stuff is in the pipe?
- bivariate colormap (has PR, needs review)
- bezier work (from Bruno)
- PR to vectorize 3D code
- some have been resurected by Scott
- font work! (raq)
- groupbar chart
- what artists get a label attribute
- start to look at ticks
- to ideas:
- want to have a unique id so you can select artist by name 2
- sometimes people (ab)used the label API for this
- label is top-level artist property to be used in legends even on things that should never be in the legend (like the Legend itself or the whole figure)