Thanks to a generous grant from an awesome member of our community we now have the opportunity to hire someone on a contract basis to work on implementing a basic badge system in Discourse.
But first, we have to explain what the project is, and solicit feedback on it. Goals:
- A simple badge system, by that I mean implementable in a reasonable amount of time (6-8 weeks?).
- Something we are comfortable folding into core, and possibly enabling here and a few other willing partners, but will default to off for quite a while.
- Something with a solid base architecture that we can build on later to add more features.
- The contractor will work directly with the Discourse team, the project sponsor -- and you, the community!
So what should a simple, solid V1 badge system look like? The Discourse team discussed it and here's what we came up with:
What is a badge?
- Name
- Image
- Description
- Single/Multiple allowed
- (optional) ruleset for auto-award
I believe the images are very important here, because the value of a badge likes partly in the cool image (sticker, if you will) that you get associated with your account.
Staff should be able to create an unlimited number of manually awarded badges. The automatic badges will probably be hard-coded in V1 because we don't want to implement a complicated rules engine. Perhaps there could be some rough parameters, but that's it..
Where will badges appear?
I think a simple number underneath the username in the left gutter is best. The number indicates the number of badges you've earned. I thought about another glyph like a trophy or star, but I think letting a simple number send the message does it without all the weird emotional baggage of a glyph.
Clicking the number will take you to the badges page on the user's profile. The badge page should show:
- list of badges awarded aka "trophy case"
- when they were awarded
- by who, if manually awarded
- why, if automatically awarded
- how many times they were awarded (if multiples are possible)
How will badges be awarded?
We must support manual award of badges by staff members for any reason, to any user. This is essential.
We should also have a core of 10 badges that are auto-awarded for reasons that support our goal of civilized discourse. In other words, the badges encourage specific behaviors on the forum that help people have better conversations. These 10 should be exemplary, clearly excellent examples of good behaviors.
How will users be notified of the badge award?
Presumably through the notification stream as usual.
What should the 10 initial auto-awarded badges be?
And more importantly what positive community behavior do they encourage?
(name tba) Filled out your user profile completely including an avatar. Why? A community full of avatars and useful profile information makes it easier to see who you're talking to.
(name tba) Read the community guidelines (/faq) completely. Why? The community guidelines are everyone's recipe for civilized discourse.
(name tba) Cast a like. Why? Learning to give your fellow community members a hearty pat on the back -- and avoiding meaningless "+1" and "me too" posts --
(name tba) Quoted a post. Why? Quoting is crucial for flat discussions, learning to select text in another post (or use the quote button in the toolbar) helps keep discussions on topic and readable.
(name tba) Replied as new topic. Why? The best way to keep topics on topic is to learn when to take your discussion to a related topic rather than replying directly.
(name tba) Visited multiple days, read multiple topics. Why? Showing up regularly and reading a bunch of stuff the community is posting is the baseline of meaningful activity on any forum.
(name tba) Read a long topic, every post, all the way to the end. Why? Endurance! And yes @sam we will check that you didn't just mindlessly scroll as fast as you could to get to the end, either. Read Time Matters.
(name tba) Shared a topic that got clicked on. Why? Sharing topics with the outside world (using the share button and the URL that has your username on it) is how we attract new blood to any community.
(name tba) Flagged a topic or post. Why? We put a trashcan on every street corner so the city can stay clean. Everyone has to pitch in.
(name tba) Edited one of your posts. Why? We want people to be unafraid to edit their stuff to make corrections or improvements.
(name tba) Trust level promotion. Why? This is kind of a stealth way of getting education about what trust levels mean in here. You go up a level, you get directed to a page that explains your new "powers" in badge form..
I know, I know, you probably have a dozen badge ideas. But before you post,
We want a limited list of badges in V1 to keep it simple. So the only way your badge is getting on this list is if it's way more awesome than one of the 10 that's already here.
Before proposing anything, PLEASE consider first: what positive community behavior would your badge encourage? If you can't explain that first, don't do it.
Anything else?
I'm sure I've forgotten or neglected to cover a bunch of stuff. Feedback welcome. And remember, we're trying to keep this simple in V1!