Try   HackMD

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 -

tags: 2025 dev call

Call co-ordinates: Thursdays @ 21:00 (9:00PM) Berlin time (20:00 UTC during winter, 19:00 UTC during summer)

Zoom link

Find your time

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

projects

RSE worklog


June 12

Agenda

attending:

new business

  • NF Code of Conduct onboarding meeting (NF coming to our meeting)

May 29

attending: @efiring @ksunden @story645 @QuLogic

Agenda

Old Business

  • RSE updates
  • font updates

New Business

  • hannah triage nomination project board
    • wait til next week

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

  • RSE updates
  • font updates
  • hannahNew Contributor meeting

Notes

New Contributor Meeting June 3rd

RSE updates

@ksunden was at scientific python summit

@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

  • RSE updates
  • font updates

New business

  • public aria API

Notes

RSE updates

  • Kyle:
    • at scientific-python summit this week
  • Tom:
    • some review
  • Elliott:
    • fonts
    • alt text

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

  • RSE updates
  • font stuff
  • hannah CoC adoption timeline
    • missed end of April deadline, next deadline is September

New business

Notes

py314 issue

  • go ahead and merge it

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

  • RSE updates
  • font stuff
  • hannah CoC adoption timeline
    • missed end of April deadline, next deadline is September

New business

Notes

CoC

  • needs timeline for pr/public comment period
    • soft consensus towards independent arbitrator

Font/RSE

3.10.x/RSE

RSE

  • Kyle admin around summit

April 24

Agenda

attending: @QuLogic @ksunden @QWhXj01mSwmTjk5kN1H_qQ @story645 @tacaswell

old business

  • RSE updates
  • font stuff

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

  • RSE updates
  • grant updates
  • freetype migration
  • mpl-gui integration progress

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

  • RSE updates
  • grant updates
  • ultimate fallback font

New business

  • mpl-gui integration
  • tex work
  • drop py3.10 support

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

  • none

last-resort fallback font

  • just needs review

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

mpl-gui #29836

  • 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

  • RSE updates
  • Grant updates
  • freetype upgrade
  • ultimate fallback font
  • font shaping work

New business

  • mpl_gui integration
  • tex work

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

  • RSE updates
  • grant updates

New business

Notes

  • kyle: mostly data prototype stuff
  • Elliot: freetype/text work

March 20th

attending: @ksunden, @efiring, @ksunden, @story645

Old business

  • RSE updates
  • grant updates

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

March 13th

attending: @story645 @efiring @ksunden @timhoffm

Old business

  • RSE updates
  • grant updates
  • hannah numfocus coc:
    • recommend or response version? From Kamila (Numfocus):
      • response: "NF CoC WG will handle communication with the reporter and reported person. Any bans, or permissions restrictions would be rather on Project's since NF CoC WG will not have a physical possibility to do that. In some cases NF CoC WG would also need some help from a Project to contact the reported person, since they might not have a contact." "your community is obligated to implement the WG decision."
      • recommend: "all the actions and communication with reported and reporting person is done by a Project", "The main argument here is that the report will be worked on by an external, independent, trained Working Group." you just need to acknowledge that you received the recommendations and you will consider them." "There is no defined path for what would happen if the decision would not be implemented. It's a matter for discussion.

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

  • RSE updates
  • grant updates
  • hannah numfocus coc:
    • recommend or response version?
      • response - numfocus working group manages consequences & enforcement
      • recommend - matplotlib COC commitee manages consequences & enforcement (WG gives recommendations)
    • multiple projects want clarity on moderation guidelines, Numfocus suggests using online event guide for now

New business

Notes

RSE updates

  • kyle
    • scipy talk propsoal in
    • Cleanup of 3.10.1 release (docs/announcement/etc)
  • elliott
    • on vacation!
  • tom
    • some review

CoC updates

  • two modes of opting-in
    • respond
    • recommend
  • 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

  • RSE updates
  • grant updates

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

  • tutorial?
    • no descion yet

social media stuff

  • no response from linkdin
  • bluesky verification is doen

Feb 20

attending: @tacaswell, @ksunden, @trygvrad, @story645

Agenda

Old business

  • RSE updates
  • grant updates

New business

Notes

RSE updates

  • kyle
    • data-prototype work
    • making progress on 3.10.1 release out
  • tom
    • grant work
  • Elliott
    • webservers cut over to new droplets

grant updates

  • NASA still moving

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

  • RSE Updates
  • NASA status
  • hannah bluesky verification
    • @matplotlib.matplotlib.org
      • allows for @username.matplotlib.org if we wanna allow third party packages to register
    • @matplotlib.org
      • technically we can do both -> @matplotlib.org doesn't prevent @username.matplotlib.org

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:
    • some review
  • 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

order of setting norm changes depending on colorbar on figure or not

  • 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

  • maybe next week

Feb 6

attending: @efiring, @tacaswell, @ksunden, @QuLogic, @story645

Agenda

Old business

  • RSE Updates
  • NASA status

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

  • RSE Updates
  • NASA status

New business

  • hannah What to do about X (contingent on Pawel attending the meaning)
  • tacaswell wheel policy
    • propsoal: if all our compiled dependencies have have wheels, CIbuildwheel will build it, the build is a reasonable time, and someone asks for it, then we will build that platform. Tier 1 and Tier 2 platforms we build wheels for (https://peps.python.org/pep-0011/) will block a relaese if the wheel builds are failing, all other platforms do not block a release and wheels may be skipped

Notes

Introductions

  • Pawel joined this week

RSE updates

  • Kyle
    • rebuilt and republished 3.10
    • continue on data-prototype stuff (mostly line and image so far)
  • Elliott
  • Tom
    • not much, some paperwork

wheels

twitter

  • 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

  • RSE updates
  • NASA status

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?
      • PRs next week

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

  • ready for review

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

  • NASA updates
  • RSE updates

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

  • 3.10 doc tweaks
  • NASA updates
  • RSE updates

new business

Notes

RSE updates

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

labels

  • 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)