Meeting Minute 2021-08-10
===
###### tags: `working-group` `plugin`
:::info
- **Date:** Aug 10, 2021
- **Agenda**
1. WG meeting structure `10min`
2. Proposal for napari plugin manifest schema [#3115]
3. Priorities/next steps
- **Participants:**
- Nathan Clack
- Matthias Bussonnier
- Tally Lambert
:::
## WG
- Cadence 1/wk
- Zulip to schedule somewhat ad hoc
## Manifest schema
- Problem: searching all entry points by default can take time
- If we are tackling slow loading, search entrypoints can be slow.
- do we cache the environment after one search?
- problem: new plugins won't be detected (unless they are installed within napari)
- try the "entrypoints" package from @takluver that might be faster.
- Maybe cache the list of plugin and metadata in napari setting
- Button to force refresh cache
- If we install from within napari we know to update the cache.
- Flush cache every week ?
- Checking cache in a BG thread if invalid -> set flag ?
- manifest pyproject.toml ?
- https://github.com/tlambert03/npe2/blob/main/EXAMPLE/pyproject.toml
- VS code have a activation events,
- Maybe autoactivate commands by default unless set to false.
-
## Next steps
- [ ] figure out schema for existing napari plugin stuff. (like reader plugins, writer plugins, widgets).
- PR to npe2 https://github.com/tlambert03/npe2
- paste json in the discussion at napari
- [ ] get working prototypes of various components (make napari use the new manifest)
- menu addition
- keybindings
- commands
- widgets
- [ ] Figure out a "translation layer" / compatibility layer for getting existing plugins to work with the new manifest
- [ ] Take an existing plugin and refactor it to use the new manifest model... see what's frustrating, etc...
- [ ] figure out where the manifest lives. (can we even point to a non-python file in an entry point??)
i.e. does this even work with `importlib.metadata.entry_points()`
```ini
[options.entry_points]
napari.manifest
plugin = my_manifest.toml
```
(checkout kluyver's entrypoints package?)
- [ ] documentation - we can definitely start writing this before it's implemented. (could start by seeing how VS Code uses https://github.com/microsoft/vscode-docs to generate their docs)
## Notes
<!-- Other important details discussed during the meeting can be entered here. -->
* After the meeting add the minutes to the 'working-group/plugins' folder of [napari/meeting-notes](https://github.com/napari/meeting-notes).
[#3115]: https://github.com/napari/napari/issues/3115