There are multiple approaches in use, some examples:
tab inside the plugin info, e.g. KaTeX, Menu Bar, Relink
tab in Control Panel > Settings, e.g. CodeMirror, Shiraz
among other core settings in Control Panel > Settings, e.g. Link to Tabs
tab in Control Panel (top level), e.g. Encrypt Tiddlers
tab in Control Panel > Developer’s tab, e.g. Auto Complete
configuration directly though the plugin’s UI, e.g. Command Palette
All of these approaches can be argued for and they make sense in their particular case, when considered on its own. But I think the whole picture is confusing when using many plugins, even the core ones.
Should we have a standard for where plugin configuration should be displayed by default?
I couldn’t find any such thing on tiddlywiki.com, tiddlywiki.com/dev, or on the forum.
I think a reasonable approach would be that every plugin displays its configuration in the default place and additionally in some other place, if that is practical in a particular case (e.g. subplugins’s config together with parent plugin, multiple interacting plugins from one developer together). This would give freedom to place the config wherever the developer thinks is best and at the same time provide users with a predictable place to find the plugin config (or know for sure that it doesn’t have any).
Of course I only mean a recommendation or guideline, I don’t mean it should be in any way enforced or verified though the core.
As to what the default place should be, I’d propose tab inside the plugin info or tab in CP > Settings.
Hi,
You made a very good point here. I think a “Best Practice Guide” should be similar to:
Every plugin should have a “settings” tab, directly in the “Plugins” list.
1.1 Which, optionally can be transcluded into the “readme” tab, if and only if the readme is very short
New or updated plugins should use the relatively new feature to tag your settings tiddler with:
2.1 $:/tags/ControlPanel/SettingsTab, which will
2.2 create a new tab in the ControlPanel → Settings tab, similar to the codemirror edition
Top-level ControlPanel is reserved for the core UI
If possible – plugin settings should have a “Reset Settings to Default” button. or
4.1 the UI should show what has been changed. eg: “Show Changed Settings” or something similar
add 2)
The tag: $:/tags/ControlPanel/SettingsTab has been introduced with TW v5.3.0 as a “Usability Improvement”
For plugin authors with several plugins it may be an advantage if the ControlPanel → Settings tab would be the similar to the $:/plugins/
eg: Tiddlywiki | WikiLabs | <you name it> | …
Code example will follow
I’ll create a HowTo post with a wiki when we had some time to discuss it here and it should be part of the core docs too.
I’m not 100% sure about this one. It may be better if there is 1 tab per plugin. Because if the Settings-tab becomes messy, that is an indication, that there are too many plugins, where probably 80% are not needed because they are not used.
From my experience, new users tend to include every plugin they like. … But plugins should only be used if needed
I would also suggests another posibility for plugins with simple settings. Using a tag list include them in a single tiddler, because in these cases a whole tab may be overkill.
Is there a particular reason for that? I’d think it might because of how integrated with the wiki the plugin it is, or the amount of settings (and also it having its own plugins) or maybe just legacy reasons. But I am curious now!
I’d say it all belongs in one place, no guesswork, settings tab in the plugin. An echo in ControlPanel settings only if the discussion here demands it. And even then, they must be identical (a pure, unadulterated, transclusion thereof).
Amnesty for plugin creators up to and including 5.3.2, beyond which time, TW officially sanctioned/supported/promoted plugins will/must conform to the adopted spec.
Said spec is the consensus derived from this discussion and none other.
This will “bury” the settings deep within the $:/ControlPanel. For example, to access the settings for “SomePlugin”, you would need to:
View $:/ControlPanel
Select top-level “Plugins” tab
In the “Current installed plugins” section of that tab, select the “Plugins (n)” tab (it might not be the default)
Find the desired plugin by it’s registered plugin name
Click the “>>” to view that plugin
Select the “settings” tab for that plugin
To make this significantly easier to access, I suggest that all plugins that have settings should ALSO add a tab to $:/ControlPanel>Settings (using the new $:/tags/ControlPanel/SettingsTab tag added in v5.3.0). This would also provide consistent access to settings for add-ons that are not installed as plugins (e.g, as set of tiddlers imported as a “bundle”)
I agree though I have a conflict of interest – I put all the settings for my plugins in one nested tab at the top of the settings because:
It’s much easier to work with during development
I didn’t even think before that you can put those in the plugin tabs
I don’t like to click so much to find relevant setting, something that I find problematic already in vanilla TW (levels of nesting for Cascades is already enough for me to always groan when I need to look them up)
There is also the issue of space, when you unroll a plugin you still have all the remaining context of the settings around making it harder to work with. Though I guess you can just click on the plugin to open it all up in a separate tiddler, so nvm.
I don’t believe I have any officially recommended plugins at the moment, but:
I’d be sad if I that happened and I’d have to have move the settings to the plugin tabs.
A copy of this as named plugin settings tab, in the control panel if there are a lot of settings or need regular access.
The ability for plugins to publish some simple or high level settings in Control Panel > Settings > Custom tab, in a similar way to the tiddlywiki tab.