# September 2020
###### tags: `2020 dev call`
Call co-ordinates: Mondays @ 15:00 Eastern US time (UTC -05:00) https://zoom.us/j/384435716
Previous notes: [2020 Meeting Agenda](https://hackmd.io/zljR-pZrQ0O5J_j4NZ-9yw)
Archive: [matplotlib/ProjectManagement](https://github.com/matplotlib/ProjectManagement)
#### [Needs discussion at some point](https://hackmd.io/uzWviu8zSUChq3XhI2FqPg)
# 28 September 2020
## Agenda:
### Old business:
- [x] Code of Conduct (@jklymak)
- https://github.com/matplotlib/matplotlib/pull/18538 : in draft form comment period announced by @dstansby. Closed 13 Oct
- [x] Security (@QuLogic)
- https://github.com/matplotlib/matplotlib/pull/18537
- [ ] Axes API movement (@tacaswell)
- [x] pcolorfast benchmarks (@anntzer)
### Issues
- [ ] https://github.com/matplotlib/matplotlib/issues/18481 - how old browsers to support?
- [ ] https://github.com/matplotlib/matplotlib/issues/18597 - Line2D and PathPatch have different defaults for capstyle and drawstyle
- Change default or just document?
### PRs
- [ ] https://github.com/matplotlib/matplotlib/pull/17270 Date ticker factory
## Notes:
### Zoom
- designate more hosts...
### Security Policy
- PR in (https://github.com/matplotlib/matplotlib/pull/18537)
- use an external management system?
- start simple - expand if needed...
### Browsers:
- `ResizeObserver` not implemented in FF69 until last year, in Chrome 3-4 y.
- Extended support release:
- do we need to support this?
- not part of packaging system
- how big is it?
- would need to add a shim...
- if self contained, seems reasonable.
- versus documenting incompatibility
- suggest similar amount of time to python support: 3.5 y
### Consistency of defaults `capstyle` and `joinstyle`
https://github.com/matplotlib/matplotlib/issues/18597
- `PathPatch` and `Line2D` incompatible defaults
- `PathPatch` hard coded. Line off rcParam. Add an rcParam?
- arrows seem hard coded
- does it need to be on universal default?
- specific patches need specific
@bruno: open issue on circle patch
### date ticker factory:
- https://github.com/matplotlib/matplotlib/pull/17270
- not particularly used. Entry in whats new 2005
- just deprecate.
### Stair test fixes...
- change data: user must call `relim()`...
- can be useful.
### Collections color logic
- https://github.com/matplotlib/matplotlib/pull/18480
- make more reversible
- clarify
- allow changing the arry to go back to None
- needs review. Doesn't change any tests, and adds a bunch of tests.
### 18573: axes_class
- https://github.com/matplotlib/matplotlib/pull/18573
# 21 September 2020
## Agenda
### Governance
- [x] small dev grant due Oct 19th
- [x] concrete next steps for a MPL flavored CoC
- (from 2016) https://github.com/matplotlib/governance/issues/2
- https://github.com/matplotlib/governance/blob/master/communications_guidelines.md
- https://github.com/matplotlib/matplotlib/pull/18535 was just merged...
- missing reporting & enforcement mechanisms
- [x] https://github.com/matplotlib/matplotlib/security
* matplotlib@numfocus or private email group?
- [x] Meta: are governance things really best discussed on dev call?
### PRs:
- [x] Needs naming decision https://github.com/matplotlib/matplotlib/pull/18356
- subpanel, panel, subfigure
- re-organizes figure, so rebases are challenging
- [x] sync shared axes tick marks
- https://github.com/matplotlib/matplotlib/pull/18529
- https://github.com/matplotlib/matplotlib/issues/8946
- Do we really want this?
- [x] camelCase drives somePeople nuts:
- https://github.com/matplotlib/matplotlib/pull/11051
- is this *really* something we need to change? If not, we should close.
- [x] function-based API:
- seems to have fizzled. https://github.com/matplotlib/matplotlib/pull/14058
## Notes
### Code of conduct
- concern is that it is actionable
- perceived as problematic to have to go through back-channels.
- can be problematic
- do we value it?
- EDI kick? @dstansby
- @jklymak: will move this forward...
- back up ombudsman
- leah at NumFOCUS?
-
- try and have under unmbrella
### Small dev grant
- small dev grant:
- $5k if something useful we should propose...
### security email
- matplotlib@numfocus.org email as well...
### PRs
- `subfigure` is the name....
- shared axis:
- sharing ticks and formatters are supposed to be the same...
- currently should both be shared....
- should just be `set_xlim`? rather than looping...
- pcolorfast,
- should be faster than pcolormesh....
- but how much?
- @anntzer will look at benchmarks and check that new all-numpy version is close to C version...
- Axes api discussion:
- subfigure useful to allow libraries that have control of figures...
- decorator: global state versus non-global
- explicit better than implicit generally
- context manager?
- agreed on call that this is an important project.
- @tacaswell will put some cycles into moving this forward.
```python
if ax is None:
ax=plt.gca();
```
# 14 September 2020
## Agenda
- [x] 3.3.2 update
- [x] Default pcolormesh handling:
- https://github.com/matplotlib/matplotlib/issues/18317, https://github.com/matplotlib/matplotlib/pull/18398, https://github.com/matplotlib/matplotlib/issues/18399
- Should we find grid centers in display space
- Warn if non-monotonic?
- Give kwarg way to get old behaviour or just ask people to drop whichever row/column they want e.g.`Z=Z[:-1, :-1]`
- [x] Imshow round tripping (again)
- https://github.com/matplotlib/matplotlib/pull/18458
- [x] Numfocus mentored sprint
## Notes
### Pcolormesh handling
* panning and zooming in non-cartesian coords
* interpolation should be in data space, creates issues w/ 0-360 wrap
* folks expect that pcolormesh works like imshow, except pcolormesh doesn't - needs to guess edges - creates issues in wrapped coordinate systems (globes!)
* user can pass in boundaries
* projection can provide function for doing wrapping on non-cartesian coords
* this sorta exists as transform
* is periodic boundary problem
* not sure if there's a canonical way of doing
* previously dropped data, would create piecewise linear condition that usually would follow circle
* want lat/lon grid or projection informed nearest neighbor
* two projections
* native projection system for the axes
* specificy alternate projection for plotting
* original report:
* stereopolar stored in lat lon (plattecarrer) that they wanted plotted in polarstereo - interpolation created jumps
* cartopy side solution
* cartopy heuristic is nan for missing 1/2 grid
* they plan to develop algorithm that defaults over pcolormesh
#### to do
* warning: [#18398](https://github.com/matplotlib/matplotlib/pull/18398)
### imshow roundtrip
* value =/= inverse cmap(norm(v))
* switched to interpolation in dataspace
* agg clips hard at 0-1, so mpl internally resamples .25-.75 so rest can be mapped for over/under
* log(100*10^20) doesn't work properly - clip transform eps to 1/20
* problem restatement
* input data < vmax
* via interpolation gets rounded up >vmax
* gets aggressively clipped
* is now nan
#### proposals
* special case log
* clip to be >+0
* 3.4 proposal: add an episilon to vmin/vmax
* close over values (<vmax+epsilon) will get marked as valid
* discrete boundary on the data
* boundarynorm does this fuzzyness
* moves around implementation details
* concern about domain specific boundary values
* current path:
* resample (rescale/unscale - linear [0-1]) -> norm(rescale) -> colormap
* rewrite interpolator
* sort out the current implementation (agg implementation details) - walk through agg templates
* for every point in kernal window, apply kernal to get interpolated point
* still doing floating points, still mapping to integer (color mapping)
* need to preserve input values- shouldn't happen in nearest 'cause interpolater shouldn't be doing math
* resample & norm order are really scale/domain dependent
#### To Do
* special case log
* clip to be >+0
* document resample/interpolation/rescaling path & floating point issues
### mentored sprint
let @story645 know if you want to be involved
# 07 September 2020
## Agenda
* seaborn get a section in our discourse?
* https://discourse.matplotlib.org/t/what-are-3rd-party-packages/20666/2
* pydata sphinx theme
* https://pydata-sphinx-theme.readthedocs.io/en/latest/
* sphinx multiversion
* https://github.com/Holzhaus/sphinx-multiversion
* small dev grant for information architecture?
* intersects w/ GSOD work but not same
*
### PRs and Issues
- [x] TH: Naming the "good" step function. After careful consideration I've come to the conclusion that the best name is one of `stair()` / `stairs()` (https://github.com/matplotlib/matplotlib/pull/18275#issuecomment-687929859). I'd like to get short feedback if singular or plural is better.
## Notes
### naming of "step"
- primary goal to avoid user confusion
- avoid collision with step -> no 'step' in name even though 'step' would be the best plot
- checked what other names were already used in this context (google "<name> plot")
- other names already have different usage
- no one was strongly against
- outstanding question: stair vs stairs
- no one can think of ambigquity with 'stairs'
- consenuss is that "stairs" scans better than "stair" even though most other plot name are singular because in spoken english "stairs" is a weird word.
### seaborn wants a section on discourse
* Sounds good!
* @hannah will set it up
### pydata theme
- should we move to pydata theme?
- maybe, but want to be able customize the colors (our colors are part of our branding)
- this should also let us use the version selector
### logo
- keep the cicle
- change the font
### small development grant for information architecture
- needs a champion who has bandwidth to lead this