In applications with more than a dozen of configuration settings it is vital that users only see configuration settings which are relevant for them (and not see configuration settings only relevant to advanced users or developers).
I propose that we add following visibility levels:
Does someone know systems that already have such visibility levels?
There is:
Please share your thoughts about this proposal. (e.g. @omnidan @reox @sanssecours @0003088)
I think most applications solves this by using categories or multiple configuration files.
But I like the levels. For example in kodi, there are such settings. You can switch between Normal, Advanced and Expert and get a different set of settings displayed: https://kodi.wiki/view/Settings#Settings_Level
Thank you for your input!
Yes, visibility levels cannot be used if users directly modify configuration files (unless you have some syntax highlighting or auto-completion). They are very useful, however, to generate config files (like debconf does), to show settings with a GUI/web-ui, or also to generate docu+manuals.
Thank you for mentioning Kodi, I added it in the inital post. I think both Kodi's and debconf's visibility levels can be mostly mapped to the proposed levels.
For debconf:
low -> advanced
medium -> user
high -> important
critical -> critical
For Kodi:
Basic -> important
Standard (Default) -> user
Advanced -> advanced
Expert -> developer (the intention is somewhat different, though)
Would it be useful to have an extra level between developer and advanced? Does Kodi really make a difference between "Advanced" and "Expert" level?
I think the settings in expert are related to debug, developer and advanced. But the ordering is somewhat random... Sometimes you are required to set an option from the expert menu in order to have a "user" level experience (for example on old TVs there are some settings you almost always like to set, but they are in expert, iirc)
Yes, it is known that user feedback loops are required to get such levels right in an application. Elektra won't be able to help there.
The name "disabled" is problematic, maybe invisible, hidden, inactive, or derived?
For references:
instead of disabled internal, developer and debug redudant, instead of user "normal", or "default" or nothing?
pythons log levels:
https://docs.python.org/2/library/logging.html#logging-levels
https://docs.python.org/2/howto/logging.html#when-to-use-logging
DEBUG | Detailed information, typically of interest only when diagnosing problems.
-- | --
INFO | Confirmation that things are working as expected.
WARNING | An indication that something unexpected happened, or indicative of some problem in the near future (e.g. ‘disk space low’). The software is still working as expected.
ERROR | Due to a more serious problem, the software has not been able to perform some function.
CRITICAL | A serious error, indicating that the program itself may be unable to continue running.
Thank you, but I think log levels are not quite the same as visibility of configuration settings. Logs are by design not something for end users but configuration settings are for devs, operators, and end users. (Btw. our log levels are in src/include/kdblogger.h)
The new proposed visibility levels are: