Meeting Minute 2021-08-31
===
###### tags: `working-group` `plugin`
:::info
- **Date:** 2021-08-31
- **Agenda**
- Review [last week](https://hackmd.io/e__JaID3SjWjlgEx68dGDQ)
- Talley's npe2 tester and napari integration
- .napari/config.yml
- Install from custom url handler (napari://)
- **Participants:**
- Matthias Bussonnier
- Talley Lambert
- Eric Perlman
- Nathan Clack
:::
#### Meetings notes,
- nathan is looking forward to see the demo of npe2 tester,
- Want to see an automatic generation of manifest.file
- `napari.yml` for the hub merged with the manifest for plugins.
- Talley things that napari.yml is a way to customise display on the hub and has a relatively different purpose.
- Nathan: Venn diagram concern of hub vs plugins, and depending on overlap may want to be used together.
- Talley agree that we shoudl not have two files, and not have a ``.napari` director.
- We need more people that do not like it.
- Let's go to github and see how many plugins have `.napari` directory.
- The customising plugin docs does not list anything about a napari.yaml but mention `.napari/config.yml`
- Talley think there is 0 overlap between manifest.yml and .napari/confg.yml
- There is some overlap with setup.cfg, but that's automatized/synchronized.A
- Eric has some questions on manifest.yml and if keybinding are just for help, or used for other tihngs. Talley explains that npe2 will use manifest.yml for keybindings (but not yet), and that .napari/config is just for hub to customize appearance.
- Nathan reask wether we want to consolidate of separate. For example on the plugin listing we want the same info as the Hub.
- We are all bothered that .napari/config duplicate a things, and authors _have to_ use setup.cfg anyway.
- "command"? "action"?
Nathan : napari:// have a CLI that can parse arguments and use this to trigger some events, and could trigger the install in napari bundle.
Talley: is there and issue on napari ?
Maybe there is, in OSX, you have the plist complicated stuff.
YAGNI: Yet Another Great Napari Installer.
DEMO TIME !!!!
Talley have a demo with two commands that print hello world exported in manifest.yml
VS Code yaml filename with schema, gives feedback. Pydantic can export schema from manifest.yml.
schemastore.json to upload the manifest.yml schema and would automatically lint, autocomplete etc.
Should it be anmes command or action ?
- Comamnd palette or action palette ?
- My take is action takes no paramters, command could ?
Playing with npe2, that would consume the manifest.yml,
try to phase out the previous plugin way.
the core is Schema.py that define PluginManifest pydantic class. Most of the interesting part is in the ContributionPoints class.
- commands, configuratins, keybindings, menus, submenu, themes.
- Configurations -> plugin specific json schema to generate Configuration UI. Similar to VSCode.
the menu items are in `manifest.yml`, there are special menu names on which items can be added. for exampel layer context menu.
It also allow to define submenus.
each item is either a submenu or a command.
Ordering is an open discussion.
- Matthias: maybe add separators.
Nathan ask if we could use path to define where commands are in menus.
Talley: what if we want command in many places.
Everyone agree we want the keybindings in the menus.
Eric: what it is context specific ? or dynamic stuff ?
- Talley: I try to avoid it, but I can use a When clause. Number of laters, is the layer rgb,... for example "Convert to image".
- Eric, is there some associaiton of which plugin created whcih layer.
- Talley: manifest is jut contributions, a plugin coudl add a layer type but that' woudl be beyond the contributions points of manifest.
And that's it for notes, even if the discussion went on for 30 mre mnutes.
:::
<!-- Discussion goes here-->
## Next steps
<!-- Action items go here -->
## Notes
<!-- Other important details discussed during the meeting can be entered here. -->
- [x] 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/2021/working-groups/plugins)