Currently there are five types of plugin, which after much discussion are destined to become “feature” types (i.e. sorts of functionality) that a plugin may offer. Those five plugin/feature types/categories are:
| Name 1 (documentation) | Name 2 (UI) | Name 3 (some code) | Name 4 (folder, plugin index, some code) |
|---|---|---|---|
| Charges / Electrostatics | Charges | charges |
charges |
| Energy / Force Fields | ? | energy |
energy |
| File Formats | File Formats | formats |
formatScripts |
| Input Generators | Input Generators | generators |
inputGenerators |
| Command Scripts | Commands | commands |
commands |
As can be seen, each different type is referred to in different ways in different places, and speaking from experience, this can cause confusion as to which one to use.
Relatedly, in a discussion with @brockdyer03 he opined that the current names are not very clear in indicating what they actually do, particularly commands. Calling them “scripts” is also no longer really valid in the new system, and the grammar/pluralization is also a little inconsistent.
So I’d like to start a discussion as to what (ideally unambiguous) names could be used for each feature type in the new plugin system. There will probably still need to be different names in user-facing situations (documentation, UI) than in code/metadata, but at least reducing the number to one of each and using them universally would be great IMO.
On a similar note, the new system means that it is easy for plugins to offer different feature types, as well as that the way that plugins are invoked is much more consistent between types. As such, it might well be worth considering splitting up some categories. Note that:
energyscripts provide not just the calculation of energies but also gradients – but often only one or the otherchargesscripts provide not just the calculation of charges but also electrostatic potentials – but often only one or the otherformatsscripts provide both read and write operations – but sometimes only one or the othercommandsscripts do a huge variety of different things – in particular @brockdyer03 felt like this covers far too many functionalities with greatly differing effects, interfaces, output formats, and input and configuration requirements
At the moment, the categories correspond primarily to the different systems that they extend/fit into:
energyscripts are used with the force field framework for the Auto Optimize Tool, and are called many times in quick successionchargesscripts are only called to do a single calculation, to provide partial charges or electrostatic potential surfacesformatsadd extra options to the normal file I/O (Import, Export)generatorswork with the input file generation dialogs for immediate preview and feedbackcommandsadd entries to the menus accessible from the top menu bar (whether that’s under File, Build, Extensions or whatever)
The slight odd type out is charges because – and correct me if I’m wrong – the partial charge calculation is accessed via and used for atom labels, while the electrostatic potential calculation is accessed via the Create Surfaces dialog, right?
So though I don’t actually really mind the current situation all that much, I did think it was worth taking this opportunity to reconsider if the categories are set up in the ideal way.
Naturally, it’s important to consider that adding categories requires a fair bit of plumbing to be done on the backend. It’s also worth noting that it’s not imperative that it’s done now, since extra categories can be added at any time later as well. This is the best time to change any existing categories, though, should we want to.
What are people’s thoughts?