Future of UX for settings / configurations
Here's my look on what the endgame for UX should be for LibreWolf to continue our goals of being security / privacy concerned by default and opt-in for anything else, while still keep user-friendliness :)
My perspective is coming from my wide use-cases for browser:
- Privacy concerned casual use
- Web-development, which implies i have to sometimes easy and fast reset some things which are breaking css / js / requests etc
- I still take perspective of more casual users seriously, there are a lot of common themes by users switching from Firefox or whatever else, which are not clear from the go so far
DISCLAIMER: I have never inspected Firefox / LibreWolf source before and don't have a lot of time right now, just have some assumptions about what is probably possible... So don't beat me too hard on technical aspects if they are insane, let's think big together and try to make it happen one day one way or another!
There are plenty of ways we can go which was tried before by other browser, like:
- Extend
about:config
- Create custom welcome screen with possible experience-breaking options like GNU IceCat
I believe it's all good ideas, but both have major flaws, however i got better one!
Here's core plan:
-
We need to create separate page in settings, using existing Firefox front-end infrastructure (looks like custom xml + css or webcomponents which fire up .js execution of settings parameters?)
about:preferences#librewolf
-
This is very important part where we need to decide how exactly to break settings, as first sketch i'd do:
-
General
- Plugins auto-update
- Password save
-
Content:
- WebGL
- DRM
-
CSS
- List of ALL even slightly possible CSS breaking default settings
-
JavaScript
- List of ALL even slightly possible JavaScript breaking default settings
-
General
-
This page consists of two types of components / elements
-
Category component
- Checkbox which is master switch for ALL child entries for category
- Name
- Description EXTREMELY short and on point one, only if it's absolutely necessary (for example General category - you'll get why later)
- Restore defaults (should appear only if defaults were changed to work like indicator)
-
Settings item
- Checkbox
- Name
- Description which should include:
- Description itself, clear and nice human readable
- Perhaps list all config options which would be triggered (but that may be overkill)
By default descriptions should be hidden, there are variants of how we can technically do that:- Collapse aka "More information" arrow from Firefox browser privacy component (Standard / Strict / Custom)
- Learn more (hyperlink to LibreWolf docs with appropriate anchor #id) the only downside is that you won't see description when offline
- Initially i though about just nice and lean ? icon inside circle, when pressing it would open a dialog window, but there are no such premade element in Firefox settings it seems
- Restore defaults (should appear only if defaults were changed to work like indicator)
-
Category component
-
Behavior of Settings item behind the scene, let's for example look at Content -> DRM:
-
When you enable DRM it should effectively enable ALL related settings at once (15 at the moment)
-
There should be alert that it can't be enabled at all until General - Plugins auto updates won't be enabled, alert style is something like Privacy - Custom of Firefox:
-
That is probably most important point, i believe that ALL settings on
about:preferences#librewolf
page for Category and Settings item components should have it's single dedicated entry inabout:config
, like:defaultPref("librewolf.content.enabled", false);
defaultPref("librewolf.content.drm.enabled", false);
So, for example switchingdrm.enabled
would auto-trigger those actual 15 settings at once if enabled via settings oruser.js
So it would be super-easy to change such umbrella privacy / experience breaking setting only in one place, regardless of what LibeWolf and especially Firefox future changes could be!
Also this solves very easy configuration inuser.js
from the actual user perspective.
-
-
I believe that we need to have database of settings in one place, generated from something like JSON (hence i support this initiative) by script while build and populated to all other places:
- Settings is
about:preferences#librewolf
about:config
-
librewolf.cfg
/policies.json
- Website docs
and database entry would be something like:
- category
- action(s) / variable(s) key and value
- description (if any)
- default value
- For website docs: All actual Firefox options that will be triggered / affected / changed
- Settings is
Philosophy
Layout - Bird's eye view
Layout - Full description
Description dialog example (ideal, but hard to do)
Future for tabs containers (forget for current work!)
By now your head maybe exploded already, hold to your chair now...
-
Here's most powerful feature if implemented along with all what had been said before will be game-changer!
Check layout at plan's 2 point, imagine that right after General category and it's items, and between the other Categories there is a Containers tabs dropdown:
-
by default Should have value of Global and write dedicated
librewolf.
settings toprefs.js
and read fromuser.js
if there is one -
Other values of dropdown are mirror of current Container tabs for example Work and would write it's dedicated tab settings to
prefs_work.js
and read fromuser_work.js
if there is one -
As you could guess, if you choose Work in such dropdown - it will show current values of all Categories below, which are effectively overrides on top of dropdown Global settings values for each of your container scenario
-
If user deletes some Container tab
prefs_work.js
anduser_work.js
files should be deleted (well maybe not user, i'd personally probably do that, but maybe it's not nice, whatever we choose)
This is super powerful, just imagine that you want to use extra-powerfull privacy for your browser, but for work you want to have isolated tabs with let's say...Figma, codepen with enabled WebGL or disabled a lot of privacy settings related to css / js to unbreak stuff, so you can actually use Figma without spilling profiling to other tabs!!!
😱 -
P.S. Even if all the stuff before Container tab last step will be implemented - it's already huge step forward!