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