Spec: Goal Slugs and Goalnames
Currently it’s super confusing how we have all of the following:
- Goalname (aka slug): the name used in the URL (for technical reasons we don’t normally let you change this)
- Goal title: often the same as goalname but with spaces allowed
- Goal statement: meant to be a one-line statement of the goal
- Fine print: free-form text about the goal
- Y-axis label: another place to describe what’s being measured
- Goal units: concise version of y-axis (gunits : yaxis :: goalname : goal title)
One key usability problem to solve is how users confuse themselves changing the title but not the goalname.
In the 2016 redesign this has been solved rather crudely by just completely deemphasizing everything but the goalname.
What we shall do:
- Keep goalname central
- Keep goal title but call it goal description, still one line (internally: goalblurb)
- Merge goal statement and fine print — we’ll only have the latter
- Keep y-axis label (should this be strictly auto-composed from goal units? how to migrate if so? puntable.)
- Keep goal units
Arguments for keeping the goalname (slug) central, as an explicitly user-chosen field and the ubiquitous goal identifier:
- Nerds care about URLs. For example, if we inferred the slug from the title I wouldn’t be able to have a title of “More Productive Time” and a URL of bmndr.com/bob/work.
- Melanie’s argument: It’s a concise, stable way to refer to the goal (matters for smartphone apps, SMS, API, Slack, email bot subject lines). “I take time to think of exactly what I want the slug to be, where the goal title sometimes changes over time as the goal might shift a little for me, but that nice general slug keeps working for me.”
- Changing slugs is problematic for both technical and akrasia-related reasons, so if the user explicitly chooses a super concise slug they’re less likely to want to change it.
- Space in the dashboard is precious.
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)
Slug Renaming
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:
- It breaks links
- It breaks IFTTT recipes
- The loophole of renaming “weight” to “trash27” and then recreating “weight” as a fresh goal with a $0 pledge every time you derail. I think we’re not too worried about those kinds of shenanigans anymore though.
- Something about a general sense of committing to a goal? I forget all the reasons I’ve been squeamish about willy-nilly slug renaming.
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.)