owned this note
owned this note
Published
Linked with GitHub
# 2022-01-06 to 2022-05-12
**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 6 2022 -- 12 May 2022
[![hackmd-github-sync-badge](https://hackmd.io/jd_7FjxNQ4y7XgNknvmvGQ/badge)](https://hackmd.io/jd_7FjxNQ4y7XgNknvmvGQ)
###### tags: `2022 dev call`
Call co-ordinates: Thursdays @ 21:00 Berlin time (20:00 UTC during winter, 19:00 UTC during summer) https://zoom.us/j/384435716?pwd=WFpxVWxoYXArTDFzN1lWaHNoOE8xZz09
Previous notes: [Meeting Agendas](https://hackmd.io/zljR-pZrQ0O5J_j4NZ-9yw)
Archive: [matplotlib/ProjectManagement](https://github.com/matplotlib/ProjectManagement)
#### [Needs discussion at some point](https://hackmd.io/uzWviu8zSUChq3XhI2FqPg)
#### [Medium sized projects](https://hackmd.io/GgtrcXTlTfuoyHO76_LMLg)
# May 12, 2022
Attending @melissawm @tacaswell @QWhXj01mSwmTjk5kN1H_qQ(@efiring) @IGuKs80UTJCig4yt6Zos7w (@greglucas) @dopplershift @QuLogic @story645
@andrew-fennell
## Agenda
- [x] new comers update
- [x] [name=Melissa] You are welcome to join us for the Alt-Text workshop tomorrow at 1PM UTC. Please retweet if you can: https://twitter.com/matplotlib/status/1524690852622352384
- [x] [name=Melissa] Canned responses: https://hackmd.io/@melissawm/BkxobcZU5
- Please upvote this issue: https://github.com/github/feedback/discussions/4974
## notes
### new comers meeting
- first meeting went well!
- idea to add to link to welcome note
- Newcomers meeting notes: https://hackmd.io/4tChpGtmTjadaG5aiejX2w
### Alt-text meeting
- scientific python group is having workshop on how to write alt-text for scientific plots
- important to improve accessibility
- learn how to make code, text, and figures more accessible
- marking up Matplotlib blog posts
### canned responses
- looks good enough to open a PR
- at least somepeople upvote
### gitpod
- numpys version: https://numpy.org/doc/stable/dev/development_gitpod.html
# May 05, 2022
attending: @melissawm, @timhoffm, @tacaswell, @qulogic, @andrew-fennell, @greglucas, @oscargus, @story645
## Agenda
- [x] [name=Caswell] move napari-matplotlib to matplotlib org https://github.com/dstansby/napari-matplotlib
- [x] 3.5.2 out!
- [x] 3.6 issue triage
- [ ] path simplification
- [x] [pydata-sphinx-theme community representatives](https://github.com/pydata/pydata-sphinx-theme/issues/645)
- [x] [name=Melissa] New contributor call :tada:
- [x] [name=Melissa] Canned response for rebase. ([A proposal](https://hackmd.io/@melissawm/BkxobcZU5))
- [x] [name=Melissa] Results of https://www.when2meet.com/?15401465-rmuaG
- [x] [name=Melissa] Adding commit message instructions to contributor guide? ([Example from NumPy, may be too strict?](https://numpy.org/doc/stable/dev/development_workflow.html#writing-the-commit-message))
- [x] [name=Melissa] [Co-authors in PRs](https://github.com/matplotlib/matplotlib/pull/22802) - we could probably add a note to the documentation. The commit message cannot be just the "Co-authored-by" line.
- [x] [name=hannah] start new notes doc cause this one is getting laggy
## Notes
### how to document instance attributes
- discussion of https://github.com/matplotlib/matplotlib/issues/22897
- how auto vs manual docs for attributes
- attributes are implicitly in `__init__` so no good place to stuff the docstring
- numpydoc solution is to manually have an attributes section
- however we can not link to these as targets
- not sure if these is sphinx (just not possible) vs numpydoc (not generating the targets)
### Move napari plugin to org
- options are
- no
- yes, later
- yes, now
- action: move now!
### 3.5.2 is out
:tada:
- some new bugs
- force us to move to $10 droplet
### new contributor call
- spammed the channels that it wlil be happening
- next week (May 10 6PM UTC, 1PM NY, 11pm MT)
- https://hackmd.io/@matplotlib/HJ_XM6CB9
- not sure what to expect, will adapt as we learn
- hopefully the university students who have been active come
### Canned response for needing a rebase
- descriptions look good
- consider splitting squashing and rebasing in two
- `-f` vs `--force-with-lease`
- someone in the numpy meeting suggested recording doing a bad rebase
- use full words rather than shortcuts
- put in docs as markdown literal
- we can not
- add note about `git rebase --abort`
- looking forward to PR!
### Results of when to meet
- results are mostly from people who already come
- leave meetings times as they are for now, re-address in a few months
### commit message rules
- follow numpy and use prefixes?
- numpy auto labels
- probably too strict for us
- improving titles wolud make github_stats page nicer
- core of what we want to get documented is basics (header + body)
- numpy mostly fixes up merge commit header + body with prefixes
- will open an issue
### labels
- propose more?
- our labels can be confusing, we do have descriptions
- maybe delegate this to a (future, trying to be re-started) triage team
- discussion about "need-approval-for-workflow"
- thought was automatic, but is actually manual my Elliott
### tune "needs workflow approval"
- currently need approval for everyone who has never opened a PR to Matplotlib
- we can relax to only require approval for new to github (not new to Matplotlib)
- seems low risk for us
- action: relax!
### pydata-shpinx-community rep
- looking for team from projects who will be notified of updates to theme
- maybe Jody
- definitly Elliott
### 3.6 triage!
- https://github.com/matplotlib/matplotlib/pull/22387 (Elliott to merge, tim to fix)
- https://github.com/matplotlib/matplotlib/pull/22298 (Caswell to review / merge)
- https://github.com/matplotlib/matplotlib/pull/22669
- https://github.com/matplotlib/matplotlib/pull/21594 (Caswell / Elliott)
### memory issue
- newly added test is flaky
- may not be running long enough to see
- possibly some complications from the previous state
- maybe move to its own CI job or ASV
# April 28, 2022
## Agenda
attending: @tacaswell, @efiring, @story645, @greglucas, @andrew-fennell, @QuLogic, @jklymak, @melissawm, @noatamir
### Old Business
- [x] [name=@noatamir] Please mark you general availability here: https://www.when2meet.com/?15401465-rmuaG. This will help us with setting time for the community call & the new comers meeting. (deadline is end of April 😉).
### New business
- [x] Unsolicited positive feedback from Cameron Riddell (who is a trainer at DUTC which is James Powell's company which does corperate Python training and James is a NF Board member)
> Just wanted to drop you a little note about the AMAZING matplotlib documentation. I hadn't read the docs in a number of years and always remembered it being conceptually scattered with the examples having the most useful tidbits of information but always hard to track down. I've been reading through the current documentation and just wanted give a huge compliment to everyone who has worked on them. They are very thorough and I can tell a lot of effort has been put in them.
- [x] 3.5.2 state
- [x] 3.6.0 plans
- [x] [name=@noatamir] Just a quick update: Greg and I started planning for New Contributors Meeting. We are considering doing the first meeting on either May 10th/24th, 5PM UTC. A WiP template for the meeting is here: https://hackmd.io/-lwqhjGHSyiFGT4CnXu6BA. Feedback and participants are welcome.
- [x] Where can I put meeting notes? (I plan to archive each meeting agenda and reuse the template from scratch, unlike this running log)
- [x] note about security issue
### Issues and PRs
- [ ] move dpi to renderer update? [name=@QuLogic]
- [x] deprecate mlab? [name=@jklymak]
## Notes
### 3.5.2
- good to go exepct for leaking tk bug fix
- pushed a fix for the tests, but macosx is still not passing
- will special-case macosx to pass for 3.5.2
- these are pre-existing leaks
-
### 3.6.0
- font fallback PR needs to go in
- Ian's contour dependency needs to go in
- Some outstanding OSX backend stuff
- 45 non-draft PRs
- please start moving stuff to 3.7.0 milestone
### New contrbutor meeting
- once/month
- see how numpy does it
- next Thu 5 May
- archive notes to project management
### OAuth security breach
- Github issue for private repos. Matplotlib probably not affected.
- remove Travis as we don't use it.
- a few semi-moribund sub repos still have Travis
- other integrations: pullpanda - obsolete; octobox - better github inbox, but maybe not for the org?
- travis has been suspended
- will remove after talking to repos that still have .travis.yml
### deprecate mlab
- have occasional issues with mlab
- do always follow expected conventions
- some of them may be wrong (due to normalization/scalings)
- vistage from early times when scipy was not existing / hard to install
- plotting is trivial, but do both stats + plotting
- have kde routines that we need for violin plot
- we do not currently have a scipy dependency
- do not want one (scipy is big!)
- optional?
- make our KDE code private
- spin out spectral plotting?
- position of people who do power spectral density is we should not be doing this
- too much complexity to make a neat and complete API
- down side
- we think it may be widely used
- proposal to extract out to stand-alone package
- pro: gentler migration path
- con: still has convention issues
- outcome:
- consensus is that it should be deprecated
- previous removals:
- deprecated stuff in 3.2
- https://github.com/matplotlib/matplotlib/pull/18522 (removed for 3.4)
### dpi refactoring
- we want to move where the "high" dpi conversion is handled
- have our target coordinate system be fully notional / internal
- do to-actualy-dpi conversion in the renderer
- canvas knows dpi "should be". At draw time changes dpi
- but not quite low enough; draw time tight layout hook happens.
- currently in a mixed state:
- only when drawing does it change dpi.
- soln: put in renderer
- discussion about the details of fonts and kerning
---
# April 21, 2022
## Agenda
attending (gh usernames): @noatamir, @tacaswell, @efiring, @story645, @greglucas, @andrew-fennell, @QuLogic, @jklymak
### New business
- [x] do we want to add commit message contents to review guide lines?
- https://github.com/matplotlib/matplotlib/pull/22802 had issues with a) not a great commit message b) did not trigger the co-author logic in GH like contributors wanted
- [x] Matplotlib plugin for napari https://chanzuckerberg.com/rfa/napari-plugin-grants/
- up to 20k$ grant, find contractor to do this work?
- work to pitch
- make sure Qt integration is seamless
- artist wrappers that understand napari's data model
- bridge between napari's event system and mlp
- [x] [name=@story645] https://github.com/matplotlib pinned repos
- [x] remove matplotblog
- [x] replace w? (3rd party?)
- [x] Which array libraries should Matplotlib support (and test support for)? [#22645](https://github.com/matplotlib/matplotlib/issues/22645)
- [ ] [name=@noatamir] I'd be happy to chat with people about the project in general, and specifically to hear your perspectives about contributor experience. You can book a meeting with me at your convenience using https://calendly.com/noa-quansight/
### Old business
- [ ] [name=@noatamir] Please mark you general availability here: https://www.when2meet.com/?15401465-rmuaG. This will help us with setting time for the community call & the new comers meeting.
## Notes
- Replaced pinned matplotblog with cookiecutter repo
- Do we want to change the order? Seems fine as is
### discussion about commit messages
- do we want to include review of the commit messages?
- probably yes, but how to do it?
- we can do it and push back?
- can ask the user to do an interactive rebase?
- it is a thing you need to learn
- but the overlap between people who need to re-write commit messages and do not know how to rebase is high
- actions
- add link to "what is good commit message" to PR checklist
- add note to review guidelines to check commit messages
- ask commiter to rebase / offer to do it for them (need canned message)
- discussion about what is a good commit message
- does not have to stand completely alone
- should describe something / give context
- does not need to give full story, but enough to flag "maybe this one...."
- references
- https://cbea.ms/git-commit/
- https://numpy.org/doc/1.14/dev/gitwash/development_workflow.html#writing-the-commit-message
- https://docs.scipy.org/doc/scipy/dev/contributor/development_workflow.html#writing-the-commit-message
### Napari backend CZI plugin
- https://chanzuckerberg.com/rfa/napari-plugin-grants/
- 20k. 2 months...
- summary of napari
- history of imagej
- imagej is "Standard" tool in bio
- most new techniques have to be implemented as imagej plugins
- napari is an attempt to re-implement in Python
- there is a bunch of statistics / none image plotting that napari wants to do
- https://github.com/napari/napari/issues/1005 is early discussions
- Reach out to David Stansby
### which data types will we support
[#22645](https://github.com/matplotlib/matplotlib/issues/22645)
- numpy
- pandas
- xarray?
Seem to be standardizing in the chain:
- isinstance(obj, np.array)
- obj.to_numpy
- obj.values
- np.asanyarray(obj)
We should:
1. document what set of API do we require you to duck-type as
2. including the expected shapes / squashing of these things
"We support numpy array + what ever launders through <function>"
side discussion about the value of missing data
Do we want to make `unpack_to_numpy` public?
- maybe? @tacaswell will write up issue
# April 14, 2022
## Agenda
attending (github usernames): @noatamir, @timhoffm, @efiring, @story645, @melissawm, @QuLogic
### Old Business
### New Business
### PRs and Issues
- https://github.com/matplotlib/matplotlib/pull/22669 pyplot docs; please have a look at some point
- https://github.com/matplotlib/matplotlib/pull/22749 artist property decorator
## Notes
- Find out what's going on with CZI 5?
- For typos and other corrections on documentation, a Documentation issue should be opened.
- Depending on the scope, the issue should be open on the main repo or https://github.com/matplotlib/mpl-sphinx-theme or https://github.com/matplotlib/mpl-brochure-site
- Consider adding a `LICENSE` or `LICENSE.md` file to get the last tick mark on https://github.com/matplotlib/matplotlib/community
- Feedback on [draft email](https://hackmd.io/@noatamir/mpl-meeting-email) is welcome (I might redo the link before sending the email so the dates are in the future, rather than the past 😉)
- artist property decorator (22749)
- move from "magic" determination of artist properties to explicit indication of artist properties
- should we move to "real" Python properties? perhaps in the future, but not the current goal
- does this only affect docs?
- it also touches alias definitions, but does not simplify creating them
- can we attempt to use traitlets for some of this?
- we should write up exactly why the previous traitlets attempts failed
- perhaps we can avoid all the boilerplate around getters/setters and be more declarative, though this might start looking like traitlets again
# April 7, 2022
## Agenda
attending (github usernames): @noatamir, @melissawm, @QuLogic, @timhoffm, @jklymak, @tcaswell, @andrew-fennell, @greglucas, @ianthomas23, @story645, @efiring, @oscargus
### Old Business
- [x] [name=@noatamir] Follow up on [Meeting Types](https://hackmd.io/@noatamir/meeting-types/edit), [draft email](https://hackmd.io/@noatamir/mpl-meeting-email/view)
### New business
- [x] Further contourpy planning
https://github.com/matplotlib/matplotlib/pull/22567#issuecomment-1087309007
- [x] [name=@noatamir] Contibutor guide review / proposed issues https://hackmd.io/o0td8dw_RAeF_1T8kKDd7g?view
- [x] https://discourse.matplotlib.org/t/looking-for-interview-participants-for-dei-study/22723 please signup or push out to your networks.
- [x] TOPS community panel volunteers https://science.nasa.gov/open-science-overview/TOPS-community-panel
### PRs and Issues
- [ ] MacOS backend backport things to 3.5.x? https://github.com/matplotlib/matplotlib/issues/22760 / https://github.com/matplotlib/matplotlib/issues/22690
## Notes
### Intros
### Re-consider meetings?
- [meeting types](https://hackmd.io/nrP1TX7cShCq_yOkOFkgNg?view)
- we have had OK success with just one merged-meeting
- suggestion of a weekly issue + bot to add things to the agenda
- maybe use the projects to manage agendas?
- Use label to identify issues / PRs that will be discussed
- more specialized meetings let people pick just the ones they want
- more general is easier for people start getting involved
- we have had specialized meetings
- gsoc / gsod
- Current meeting:
- high bandwidth sync without latency
- better verbal and visual cues
- personalize voices...
- come to consensus on "contentious" issues
- splitting out:
- some folks not interested in higher level of vice-versa
- get folks involved on non-coding parts
- newcomer meetings at numpy very helpful
- office hours?
- [draft email](https://hackmd.io/@noatamir/mpl-meeting-email)
### Contourpy
- 2014 algo and 2005 one in `contourpy`. Other vis libraries access with cotouring.
- 3.6 default existing algortihm (couple of small changes)
- possible packaging issues
- allow acces via kwarg
- default `2014`, `serial` (single core)
- name? "algorithm"
- add an rcParam
- impliment as interpolation kwarg
- already on condaforge all three operating systems
### Contributor guide
- open issues as we go
- keep PRs "Themed", but do not worry about doing "too much"
- we do have a re-director `redirect-from`
- kill gitwash?
- yes
- try to point to centralized scipydocs (that need to exist)
-------------
# March 31, 2022
## Agenda
attending: @melissawm, @efiring, @timhoffm, @elliot, @jklymak, @tcaswell, @andrew-fennell, @story645
### Old Business
- [x] [name=@noatamir] The when2meet survey to gather preferences for meeting time is ready: [https://www.when2meet.com/?15144382-549L9](https://www.when2meet.com/?15144382-549L9)
- Shall we share this with the dev mailing list?
- May we use this opportunity to introduce me [Noa] to the community? i.e. I write the email and introduce myself?
- Do it on discourse as well
### New Business
- [x] Write access to notes
- Can everyone edit the notes/agenda?
- [x] [name=@noatamir] Meetings: should we add:
- A bi-weekly community and/or documentation meeting where this group discusses community and/or documentation related topics
- A new monthly newcomers meeting which is open to the community at large to come ask us questions, and meet us, but we don’t need to prepare an agenda.
### PRs and Issues
- [x] [name=@ianthomas23] https://github.com/matplotlib/matplotlib/pull/22567 -change contouring algorithm; approach onwards?
- [x] [name=@jklymak] cached renderer:
- dont have various places where the renderer is queried?
- https://github.com/matplotlib/matplotlib/pull/22744
- https://github.com/matplotlib/matplotlib/pull/22745 (attempt to centralize all renderer calls, and make renderer optional in all `get_tightbbox/get_window_extent` calls).
- cached renderer should be accurate (??) https://github.com/matplotlib/matplotlib/pull/21758
- previous attempt: https://github.com/matplotlib/matplotlib/pull/21319
- [ ] [name=@anntzer] Redo of metadata in GUI events: https://github.com/matplotlib/matplotlib/pull/16931
## Notes
### When to meet
- https://www.when2meet.com/?15144382-549L9
- add to discourse
- make sure it is clear is not a raw vote ;)
- need to compose a meeting purpose
- dev meeting weekly
- issue/PR review
- bi-weekly community meeting?
- documentation
- both management and welcome
- depends on who joins the call
- need to scope the meetings
### Notes access
- HackMD "team members". Accessed on HackMd settings
- anyon signed into HackMd can edit
### change contouring algorithm; approach onwards?
- https://github.com/matplotlib/matplotlib/pull/22567
- old algo setup labels slightly differently
- a few test image changes
- new algortihm
- how to change to this new algorithm
- wholesale change? or step by step? rcParam/kwarg?
- 3.6 not block new knobs: default "new old" alogorithm
- get the dependency in
- add a new kwarg with strings to determine algorithm
- maybe allow an object with API
- "new" and "old" are not allowed as algorithm names!
### Cached renderer
https://github.com/matplotlib/matplotlib/pull/22745
- We have been inconsistent with where we get the cached renderer from
- have slowly been improving / standardizing
- have an issue where:
- user set a default backend of a vector backend (via `rcparams[savefig.format]`)
- this sets the dpi to 72
- which in computes contrained layout at the wrong size
- proposal
- every place that asks for renderer is now optional
- exactly 1 place for the get cache logic
- all atrtists that have been added to a Figure know about the Figure -> can get access to the cached renderer
- not too worried about the performance costs
- extra method call
- some discussion on if we want to keep the ability to pass renderer in long term or not
- on one hand we can say these methods only make sense on Artists that are in a Figure so do not give two ways to do it
- on the other hand, good to keep the ability to do things statelessly/explictly when needed
### 3.5.2
--------------
# March 24, 2022
## Agenda
### New Business
- Open PRs: `is:pr is:open draft:false`: 70
### PRs
- [x] Legend symbols in labels: https://github.com/matplotlib/matplotlib/pull/16005
- Redo of metadata in GUI events: https://github.com/matplotlib/matplotlib/pull/16931
- [x] https://github.com/matplotlib/matplotlib/pull/22556#discussion_r821544848 documentation convention for matplotlib properties
- [x] https://github.com/matplotlib/matplotlib/pull/22356 - Cleanup tripcolor() [needs review]
- https://github.com/matplotlib/matplotlib/pull/22567 - approach onwards?
## Notes
### Introductions
- Melissa, Noa; CZI community outreach support.
### meeting Time discussion
- send when-to-meet to mailing list to see if an alternate time would get more attendance
- we may want to split up meetings by topic?
- @tacaswell and Mellissa will coordinate to get poll out
- concern this is after work hours
### Legend symbols in labels: #16005
- currently adds legend element to each text object
- leverages hpackers and ways to get legend entries.
- create a wrapper API to make legend artists (that gets used in legend) ie `LegendEntry`...
- pass arbitrary artist to x/ylabel (in addition to accepting a string) title as well...
- margin spaces - put something into the "margin"...
- need some sort of limits on the artist type so that xlabel and ylabel aren't arbitrarily sized.
- @jklymak will comment on PR
### documentation convention for matplotlib properties
- properties: setter and getter
- take *None* as default, which is an rcParam.
- How to spell that in the get/setter documentation.
- overhaul tables
- enforce `set_blah(None)` to explictly return to rcParam.
- maybe with decorators
- Go with option 1: fix init doc string after...
---------------
# March 17, 2022
## Agenda
### New Business
- Adjust time of meeting (both due to DST and in general)
- in-person conferences are starting up again (:scream:) does any one in EU want to go to these in official capacity?
- https://pydata.org/london2022/
- https://2022.pycon.de
- lazy loading
- https://github.com/scientific-python/lazy_loader
- https://scientific-python.org/specs/spec-0001/
- https://github.com/matplotlib/matplotlib/issues/22247
### PRs
- https://github.com/matplotlib/matplotlib/pull/16005
- https://github.com/matplotlib/matplotlib/pull/22556#discussion_r821544848 - documentation convention for matplotlib properties
- https://github.com/matplotlib/matplotlib/issues/22645 - which libraries / data types do we want to support as inputs?
- https://github.com/matplotlib/matplotlib/pull/22356 - Cleanup tripcolor() [needs review]
## Notes
### meeting time
- Track 2100 berlin time
- This is 2000 UTC this week and next
- 1900 UTC for the summer
### EU meetings
- Tim is going to pycon de already, will make introductions
### lazy loading
- lets try it out!
- might collide with our caching module properties
- very new project, but some faith in long-term commitment to maintence
- looks like a good idea, but wary of too much "magic"
### updates on blog/forum/etc
- blog migration in progress
- NF agrees GDPR is an interesting question
- discourse migration stalled on this
- leaving GA as-is for now
- plausible integration
- need to put PR into pydata sphinx theme to support plausbile
### website maintence team
- need volunteers for website (backend) team
- currently only org admins
### PRs
#### 22645
https://github.com/matplotlib/matplotlib/issues/22645
- definitly support `to_numpy`
- there is a standard array api coming, not sure how widely adopted it is yet
- no one on the call is quite sure what the state of this is
- https://data-apis.org/array-api/latest/API_specification/index.html
- seems like a good idea to add tests for more libraries
Discussion about the proposed data work
- this is what is proposed for the NASA grant and has been Hannah's disertation
- https://gist.github.com/tacaswell/95177903175dbc28be5353b4a0e5118f
Discussion about how much test dependency to
- slippery slope, can pick up some wild dependencies
- fair point that if we promise to use `to_numpy` -> do not worry about testing exhaustivly everything that provides that
- there can be too much testing / bad testing
- restrict array library testing to just run through the conversion / sanitation step
- can make a dummy object with a `to_numpy` and test with that
- have presedence with unit (quantity like) tests
- some questions as to why use `obj.to_numpy` vs `np.asarray(obj)` vs `np.asanyarary(obj)`
- we think related to copying and when it happens?
Plan:
- claim to support things that support `obj.to_numpy()` and `obj.values`
- write helper code with deal with munging / shape validation
- test those helpers to the hilt via dummy classes that implement `to_numpy`
- add some tests using the real libraries
- add to weekly dev version tests
- https://github.com/matplotlib/matplotlib/blob/a2ddfc0c0fe9dee891dcc8c12fdd4fc2ed77fd0c/.github/workflows/tests.yml#L215-L227
# March 10, 2022
## Agenda
### New Business
- CEL introduction
- if Melissa Mendonça joins the call
- updates on webpage hosting
- https://github.com/matplotlib/matplotlib.org
- consolidate blog with https://blog.scientific-python.org/
- https://github.com/scientific-python/blog.scientific-python.org/tree/main/content
- can take markdown or notebooks
- can be etendend to support what ever is needed content wise
- merge discourse with https://discuss.scientific-python.org
- networkx + scikit-image (private) core mailing lists currently hosted
- community wide discussions
- migrate away from GA to plausible (throw in with numpy + scipy)
- pro: more privacy
- con: lose our history
- can do both (at least for a while)
- https://devstats.scientific-python.org/
- exist and is maybe useful?
- On-going project to centralize docs
- holistic docs {user, contributor, maintain, found}
- no action for us now, but should be aware
## Notes
### EU events
- moved to next week
### CEL introduction
- Melissa, Noa, Inessa, DEI funded
- goal is to improve DEI in our projects
- improve Contributor Experiance / onboarding
- focusing on under represented groups
- expect that will also improve things for everyone as well
- started a few weeks ago with numpy, starting to get to other projects
#### What do you need from us?
- planning to start with harmonizing the developer documentation between 4 projects (numpy, scipy, pandas, Matplotlib)
- understanding how the projects currently works
- starting with PRs
- will need reviews
- have joined our various communication channels
- Caswell: can you fix gitwash
- Yes!
- discussion of docs
- make sure to look at https://matplotlib.org/devdocs
- discussion about how to get started
- there are a zillion ways to get started, what is the best way?
- depends on the system and the user
- win vs mac vs os
- user may be expert, but not know OSS
- numpy has started using gitpod
### docs
- have cut over to DO hosting
- bumping up against the limits of disk space, probably go up a size
- have a real 404 page
- working on ansible to make it possible to spin up new instances
- moved matplotlib.org repo to https://github.com/matplotlib/matplotlib.org with all scripts etc
### consolidation with scientific-python
#### Blog
- pros:
- more visibility
- cons:
- lose a bit of uniqueness
Questions:
- can we move over Davide?
- yes
- can we move all of our content (news / gsoc updates / tutorials) ?
- expectation is yes, all of our content can move over (with some tag filtering)
Action: @tacaswell will set up introductions with Davide + Jarod + Setfan + Melissa [DONE]
#### Discourses
Yes
- will keep our users
- do we want to ask our users if they _want_ to be moved over?
-
- we definitely need to make an announcement
- may need to let opt-out
Code of conduct questions
- how to merge between projects?
Long discussion of GDPR :scream_cat: :scream:
Actions: @tacaswell will email Stefan + Jared + Noa that yes we want to do this, but how (given GDPR / privacy / etc) [DONE]
### tracking
- do we want to add plausible?
- does it add to our burden?
- it's a wash
- no strong feelings
- pro:
- no need for a banner
Action: @tacaswell will get the code to add Plausible to our site [DONE]
Action: @tacaswell will ask for legel advise about our current use of GA [DONE]
# March 3 2022
## Agenda
### New Business
- GSOD: March 25
- https://developers.google.com/season-of-docs/docs/timeline
- fixing 3d ticks direction #22517
- doc hosting state
### 3.5.2 reviews
- https://github.com/matplotlib/matplotlib/pull/22005
- https://github.com/matplotlib/matplotlib/pull/22313
- https://github.com/matplotlib/matplotlib/pull/22138
- this one might need git surgery
## Notes
### GSOD
- unfortunately we do not have the capacity to participate this year
### discussion on 22517
- https://github.com/matplotlib/matplotlib/pull/22517
- user bounced off of working with us, but that is OK
- underlying technical problem is harder than initially anticipated
- requires some additional refactoring (https://github.com/matplotlib/matplotlib/pull/22587)
- @qulogic had started work in z-ticks
- @timhoffm will finish technical work
### docs update
- we moved to DO hosting rather than gh-pages hosting
- main concern is that we are a bit low on disk space, fixable via paying a bit more to DO
- CF is caching images, html still going to use every time
### 3.5.2 review
- https://github.com/matplotlib/matplotlib/pull/22005 (@tacaswell has minor changes to make)
- https://github.com/matplotlib/matplotlib/pull/22141 (merged)
- https://github.com/matplotlib/matplotlib/pull/22560 (@oscar has minor changes to make)
# Feb 24 2022
## Agenda
### New business
- event metadata: https://github.com/matplotlib/matplotlib/pull/16931
- color registry https://github.com/matplotlib/matplotlib/pull/22387
- (?)replace contour lib https://github.com/matplotlib/matplotlib/issues/22529
- small dev grant
- https://numfocus.org/programs/small-development-grants
- 10K, due March 4, 2022
## Notes
### dev grant
medium projects: https://hackmd.io/@matplotlib/HJIj1bjvY
pass on putting something in this cycle, no one has bandwidth to write or manage
### RSE posted
https://discourse.matplotlib.org/t/research-software-engineer-roses-2020-position/22597
### color registry
- started as idea to have registry of color sequences
- pointed at seaborn colour palettes
- sample existing Matplotlib color map (get N samples out of a color map, currently possible, but much easier API + some subtlies)
- sampling from cubehelix
- lighten / darker versions of a color
- one fuction that can do lots and lots of things
- do we want to take all of this?
A proposal:
- keep the registry a mapping of [str, List[color]] as implemented
- take the function as a stateless function that generates sequence
#### naming
- should keep colormap and sequence names the same when they match
- tab10
- concerns about updating to newer colors
- getting premission again
- API change?
- start with only populating with our qualitative color maps
- let third-party/users fill namespace
#### sequence vs color map vs pallette
- sequence is "just" a container class with colors in it (e.g. `list` or `tuple`)
- colormap is a special object that has a bunch of other functionality
- `_ColorPalette` is a `list` subclass that adds some helpers
---------------------------
# Feb 17 2022
## Agenda
### Old business
### New business
- Introductions
### Issues and PRs
- `vector()` API: https://github.com/matplotlib/matplotlib/pull/22435
- color registry https://github.com/matplotlib/matplotlib/pull/22387
## Notes
### Arrow
We want several things
1. replacement for `ax.arrow`
2. simple wrapper for `FancyArrowPatch`
3. simple API to draw a lot of arrows at the same time
These are conflicting
- do we want to ~~color~~ style cycle
- different answers depending on why we think the purpose is
- in any case probably _only_ want to use color not all of them
- is the request here primarily to make it easier? (does the `'C{N}'` spelling fix it?)
- could let color take a value to opt-into the color cycle
- allow `'CN'` to be a way to opt-in to partcipating in (a) color cycle
- wolud have to do this everywhere we currently take a color (and it makes sense)
- this seems like a big project, proably should be handled
- currently arrow does _not_ participate in color cycle
We want to keep things as simple as possible
-`vector` is a convenince method to:
- make a `FancyArrowPatch`
- that is specified by the tail in data space
- and the length + direction is specified by dx, dy
- defaulting to following the (line) color cycle
- make sure it documented on how to set the color cycle
- it is easy to document how to escape the color cycle
- we currently have no way to opt _into_ a color cycle from the outside
#### Other concerns
Need to make sure we can update https://matplotlib.org/devdocs/gallery/text_labels_and_annotations/arrow_demo.html#sphx-glr-gallery-text-labels-and-annotations-arrow-demo-py without too much trouble
#### how to specify the arrow?
- (x, y, dx, dy) vs (xy, disp) vs (xy, end)
- err on the side of structured input
- proposed signature:
- `def vector(self, start, *, delta=None, end=None)`
- require exactly 1 of *delta* or *end*
- or `dxdy` or `diff` or `displacement`
- Some concern about the complexity of supporting both
- but it in very plot dependent which is the "natural" paramatarization
#### possible way out
- re-use `arrow` name
- keep the semantics the same
- add a flag to opt-into new class + deprecation cycle
pro:
- avoids above discussions / complications (it does what it does, stop it)
cons:
- lightly messy deprecation / type instability
#### Conculsions
- Definitly not doing multiple here (either with renaming `vector` or re-using `arrow`)
- this can be done with `quiver` in a reasonable way but definitly needs to be better documented
- change signature to proposal above (both as keyword, one is required)
- must always type the name of one of them
- should also add the start, end, delta setter/getters to FancyArrowPatch
- color cycle:
- yes and line cycle
- legend with list of strings
- we at least check and document what these do or do not get picked up by `plt.legend(['a', 'b', 'c'])`
### docs
- up on DO, works manually, still need to automate
- will start to cut over slowly
---------------------------
# Feb 10 2022
## Agenda
### Old business
- Documentation hosting ([budget estimates](https://docs.google.com/spreadsheets/d/18T5FRm1EIv8xK2VTqM-BefSsFhZGtl1HUsWFONTbPm8/edit?usp=sharing))
### New business
- Documentation search
- Should we setup code scanning on GitHub? https://github.com/matplotlib/matplotlib/security
- Quick Wiki cleanup https://github.com/matplotlib/matplotlib/wiki
### Issues and PRs
- `vector()` API: https://github.com/matplotlib/matplotlib/pull/22435
-
## Notes
### Discussion about how to do development in conda contexts
### news on NASA grant
- we can hire contractors outside of USA (with some constraints)
- will work with NF to use their typeform platform to collect applications
- goal is to get this up by end of week
### docs hosting
- review of current hosting volume (see link in agenda)
- hosting on AWS
- just S3 (not great idea, only one region) ($530/mo)
- S3 + cloudfront (AWS CDN) ($620/mo)
- S3 + cloudflare ($139/mo)
- S3 + cloudflare + cloudfront ($183/mo) (and why do 2 CDN?)
- require some work to get all redirects working
- very likely we can get credits for this
- hosting on digital ocean
- fixed pricing for droplets ($10/mo) along with cloudflare
- cheaper, but maybe more work
- using `caddy` have automatic work to pull docs pages
- there are webhooks we can get github to poke to automatically download on push to gh-pages branch
- [sample configuration](https://github.com/QuLogic/matplotlib.org)
- option of splitting to many many repos
- probably doable
- mix of GH pages + other hosting
- leave stable where it is, move old-docs to self hosting?
- in past week:
- 2.5M hits to stable out of 60M total!
- GA says ~80% of traffic goes to stable
- considerations
- which is long-term maintainable?
- estimates of long-term price?
- start up work is a wash, but work on each release is critical
### documetation search
- currently we use "codex" to limit seach results
- currently do searches entirely on client side which involves pushing a big json blob with all of the keywords to the client (almost 2 MB)
- this makes it very hard tell how often people are searching
- our search is currently too context free
- frequently gives you the wrong things first
- reference for searching on static sites: https://gohugo.io/tools/search/
- elastic: lots of work!
- lunr.js and fuse.js which are client side
- but a very rich index client side would be pretty big
- comercial search services
- algolia
- numpy was looking at, but decided not to send search data to third party
- https://pytorch.org is example
- live search lets you see results into categories
- open source self hosting
- meili search
- could group by {blog, API, tutorial, examples}
- would require running an extra server
- advantage of going with DO
- would have to have a way to turn off for distro who ship HTML docs
- question about how much effort per new release
- hopeful it can be automated?
- how do we set up the mapping / nice grouping
- give it categories (maybe by directory/path)
- some hints of what html elements are interesting
- impression from docs is that it does its best to index what ever html you have rather than lots of manual work
### DECISIONS
- @ey3AIr8wSl2d1PPfOb9K1w keeps looking at search
- start process of moving docs hosting to DO
### ARM box for Elliott
- in NY, needs to be mailed
### Static code analysis
- opened PR to enable it
### discourse
- we should consider enable backups ($2/mo)
### vector API
- we want just x, y, dx, dy (in that order)
- just 1 not a bunch
- more than 1 should be re-directed to `quiver` or their own loop
- either you always return list of artists or live with type instability
- no default to 0 for any of the parameters
- pass everything through to fancy arrowpatch
- curate docstring with examples + common knosb
#### Color?
- should it follow color cycle?
- pro: arrow does
- pro: color cycle makes naive legend usage easier
- pro: it is hard to get something to opt _into_ a color cycle
- pro: most (all?) other helpers follow the color cycle
- con: we expect it to be less common than `'k'`
- con: we will have to sort out which color cycle it will follow
- line because we think of it as line-like
- patch because it _is_ a patch subclass
- default to a clor?
- rcparams['line.color']
- make a new rcparam?
- hard-code
---------------------------
# Feb 3 2022
## Agenda
### Issues and PRs
- event metadata: https://github.com/matplotlib/matplotlib/pull/16931
- backend aliases: https://github.com/matplotlib/matplotlib/pull/19482
- deprecation of `arrow()`: https://github.com/matplotlib/matplotlib/pull/22382
- add an API for color sequences: https://github.com/matplotlib/matplotlib/issues/9460#issuecomment-1029186784
## notes
### deprecate arrow method
- uses data corrodinates for shape, tends to end up skewed
- fancy arrow patch is better alternative, but no high-level API
- deprecate
- switch guts of arrow to use `FancyArrowPatch`?
- APIs are different enough it would be hard
- This may have been the first arrow, later grew additional (but divergent API) versions
- what are the use cases?
- from absolute point -> absolute point
- from absolute point -> relative point
- arrow ends in data coordinates
- arrow shape in screen
- also used for vector (as in planer geometry not vector field) examples
- looking at usage
- 7k hits on github
- lots of google hits
- need a replacement function + guide on how to migrate
- need longer than normal deprecation time
- two ways to go with API
- import almost all of complexity from `annotate` and let the user specify the coordinate systems
- make vector _only_ be the relative like (like `arrow`)
- settled on a simplified `vector` API
- this is "data semantics"
- "put an 'arrow' on the plot to show the length and location of a vector"
- all in same coordiate system
- get to specify end point and relative length
- leave `annotate` the API for "put an 'arrow' on the highlight a point"
#### conclusion
- add `vector` to be the "end point + length in data space"
- deprecated Arrow with a very long time line
- deprecation note is "chose your own adventure" pointing to either vector or annotate
### side discussion about annotation docstring
- it is possible to explain, but docstring is too intimidating
- make signature more explicit )
### API to get sequence of colors
- have no API to get a simple list of colors
- can get them in color maps, but lots of ceremony to get at
- makes it hard to a ahold of the a sequence of colors to feed to the default color cyle
- proposal is to add a `ColormapRegistry` like API from accessing color sequences
- ability to access by name
- hand out copies not references
- protect our names
- ability for users to register / delete their own
#### Consenus
- Yes
### Breif discussion about getting N colors out of a color map
- seems reasonable, but mostly makes sense for continious color maps
- could do something sensible for non-conitious color maps? Restirct N?
### discussion of other color (map) things
- linear (in perceptual space) ramps between two colors
- Caswell has some helpers
- @QWhXj01mSwmTjk5kN1H_qQ suggested adding "interpolation space" to linear segmented color
- how to add alpha control to colormap (without hijacking LUT array)
- can we "just" pass RGBA lists to `ListedColormap`?
- bi/multi - variate color maps
- https://github.com/matplotlib/matplotlib/pull/8738 GSOC work that did not get finish
- issuse with colorbar
- @timhoffm has a context manager that replaces rcparams color cycle with N colors drawn from a colormap
- yes?
---------------------------
# Jan 27 2022
## Agenda
### Old Business
- sponsor page
- https://github.com/matplotlib/governance/pull/21
### New Business
### Issues and PRs
- Freetype, test image, mpl-pytest:
- https://github.com/matplotlib/matplotlib/issues/20842
- use separate image repo (hashes for most images)
- toolbar hooks: https://github.com/matplotlib/matplotlib/pull/22316
- backend aliases: https://github.com/matplotlib/matplotlib/pull/19482
- more pandas fun:
- https://github.com/matplotlib/matplotlib/issues/22125
- https://github.com/matplotlib/matplotlib/issues/22330
- Soln: to_numpy? https://github.com/matplotlib/matplotlib/pull/22141
- advertisement: compressed_layout for arrays of imshows or maps:
- https://github.com/matplotlib/matplotlib/pull/22289
## Notes
### Sponsor governance
- new governance website
- https://matplotlib.org/governance/
- need to link in footer of main page
- https://github.com/matplotlib/governance/pull/21
- sponsors and institutional
- sponsors.md basically NEP26 with some edits to justification
### toolbar hooks
- https://github.com/matplotlib/matplotlib/pull/22316
- MEP22; use own tools - not trivial to use, not taken up since 1.5
- Elliott had a PR for color vision deficiency tool
- alternate is hook that calls whatever you want.
- get handle to GUI widget to add buttons etc.
- need code to each backend.
- as rcParam - our figure window creation will call this..
- maybe a hook on the manager
- called at the end of new_figure_manager
- worry about slippery slope
- worries about consistency
- pyplot only - can embed yourself if making your own GUI
- styles should be blacklisted
- document not to do rcParams in module code
### compressed axes
- https://github.com/matplotlib/matplotlib/pull/22289
### freetype and image repo
- better freetype needed?
- https://github.com/matplotlib/matplotlib/issues/20842
- if we autogenerate for each freetype someone would have to check
- tests for code verss tests for proper isntallation
- tolerance can be (much) larger for downstream
- note that hardcoded values are bad for this...
- more flexibility would be good.
- how easy to convert to pytest_mpl?
- cartopy did it.
- probably tedious
- need to change decorators
- may need to move files around
- pytestmpl requires matplotlib
- maybe a bootstrap problem
-
-----------------------
# Jan 20 2022
## Agenda
### Old Business
- sponsor page
- @tacaswell budget
- still need to make page
### New Business
### Issues and PRs
- https://github.com/matplotlib/matplotlib/issues/22087
## Notes
### Sponsor page
- still need to work on budget at some
- need to add to brochure site
### Norms from scale
- https://github.com/matplotlib/matplotlib/issues/20752
### grid
- https://github.com/matplotlib/matplotlib/issues/21723
@timhoffm will implement
### improve text cache:
https://github.com/matplotlib/matplotlib/pull/22271
### change savefig.directory?
https://github.com/matplotlib/matplotlib/pull/20790
renaming rcparams is a lot of work because you can not version gate in rcparams files, long deprecation periods
### general issues with rcparams
- terrible name (rename to "config")
- it is a dictionary + key limitation + validation
- do we want to let down-stream extend our config?
- has some import order issues (down-stream needs to import us which will read rcparams which will fail because they have not registered their extensions yet)
- if we let extensions add their own configuraion how do we deal with documentation
- propsal
- say extenion keys must include a special key (e.g. ":")
- on mpl import we read and stash but do not expose / convert / parse
- on third-party import they can access our satshed reading of their prameters
- on third-party import they can register their own keys
-
- .py files?
- pro
- just python!
- can put in logic :tada:
- con
- security concerns
- can put in logic :bomb: tends to come back to bite you
- some circular import risks
- delay reading/parsing until the first time we access
- require explict reading of `~/.matplotlibrc`
- change the file format
- yaml, toml, ...
- discussion if we want to let third-party config into "our" file
- Attempt at summary:
- agree that having a unified way for ultimate down-stream users to configure us and third-party packages
- this aspect of global state is very useful to thread parameters deep into callstacks
- Lots of way to implement this
- Need to write up what the end-end user and third-party docs would look like and get buy in from third-party libraries (e.g. seaborn, matplotlib-scalebar, @timhoffm 's internal project)
### allow external module resolution in coloromap
- let `module:map_name` work which will go consult something in `module` to get the colormap named 'map_name'
------------------------------------
# Jan 13 2022
## Agenda
* scipy CFP https://www.scipy2022.scipy.org/about
* tutorials: Feb 15
* talks & posters: Feb 11
* sponsor page
* website hosting update
* GSOC
### Issues and PRs
- pcolormesh grid line removal causes un-actionable deprecation message: https://github.com/matplotlib/matplotlib/issues/21723
- inset zoom axes https://github.com/matplotlib/matplotlib/pull/22060
- Improve rendering when using multiple/large labels https://github.com/matplotlib/matplotlib/pull/21958
## Notes
### Scipy CFP tutorials
- need to find someone to lead
- maybe @timhoffm
- tutorials may be in-person
- maintainer track? @tacaswell will submit
### sponsors page
- @tacaswell will open PR to goverance docs (today)
- then add to webpage
### Add high-level accounting
- @tacaswell will start with aggregated numbers to steering committe
### GSOC
- Need to do previous GSOC students PRs
- three PRs in queue
- lots of C code that needs careful review
- probably not this year unless we stumble across perfect project and get a mentor
- will need to make a call by mid-to-late Feburary
### Rehosting website
- AWS on https://test.matplotlib.org
- how to do stable re-direct
- or copy? But do not want to do double uploads
- can set up 301s on our re-direct html pages
- with some tooling automatically
- Order $400/month at current rates.
- @tacaswell NF about AWS credits
### warning on grid
- consenus to go with @timhoffm 's suggestion to not warn when axis below.
### speeding up text caching
- had single global cache
- leads to preformance issues when more labels than cache size
- replaced with a per-instance cache
- leads to performance issues when many text objects with the same string
- proposal 1
- 2 layer cache
- proposal 2
- make global cache a lot bigger
---------------------------
# Jan 6 2022
## Agenda
### Old Business
- Sponsor page?
### New Business
- Reducing our doc site size
- pycascades sprint (feb 5/6)
### Issues and PRs
- test tolerances versus compiler flags? https://github.com/matplotlib/matplotlib/pull/22099
- pcolormesh grid line removal causes un-actionable deprecation message: https://github.com/matplotlib/matplotlib/issues/21723
- recheck which modules we can privatize: https://github.com/matplotlib/matplotlib/issues/16181
## Notes
### Sponsor page.
- We need to read the NEP
- https://numpy.org/neps/nep-0046-sponsorship-guidelines.html
- Jody reached out to Ryan Abernathy
- also sees small number of grants/donations is easier to deal with
- has had some good success with mid-sized (10-50k$) contracting to quantcite / quantstack
- not clear that Program Managers an funding agencies understand what we mean my "maintencece"
- virtual facility for software is the pitch
- CSSI at NSF is good target (Cyberinfrastructure for Sustained Scientific Innovation)
- Abernathy got one for Pangeo last cycle
- we are also not quite straight CS research
- training?
- NumFOCUS academy is going this direction
- but this does sound hard
- crowded market
- pharma
- maybe go after their industrial consortiums
- make sure we clairify what we spend money on
- sort out how public we can make our finances
- need to make sure we have a list of mid-sized projects
### issues with docs
- github changes how they build GH pages
- used to be fully behind the scenes, now they use GHA and de-reference symlinks
- our docs are now over the 10G limit and are not deploying
- possible solutions
- split old docs into seperate repos
- will make ~30 repos because each patch releases
- just delete old docs
- other hosting?
- ~~@tacaswell will email GH support to see if we can get exception to limit~~
- consider serving only high-res limits
- proposal 1
- create new GH org matplotlibdocs
- make zillion repos
- proposal 2
- move to our own hosting (DO? AWS?) so we can have real redirects
- does S3 respect htaccess? No, but there is managamenet console to do this
- have contact via Estefania to someone at AWS
- proposal 3
- run a proper server (apache or nginx)
conclusion
- fixing the current situation is not a crises
- add @ey3AIr8wSl2d1PPfOb9K1w and @greglucas to MPL AWS account
- make contact with @estefania's friend
- spend up to $20 playing with S3/cloud front/....
### pycascade sprint
- @ey3AIr8wSl2d1PPfOb9K1w and @tacaswell will try to cover, need to check dates
### test tolerance
- go for upping tolerance on tests
## API privatization
- @Y-wLuq1aShOQmYPoL-pf1g and new contrib are going through and privatizing quite a few API modules that should be private