Page MenuHomePhabricator

Config Edit "Value" field is confusing
Closed, ResolvedPublic

Description

The Value form field in the config Edit page is actually showing DB value, which is confusing for locked configs / configs that are managed out of DB:

pasted_file (523×786 px, 53 KB)

This is especially confusing when migrating values from DB to some other config option.

Event Timeline

avivey updated the task description. (Show Details)
avivey added a project: Config.
avivey added subscribers: avivey, csilvers.

btw, I think the right fix is to have 'value' be the current value, no matter where it comes from.

But I'd be ok, too, with just some documentation saying 'value' is only the db value. (Though that doesn't seem that useful!)

For locked stuff we should probably just not show the "Value" control for most controls. (I think we show it because it's useful for some config that has special controls, but I'm not sure; could also just be something I missed.)

For not-locked stuff, if we populate global/local/site config values into the control and then you click "Save", we have to either have "Save" sometimes mean "don't actually save" or have it mean "Save, copying the value into the database if the value is not currently in the database", neither of which seem intuitive to me. For example, this sequence of actions seems very confusing:

  • Change local-config.php, reload, see change, but it isn't quite what you wanted.
  • Change local-config.php, reload, see change, but it still isn't quite what you wanted.
  • Open this page to check the docs, figure out what you're doing wrong, don't touch anything, hit "Save".
  • Change local-config.php, reload, your change now has no effect since the previous step had the unstated effect of changing the authoritative configuration source.

What if we just change the text to say "Database Value" instead of "Value"

In T9339#135299, @chad wrote:

What if we just change the text to say "Database Value" instead of "Value"

We already have that in the table below (Which for some reason is labeled "Default").

Maybe move that table up, label it "Current Value", and - if needed - have the DB value control show up below it?

And highlight the first one as "Effective Value" or something.

I think the primary use case for this UI is editing the value (that's what I'm trying to do about 98% of the time I end up here, at least), so it seems weird to bury that control. On some pages, like differential.fields, it would be buried very deeply if we moved it after the table.

Yeah, I think just hiding the "value" section for non-editable controls would have resolved the issue for me. (In that case, I would have assumed the value was set to the first non-empty value in the "default" section.)

(But, and this is a slightly separate issue, it might be nice to have some indication in the 'default' section of which of those values is the current actual value -- maybe just highlight the value, or put a star next to it, or the text 'current working value' or some such. It's not necessary, and I know it will always be the first non-empty value that's marked in that way, but it would remove all ambiguity, especially in cases like the database has the empty string as its value, and a config file has a non-empty string, so the empty string is the default but it may not be clear from the UI.)

(I think I just repeated what avivey said, much more crisply, above.)