Providing visual hints to overridden options in admin


(Sigurður Guðbrandsson) #1

Should Discourse settings admin show visual hints that a specific setting is being overridden?

When configuring Discourse, I’ve had problems in understanding when a setting is overridden by another setting.

As an example, let’s take a look at SSO…

[details=Enabling SSO]


After enabling SSO, there are a lot of settings that have no affect anymore, like enable local login and enable google logins

Which settings have an affect and which are overridden?

Here’s my idea on how to improve this in the UI:
If I click a setting that overrides other settings, disable the settings that are being overridden and add an :information_source: icon next to it.
When the user hovers over the :information_source:, a bubble appears that tells the user:

This setting is being overridden by enable sso

Any thoughts?

(Jeff Atwood) #2

Would take a rather lot of work as it means each setting needs to enumerate all its ‘dependencies’ and the UI has to respect that.

We generally assume admins screwing around with SSO really know what they are doing, here. That’s why virtually every description has WARNING in all caps in it?

(Sigurður Guðbrandsson) #3

Heh, yeah … I imagine that doing this will open up a can of worms…

I still believe laying the foundation for something like this now would make easier to keep the core (and future plugins?) functionality understandable to the end admin.
I base my belief on my assumption that Discourse has more options than just the SSO that do this type of override.

Right now, there are a couple of things that require the admins to really know what they’re doing if they want to do use that functionality.
Which is perfectly legit.

[details=Example 1]


[details=Example 2]

[details=Example 3]


[details=This is actually being done right now in the user preferences side…]


Maybe there is a better way!

Alternatively, options that are “nuclear” or require special knowledge can be hidden or segmented into “advanced” and “wizard” sections.

cjpeg from the MozJPEG project does this perfectly … in the console!
(I have never seen nerd UX done so perfectly before)

cjpeg --help output
usage: /root/src/mozjpeg-3.0/.libs/lt-cjpeg [switches] [inputfile]
Switches (names may be abbreviated):
  -quality N[,...]   Compression quality (0..100; 5-95 is useful range)
  -grayscale     Create monochrome JPEG file
  -rgb           Create RGB JPEG file
  -optimize      Optimize Huffman table (smaller file, but slow compression, enabled by default)
  -progressive   Create progressive JPEG file (enabled by default)
  -baseline      Create baseline JPEG file (disable progressive coding)
  -targa         Input file is Targa format (usually not needed)
  -revert        Revert to standard defaults (instead of mozjpeg defaults)
  -fastcrush     Disable progressive scan optimization
  -dc-scan-opt   DC scan optimization mode
                 - 0 One scan for all components
                 - 1 One scan per component (default)
                 - 2 Optimize between one scan for all components and one scan for 1st component
                     plus one scan for remaining components
  -notrellis     Disable trellis optimization
  -trellis-dc    Enable trellis optimization of DC coefficients (default)
  -notrellis-dc  Disable trellis optimization of DC coefficients
  -tune-psnr     Tune trellis optimization for PSNR
  -tune-hvs-psnr Tune trellis optimization for PSNR-HVS (default)
  -tune-ssim     Tune trellis optimization for SSIM
  -tune-ms-ssim  Tune trellis optimization for MS-SSIM
Switches for advanced users:
  -noovershoot   Disable black-on-white deringing via overshoot
  -arithmetic    Use arithmetic coding
  -dct int       Use integer DCT method (default)
  -dct fast      Use fast integer DCT (less accurate)
  -dct float     Use floating-point DCT method
  -quant-table N Use predefined quantization table N:
                 - 0 JPEG Annex K
                 - 1 Flat
                 - 2 Custom, tuned for MS-SSIM
                 - 3 ImageMagick table by N. Robidoux
                 - 4 Custom, tuned for PSNR-HVS
                 - 5 Table from paper by Klein, Silverstein and Carney
  -restart N     Set restart interval in rows, or in blocks with B
  -smooth N      Smooth dithered input (N=1..100 is strength)
  -maxmemory N   Maximum memory to use (in kbytes)
  -outfile name  Specify name for output file
  -memdst        Compress to memory instead of file (useful for benchmarking)
  -verbose  or  -debug   Emit debug output
  -version       Print version information and exit
Switches for wizards:
  -qtables file  Use quantization tables given in file
  -qslots N[,...]    Set component quantization tables
  -sample HxV[,...]  Set component sampling factors
  -scans file    Create multi-scan JPEG per script file

The upside of segmenting the admin options in these “knowledge groups” is that this requires a lot less work than my previous suggestion.