Difficulty Label Changes
The long-form of this proposal with better formatting and screenshots is here:
https://docs.google.com/document/d/1Vef3Nw-ulHzJdeKUhYSv95PX7FcAcigM7R2z6H5tn8g/edit?usp=sharing
This is a copy-paste and loses formatting:
==========================
Problem
All trips posted have a “Difficulty” rating and a “Leader Rating” value, but trip listings only display the Difficulty rating. Sometimes the difficulty of a trip is indicated by the combination of the difficulty field and the trip template. For example, an Intermediate Snowshoe is posted using an “Intermediate Snowshoe” template and will have a difficulty label to indicate how strenuous the trip is expected to be. Other activities, such as Cross-Country Skiing, indicate the trip difficulty solely through the difficulty label.
There are some major problems with the website’s current approach to difficulty labels.
There is a global list of difficulty labels for all activities
Each place listing can have (and usually does have) a default value for difficulty. This means for places that support multiple kinds of activities, there will be multiple different labels here for each activity.
This field auto-populates with the default for the place. Because it has a default, the trip leader is not required to look at or change this field and in the overwhelming number of cases, does not. This means that the trip will be listed with a bunch of confusing, irrelevant difficulty labels that participants find extremely hard to reason about.
Other times, the default value is “Varies” and that gets carried through. In many many cases, using the default difficulty value is incorrect.
Proposal
I propose some changes that will better set our leaders up for success:
Restrict Difficulty Values: Instead of maintaining a global list of difficulty labels, tie the list of possible difficulty values either to the trip template or the activity type. This way when the trip leader selects the field, they will only be given options relevant to the activity type.
Activity Template
Labels
Day Hike
Easy, Moderate, Strenuous, Very Strenuous
Alpine Scramble
Strenuous 1-5, Technical 1-5
Winter Scramble
Strenuous 1-5, Technical 1-5, Winter Scramble
Cross-Country Ski
G-XC1-4 Groomed, U-XC1-4 Ungroomed
Basic Snowshoe
Easy, Moderate, Strenuous, Very Strenuous
Intermediate Snowshoe
Easy, Moderate, Strenuous, Very Strenuous
Backcountry Ski
M1 Intermediate, M2 Advanced, M2G Advanced Glacier, M3 Expert, M3G Expert Glacier
Bikepacking
Easy, Moderate, Strenuous, Very Strenuous
Basic Rock Climb
Strenuous 1-5, Technical 1-5
Basic Glacier Climb
Strenuous 1-5, Technical 1-5
Sea Kayak
Sea Kayak I-VI
Trail Running
Easy, Moderate, Strenuous, Very Strenuous, Ultra, Advanced Ultra 1, Advanced Ultra 2
Opt 1 - Template: Internally, this would mean that the template object would need a new field called “Difficulty Tags” (or something) that would include all of the possible difficulties. When creating a trip, the “Difficulty” field would work the same as it does today, except that the list of tags you are allowed to add is restricted to the possible difficulties from the activity template, rather than the global list it looks at today.
Opt 2 - Activity Type: The above would require each activity template to have the difficulty field set the same. For example, all three Snowshoe activity templates would require you to go in and set the difficulty values to the same labels for each template. It might be more convenient to leverage the “Activity Type” field to get the list of possible labels. In that way, since all three snowshoe templates are already marked as “Snowshoeing” activity types, you would just need to associate “Snowshoeing” with the relevant tags to get the validation, and you would not need a template-specific list (instead you’d need a table linking activity type to the allowed tags).
On trips, make Difficulty a required field and, in cases where there are multiple potential activities, do not attempt to set any default value. This will force leaders to put something here. An exception here would be when the place listing only has one difficulty rating (for example, a peak is only ever a scramble peak, so the default scramble rating is fine, or a sea kayak trip), but any place where there are a bunch of labels, they should probably be removed as the Difficulty default and moved into the route description, like this example from the website: Pinnacle, Plummer, Denman, Lane & The Castle — The Mountaineers
This also makes sense given that many places have a bunch of routes that you select from the “Alternate Names” dropdown, and the odds that the default difficulty is correct for all of those routes is… low.
An alternative you could consider would be to allow the difficulty field to remain for multi-activity types, but to prune the list when the template is used to erase any labels that don’t match the activity template or activity type.
For example, consider Amabilis Mountain, which has labels for backcountry skiing, cross-country skiing, and snowshoeing.
Difficulty: M1 Intremediate Ski, Strenuous, G-XC 4 Advanced Groomed, U-XC 3 Intermediate Ungroomed
Depending on the template I use to post this, by cross referencing this field allowed value, I will get a different result, because any label that’s not in the allow list for the activity type would be removed.
Snowshoe
Strenuous
Backcountry Ski
M1 Intremediate Ski
Cross-Country Ski
U-XC 3 Intermediate Ungroomed, G-XC 4 Advanced Groomed
While it’s still not perfect–cross-country ski still ends up with two default labels–it’s going to be more accurate overall than what someone would see today, which is just all four labels.
While there is a link to “Activity Overviews” for this field, it would be nice if the template could have a custom link to the activity-specific page. For example, the Alpine Scramble and Winter Scramble templates would link to (Scrambling — The Mountaineers).
Summary
To require the fewest changes for maintainers, my recommendation would be:
Associate the “Activity-Type” label with a list of “Allowed Difficulty” tags and make the dropdown for the “Difficulty” field look at the allowed tags. If there are multiple activity types, then union the list of allowed tags.
Make “Difficulty” a required field (i.e. cannot be blank).
Leave all default values alone. When a trip is posted from a template, validate the default values against the allowed difficulty tags and remove any that aren’t allowed. If the activity type is changed, re-validate and update the Difficulty field (for example, if I change Amabilis from a snowshoe to backcountry ski, the difficulty field should auto-update from Strenuous to M1 Intremediate Ski by virtue of the validation).
Add the activity-specific link to the trip template (this is nice-to-have, but absolute lowest priority).