I use the amazing Gauge.js for the gauges. It used to be just a plain rectangular bar, but that seemed too boring. (Plus, there’s even an animation that loads the gauge to the correct value!)
Settings:
Progress bar color: color of the progress bar (default green, like in the picture above)
Progress bar background color: bg color of the progress bar (default light-gray like in the picture above)
Modal button icon (defaults to circle-info)
All texts are editable via locales, and it reuses core locales where possible.
Any feedback? Bugs? Improvements? I’d be happy to hear them!
Place the name of each progress item below the graphic rather than above it.
Show the estimated date on which TL3 eligibility will be reached. For many users, the 50-day participation requirement—or the requirement to read a large number of posts on an active forum—will be the limiting factor.
For requirements that can prevent a user from earning TL3, include a clear explanation of how they affect eligibility. Otherwise, a user may satisfy all of the visible requirements only to discover that the eligibility window remains closed because of something such as “Silenced (last 6 months)” applies all because their first post was done using a phone and the spam bot silenced you.
Forums that enable this feature should be warned that it may significantly increase the number of TL3 users.
Because TL3 users have additional permissions, some people may try to game the system to obtain those permissions and then misuse them. Others may even create scripts to automate the process, largely bypassing the principle that trust should be earned through genuine participation.
What initially appears attractive could become a moderation nightmare if forum administrators are not aware of the potential consequences.
Nice work! This is a pretty cool implementation and I like how it looks.
I don’t really like how big and in your face the button is. I would personally probably have added a small icon next to the trust level: member part of the user counts.
Great suggestions all! I’ll examine each one and think about the implementation.
On a separate note, I was thinking of perhaps having an option to show only a very general petcentage instead of a detailed breakdown, to make it less easy to gamify.
This actually brings me back to a point which I made previously:
The user may hit everything, but the only thing holding them back is that they are locked. I guess it would probably be behind a setting, off by default.
It’s a neat idea, I’ve been playing with a similar idea (I love gamification and progressing) but held off mainly because of
This is definitely a true reason not to be too transparent, good point.
That being said, I do like progress being visible, so maybe a midway point could be achieved somehow? Showing how far along a user is, without explicitly saying what needs to be done?
I wonder if you’d consider showing some status already in their profile, instead of hiding everything behind a button?
Maybe something like showing x amount of requirements (each segment) and how many you got?
I’m personally not a huge fan of gauges, they take up so much space and I’d rather show it with something that differentiates better between the ones you already have, and what’s still ongoing, for example:
No, nothing really out of the box. Closest that comes to mind is what we’re using on the redesigned admin dashboard, but they’re bar-style visuals, not a reusable component (and not segmented).
Based on my own experience in one specific situation, a useful part of the process was keeping a human in the loop.
As a general user, I could track everyone’s monthly results. This helped identify users who were consistently active and effective at helping others on the forum.
Because I also had access to the trust-level statistics, I would begin monitoring someone’s progress more frequently once they had reached roughly 90% of several Trust Level 3 requirements. If they appeared likely to qualify for TL3 but were still missing one or more requirements—and had no quantitative information showing what was expected or how close they were—I would send them a private message with an update.
Once a user reached TL-3, the follow-up step was to continue monitoring them. This helped ensure that the additional privileges were not being misused, while also providing an opportunity to explain what those privileges allowed and how they could be used effectively.
For requirements such as “Not suspended in the last six months,” it would be useful to show when the relevant period ends and the requirement will change to a passing status.
Some requirements use a rolling window. For example, “Days visited” is not based on the user’s all-time total; it is calculated over the previous 100 days. A user who visited frequently near the beginning of that window and then stopped for a while may begin visiting every day again without seeing the value increase, because older visited days are simultaneously dropping out of the window. That behavior can be confusing without an explanation.
The statistics should also display the configured thresholds for requirements whose values can be changed. Looking at <site>/admin/config/trust-levels, that now appears to include most of the quantitative requirements.
When one of those configured values changes, affected users should receive some form of notification or explanation. Users actively working toward TL3 and tracking the quantitative requirements will likely ask staff and moderators why their progress changed. Some will maintain their own local scorecards and may notice a threshold change within a day.
Another useful feature would be a staff-editable free-text section describing any site-specific benefits associated with TL3 beyond the permissions granted by Discourse itself. Many sites provide no additional benefits, in which case reaching TL3 may amount mainly to a “been there, done that” achievement. On other sites, however, the additional benefits may make the effort worthwhile.
Also including the number of current TL-3 users and how active they are could be of value.
This is definitely better, but I liked the concept example which had the closest statistic to work to. Helps me personally in why I was originally rooting for the feature (losing TL3 and not knowing why).
i have no use for this plugin myself (only because trust level progress isn’t that important on my forums), but i am enjoying watching you develop it - great job Nate!
I think of it like driving with a map you trust. One day, while following it, you find yourself on a road that does not appear on the map. It may be only one missing road, but you now have reason to question how accurate the rest of the map is.
Similarly, if one of the TL3 requirements changes without your knowledge and you suddenly find that reaching TL3 has become much more difficult, can you still trust that the other displayed values are accurate?
These are the current TL-3 settings I see under <site>/admin/config/trust-levels for a specific site:
For a long time, many of these values could not be changed through site settings. They can now be changed relatively easily.
Because these settings are the source of truth for many TL3 requirements, testing the plugin should include changing one of them and verifying that the plugin’s displayed result changes accordingly.
Think of my earlier reply as a breadcrumb for anyone trying to locate the source of truth for these values: <site>/admin/config/trust-levels. However, viewing that page requires administrator access.
Got it. The plugin puts the stats into an API route at /u/:username/tl3-progress.json, which gets the data from the backend with all the core methods that access those. So they update the stats when core refreshes in the background. Based on my testing, it refreshes the totals immediately.
Just a quick update: I’m working on the next closest stat indicator:
Also consider users who may soon lose TL3. An indicator showing which statistic—or statistics—puts their TL3 status at risk would be useful.
Sorry that I keep sharing these small bits of information piecemeal. Much of this knowledge came from learning through mistakes along the way, so certain details only come to mind when another thought triggers the memory. I hope that makes sense.
Looking at the different types of notifications and how they are created, I’m not sure if it’s possible to send a custom notification to redirect to the user summary page or something similar without submitting a PR to core, or more. Any ideas @chapoi?