Meeting Minute 2022-04-20
===
###### tags: `working-group` `plugin`
:::info
- **Date:** 2022-04-20
- **Agenda**
- [last week](https://hackmd.io/FJDjQLmlQKWKQI0nOUkLpA)
- [npe2#149](https://github.com/napari/npe2/pull/149) PluginManifest.properties
- [menu ideas w juan](https://hackmd.io/pBiPHwF1SPWHR68h9XwUwQ)
- - [Juan] [npe2#153](https://github.com/napari/npe2/issues/153) event callbacks
- [Andy]: input arguments to plugin functions:
- e.g. a "float_format" argument to a reader, "compression_level", etc
- possible motivation: napari#2288
- as a setting vs as a kwarg
- any objections to adding a non-required kwarg to a built-in?
- [Draga] [napari#4358] weird zarr stuff and npe2 reader handling of directories (iter_readers)
- **Participants:**
:::
<!-- Discussion goes here-->
## Next steps
<!-- Action items go here -->
- [Talley]: contact Curtis Rueden (and Gabriel Selzer) to move forward with adding JVM classpath to plugin schema.
- [Talley]?, [Juan]?, [SomeoneElse]?: drive forward basic menus (maybe without context keys?)
- small set of valid menus uniquely identified by name, and manifest declares this
- some menu items may be commands (not widgets), so may need to use context keys to define if they are enabled? or may be able to just inspect the signature?
- [Andy]: small PR for float_format
- use this as a driver for persisted plugin settings/preferences
- write up snap-to-grid issue
## Notes
<!-- Other important details discussed during the meeting can be entered here. -->
- properties/configuration
- driving issue here is JVM initialization
- if multiple plugins initialize through something like jpype or scyjava
- possible options
- merge this PR: general key/value store that could be used by plugins that need JVM
- pro: configuration is not made for this
- con: loose typing/schema makes this unclear
- con: may not be able to serialize
- con: this doesn't seem to solve the problem - napari would have to look for some specific key
- generic support for initialization of various libraries with stronger typing?
- define a napari-java/jvm plugin that other good plugins depend on
- just inform plugins to depend on scyjava?
- specific manifest entry for JVM classpath
- likely go with specific manifest entry for JVM classpath
- menu ideas
- may need to extend the context keys
- e.g. LayerListContextKeys
- menu is a more challenging usage that might require parametric constraints
- it is possible to reuse npe2 today next to napari (measurement engine, to allow register own measurement functions)?
- no
- writer settings/parameters
- two options
- 1. access global settings/preferences for the plugin
- 2. show a dock widget when there are optional kwargs
- [ ] After the meeting add the minutes to the 'working-group/plugins' folder of [napari/meeting-notes](https://github.com/napari/meeting-notes).
## Links
* [Calendar](https://calendar.google.com/calendar/u/0?cid=Y18zNXI5M2VjNnZ0cDhzbWhtN2R2NXVvdDB2NEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t)
* [HackMD space](https://hackmd.io/team/napari-wg-plugin)
* [Recorded meeting notes](https://github.com/napari/meeting-notes/tree/master/2022/working-groups/plugins)