While I was trying to come up with an easier way to extend setting in present category from a plugin, I came up with an idea, that the settings doesn’t need to be in the database.
My proposal is to keep only name, category and value in database and rest would live in code and would be loaded in memory at application startup.
Keeping all the setting information in database is not actually the best approach. AFAIK only good reason to keep all the information about setting in database is, that it works great with our search. It makes our lives easier while searching, but we have to keep the database info in sync with what we have in code.
This effort is not mandatory to make the settings extendable, but it is a great opportunity to make such change.
I made a draft PR of a change, it is by no means complete, it still needs the search to be fixed, but it is showing the path towards this goal.