Review of the principles we’ve embraced for the current website and apps (not always lived up to!):
Goals need a very short, one-word name — called the goalname — plus an optional phrase-length description. The user must thoughtfully pick both. We do not, for example, let the user type a description and auto-generate a goalname. Not even as a suggestion — the user must thoughtfully and explicitly choose the goalname. Whenever there’s room the goal should be shown as “goalname: Optional phrase-length description” or similar. Some interfaces like SMS will use only the goalname. The description must never ever be shown without the goalname. The API should absolutely not use goalnames as identifiers but should use IDs. Those IDs should not be visible anywhere but the API.
(Side rant: Long goalnames are gross and wrong and make Beeminder worse for newbees who don’t yet know better. They should pick cute one-word names and when they don’t we should be like “no, like this”. That’s better for them in the long run. Paternalism! Opinionated Software!)
Alright, enough philosophy, we have a big ole mess to clean up. Currently we still have, in various forms, all of the following:
One key usability problem to solve is how users confuse themselves changing the title but not the goalname. In the 2016 redesign this was solved rather crudely by just completely deemphasizing everything but the goalname.
What we shall do:
Arguments for keeping the goalname (slug) central, as an explicitly user-chosen field and the ubiquitous goal identifier:
Implentation note: Let’s emulate GitHub’s interface for naming repositories or Slack’s interface for naming channels.
Basically, I have a strong aesthetic preference for Beeminder being very opinionated about slug-like goalnames.
Migration note: Prepend the goal statement (and 2 newlines) to the fine print and then kill the goal statement. (Look at some examples first to sanity check that plan.)
Uservoice complaint (from pre-redesign)
Mainly the above lets us punt on the messy issue of slug renaming, currently a Bee Plus premium feature. Here are some of the reasons we haven’t just let anyone do it:
One compromise is to let you rename slugs exactly once so we can just always store the old slug and properly redirect. Or maybe just give an appropriately scary warning about why it’s bad to change slugs but always let you do it if you confirm you know what you’re doing. (I guess that’s what GitHub does for renaming repos.)