qpixel icon indicating copy to clipboard operation
qpixel copied to clipboard

Badges/Achievements for rewarding helping the community

Open Taeir opened this issue 3 years ago • 5 comments

Badges/Achievements could be implemented as an incentive/reward for people to contribute to the community. There has been a lot of research which shows that introducing these goals can get people feel more accomplished, satisfied or encouraged to participate. We may be able to use this for good and reward people for contributing in this way.

Badges/Achievements would give a way to show the communities appreciation for new members joining and helping out, and appreciation for older members for how much they are doing. We could think about multiple levels (bronze, silver, gold) and set these at different points. StackOverflow implements a similar system:

image

Badges/Achievements could be shown only privately to the user, or could also be used as a way to show off on your profile. There may be multiple reasons for choosing either solution (too much power gives incentives for misuse).

Some considerations:

  • We don't want to become too addictive. We mainly want to entice people to check it out and hope that they stay for the community as the effect and impact of the achievements wears off.
  • Does the idea fit with what Codidact has in mind for their communities?

Taeir avatar Dec 19 '22 10:12 Taeir

There's also the GitHub approach, where the "top level thing" is the badge with its icon, and when you drill down you find that some have bronze/silver/gold levels. I wonder which works better, "pull shark (drill: silver)" or "12 silver badges (drill to see which)".

Badges came up on Meta a couple times in the distant past -- old enough that we shouldn't feel constrained, but worth a review: 1, 2. (Of note on the second: we got no takers when we asked for help with art, back in 2021.)

A badge system of some sort seems interesting. Ideally badges, like some other things in qpixel, would be definable on-site in some way, rather than being baked into the code, for easier extension, customization, and selective enabling/disabling by a community. We should probably also allow a user to opt out (don't show these on my profile).

What should be marked with badges? The most common request I've seen is topic expertise (and for bonus points, showing that status somehow on relevant answers). So, for example, if your "post score" for the Rails tag reaches a threshold, some indicator would be shown on your answers to Rails questions (but not on your answers to Python questions). Previous discussions never got very specific; I'm throwing out this vague idea so we can think about what that might reasonably look like.

Does the research you've seen lead to any conclusions about what kinds of badges and badge systems work best? I'm thinking about number of badges, difficulty, kinds of things being rewarded... many of us have seen badges in action on other sites, but I don't have good insights into what works well and what doesn't beyond personal experience.

So I guess to address your final question: I think this idea fits in with Codidact, with tons of vague hand-waving around details.

cellio avatar Dec 19 '22 23:12 cellio

A possible idea would be to make badges as part of the site settings, enabled per community. For instance, we could have a table of available badges, which can be updated from the site settings. For tracking who received a badge, we can create a table which links to one of the badges and to a user. Some important things to think about is when to calculate progress (for example on every entity created, once every X hours, etc) and what happens when we add/remove badges (if we need to recalculate, is the badge removed from the user's profile, etc)

Users should be able to select which badges should be displayed on their profile (this may include the case where users don't want any badges on their profiles). One way I thought this may work is that by default all badges are hidden. Whenever a user receives badge, they receive a notification. On their profile, each user may be able to select which badges to display (let's say a maximum of three badges) from all of the badges the user earned. How I envisioned is that each badge should display:

  • A short title (let's say max 10-20 characters)
  • A distinctive color
  • The community they received the badge from
  • Maybe also how many times they received it

One more thing I have been thinking about is that users should be able to see a list of available badges to be earned. Some inspiration of how the design could be implemented can be drawn from GitLab, where the left hand side may be the community and the right-hand side the badge title. Instead of the "x", a number could be displayed to show how many times the user received the badge (similar to Stack Overflow) Screenshot 2023-07-10 at 10 23 10

tomighita avatar Jul 10 '23 09:07 tomighita

I like the idea of limiting the scope of display to the profile page (another example: GitHub), letting users choose a small number to show, and defining them per community. We would avoid some complexity if we're not trying to have badges follow users everywhere, like on user cards.

We would need to develop a "language" to express badge criteria, sort of how we developed a "language" to express ability thresholds based on a few factors (posts, edits, flags).

cellio avatar Jul 10 '23 23:07 cellio

We are going to be working out an implementation and visual design for the badges, with more initial details on https://docs.google.com/document/d/1GFgAhDEQdkTcN3ds8KtGxWTy9i4j1UUY5GOnMk6UN38/ (access can be granted to those who request it if you want to chime in).

Taeir avatar Jul 14 '23 11:07 Taeir

Progress update: we have implemented the badge awarding system and a set of initial badges.

Here is a sneak peak of the display of badges: image image

Taeir avatar Nov 11 '23 12:11 Taeir