Badges

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
mgifford's picture

There seem to be a few badge oriented achievement modules in Drupal.

The more commercial one is based on http://www.badgeville.com/

The module is https://drupal.org/project/badgeville_gamification

Mozilla's OpenBadges is also interesting http://beta.openbadges.org/backpack/login

And there are 2 modules to address those:
https://drupal.org/project/amobb
https://drupal.org/project/achievements

Also, there are comparisons & discussions about this.
https://groups.drupal.org/mozilla-open-badges-learning
https://groups.drupal.org/node/248868

There is also this User Badges module which can be assigned by role or by an adminstrator:
https://drupal.org/project/user_badges

Would be useful to know who is implementing these and what the results have been from any of these approaches.

I think it could potentially be useful for drupal.org, but more interested in how they are working "in the wild" and what can be learned about using them.

Comments

After discussions with morbusiff on twitter

mgifford's picture

Worth noting tvn's work exploring what could be done with d.o:
https://groups.drupal.org/node/144594

tvn's draft of the reputation system here:
https://groups.drupal.org/node/209448

her discussions of other reputation systems:
https://groups.drupal.org/node/209063

Looks like there was a DrupalCon talk - Drupal.org: reputation system -
but I can't find the link.

Brainstormign session on adoption on d.o:
https://groups.drupal.org/node/312833

Proposal on d.o:
https://drupal.org/node/1540104

Discussion on ideascale
http://drupal-association.ideascale.com/a/dtd/Add-a-reputation-badges-sy...

on stack exchange:
http://drupal-association.ideascale.com/a/dtd/Add-a-reputation-badges-sy...

also note a book from O'Reilly Media:
http://buildingreputation.com/doku.php

AMOBB

Royce Kimmons's picture

As I see it, the two major struggles with gamification in Drupal are:
1) The amount of work necessary to create a single meaningful badge (e.g., logic in the code, compelling badge names and images);
2) Connecting these badges to something outside of the single site to give the badge contextual meaning/value (e.g., connecting sites together).

I started the AMOBB module as a proof of concept and heavily relied on previous work that had been done by morbusiff on the Achievements module (which helped to reduce struggle [1]). The goal of AMOBB was to connect the Achievements module in with Mozilla's larger badge framework (thereby attempting to address struggle [2]).

I think that the two primary struggles remain the same, and though both of these modules take first steps at addressing them, they're still first steps.

Meaningful names/images

mgifford's picture

Thanks Royce..

There is a great example in Symfony..
https://connect.sensiolabs.com/profile/cordoval
http://awards.symfony.com/

Badges can be for
- length of time contributing
- time since first patch in core/module/theme
- experience with D7 or D8
- expereince with twig or symfony
- simpletests or behat
- events attended
- 10+ pages of documentation started
- RTBC's commited
- 250th comment
- Modules maintained
- Most code committed that week

We can start with whatever's easy I figure. Some stuff is going to be easy to pull out of the DB...

I do wonder if we could get some visual inspiration from http://thenounproject.com/

From the standpoint of

Morbus Iff's picture

From the standpoint of achievements (in my parlance, a "badge" is just the visual representation [the image] of an achievement", but my parlance is sourced from games, not gamification), it's easy as pie to start coding those things up. But that doesn't necessarily mean much - one of the grandest concerns of earlier discussions was how to reward people who do not make meaningful contributions to a database - the marketers, for example.

Rewarding those who aren't in the DB

mgifford's picture

Well, there just aren't enough marketers, but ultimately it comes down to weighting. Tweets for #Drupal could be measured as could other social media. Ideally you'd have press releases go up on the site like:
https://drupal.org/press

And have more than 4 done since D6 was released.... Ultimately though, if we can't motivate 100% of the community using these tools, it doesn't mean that we shouldn't try to leverage these tools to reward the majority of people who are currently participating.

Also, I just ran into this leaderboard idea with badges.
http://drupal-association.ideascale.com/a/leaderboard

Badge Designer, Comparisons & More

mgifford's picture

Interesting discussion about comparable tools here:
https://groups.drupal.org/node/248868

Also, this Google forum seems good.

It's mainly a case of agreement...

rachel_norfolk's picture

Use of modules like achievements and amobb do seem pretty effective in creating the technical infrastructure for badges; I'm implementing them on a site right now.

Morbus is quite right that it is the good planning of what constitutes an achievement (and, therefore, a badge) that needs the thought.

Not all badges in the Drupal "ecosystem" can, or even should, be issued by drupal.org. Good achievement that contributes to Drupal happens outside in places like training companies and apprenticeship schemes.

If we are able to agree a set guidelines for what drupal badges shoul be awarded for then we can both issue badges on the d.o website for things measurable there but also act as a badge displayer and badge backpack for all drupal-related badges from the rest of the community.

Oh - and what I REALLY like is the idea of being able to order physical badges to stick on my laptop, but ONLY if I've already added the electronic badge to my d.o backpack...

get the right people in a room...

rachel_norfolk's picture

If we could find out how to simply empower a small group of people to just get on with this, I don't think it's hard to do. Just get them in a room...

Agreed...

mgifford's picture

If we could get political approval for this idea, we could delegate it's implementation to a team who could roll it out pretty quickly.

I'd be interested in feedback on some of the topics raised in this issue https://drupal.org/node/2203401

Drupal and Gamification question...

mlau's picture

I work for a gamification company and these are all good issues raised. Exploring the Drupal community, I noticed that gamification is present in the community in two ways: gamification of Drupal sites through modules and gamification of Drupal.org/Drupal core itself to increase support and patch submissions. I strongly agree with the struggles you’ve all identified, especially the difficulty in creating a module that includes all the components that make a well-rounded gamification implementation.

After looking around, I’ve noticed that this thread has many of the main players in gamification on the Drupal community, so I thought I’d inquire here. Why the interest in gamification? Have you noticed that Drupal users need better gamification modules or that the community itself could use more engagement? If there’s anything I’ve missed about where gamification currently stands with Drupal, please educate me!

@mlau - My interest has only

Royce Kimmons's picture

@mlau - My interest has only ever been in the gamification of Drupal-based sites, not in gamifying the Drupal community itself. Ideally, what I want is a flexible, easy gamification platform that can be implemented across a host of educational (my industry) settings. My goal for gamification in education would be to increase interaction and to sustain learning over time.

@mlau - To me gamification to

Elijah Lynn's picture

@mlau - To me gamification to the Drupal community does one main thing. Encourages more contributions!

We need more contributors because its user base is growing faster than its developer base.

Hopefully I can get you to

rachel_norfolk's picture

Hopefully I can get you to come along to the DrupalCon Amsterdam core conversation: https://amsterdam2014.drupal.org/session/recognising-achievements-and-co... then, Elijah? :-)

I want to add a field to the

sunnydeveloper's picture

I want to add a field to the user's profile

'Mozilla backpack email'
and then which collection they want to display in a block.

I can only find: https://www.drupal.org/project/mozilla_openbadges_displayer which relies on the user email . I also can't get it to work. Are there any better solutions before I just do a custom module for this?

I thought this would be an easy one to find

Finding working and

John_B's picture

Finding working and up-to-date solutions for issuing Open Badges is not easy. http://badgekit.org offers some infrastructure. The hosted version has been languishing in beta without any recent news. A client asked me to install a self-hosted version, which does not seem ready for full release. Also it is not ideal for Drupal because it is a node.js app, and cannot be run on standard Drupal infrastructure (in our case, Pantheon).

Are you simply looking to

rachel_norfolk's picture

Are you simply looking to create badges and assign them to users? You can do this with the achievements and amobb modules. A bit of patching is required at the moment but it does work.

And, to be honest, all a mozilla badge is is some json and an image. There's nothing to prevent you doing this with some entities, views and so on, if a bit of coding is your thing...

Rachel's right

mathieso's picture

See...

https://wiki.cybercour.se/wiki/making-badge

... for a walkthrough of a badge system created the way Rachel describes. Most of the custom code was to let course authors define badges as sets of exercises, and then award badges to students as they completed exercises.

Kieran


Kieran Mathieson
kieran@dolfinity.com

Thanks for the heads up. That

John_B's picture

Thanks for the heads up. That is useful.

I am thinking of doing a

John_B's picture

I am thinking of doing a proof of concept for Rachel's suggestion of using entities. To save work, it seems sensible to start with User Badges module, where the latest dev version constructs a badge as a fieldable entity. I would welcome any thoughts about the merits of this approach.

mathieso's picture

From User Badges page:

These badges can be assigned individually by the administrator or attached to a role

Seems the word "badge" is being used differently. User Badges badges are like the sheriff's badge in a Western. Awarded by the town to show some status or other. Again from the module page:

They can also be a quick way to identify moderators, administrators, or anyone with a given role.

There's only one sheriff in the town, so only one person can have that badge.

Badges in an Open Badges sense are different. Any number of users can earn the badge. In my use of badges, they are awarded automatically when PHP code confirms that a user has met the criteria.

If you want to do badges in the second sense, use the achievements module. I created a content type called Badge (surprise!) containing the images for a badge, and added some code to integrate it with Achievements.

Kieran


Kieran Mathieson
kieran@dolfinity.com

Thanks. I was thinking that a

John_B's picture

Thanks.

I was thinking that a Badge content node would be unique even for the same Open Badges badge because each bagde's blob of json contains at least the user's unique email address. Am I think wrong about this? Is there a better way of getting the user's email address and any other unique fields, than having each user's instance of each badge as a separate node?

John

Ah, I see the confusion

mathieso's picture

There are two separate business objects:

  • A badge - represents a badge that any user can earn.
  • A badge award - represents the event of awarding a badge to a user.

You were thinking of making a content type for the second one.

That's not how amobb works. The first object type is an achievement from the achievements module. The second object is not represented explicitly. An award is just two pointers: to a badge and a user. Here's JS code from amobb:

var url = Drupal.settings.baseRoot + Drupal.settings.basePath + 'amobb/assertions/' + encodeURIComponent(title) + '/' + Drupal.settings.uid;

title identifies the achievement (the badge). uid is the user being awarded that badge.

The URL calls your site. Your site responds to the call using this code from the .module file.

function amobb_menu() {
  $items['amobb/assertions/%/%'] = array(
    'title' => 'Assertions',
    'page callback' => 'amobb_assertions',
...
function amobb_assertions($achievement_url, $uid) {
  // Load the user from $uid.
  $user = user_load($uid);
...
  $hash = 'sha256$' . hash('sha256', $user->mail . $salt);
...
  $assertion = array(
   'recipient' => $hash,
...
    'badge' => array(
   'version' => '0.5.0',
   'name' => $achievement['title'],
...
   drupal_json_output($assertion);

amobb_assertions() has the badge's title, and the uid of the logged in user (someone being awarded a badge). It grabs the email address of the user and puts it in $hash. That email address is used to identify the user to an OpenBadges server.

$assertion gets sent back to the JS above, which puts it in the variable url. The JS then passes url to the OpenBadges API:

OpenBadges.issue([url]...

So, no separate "badge awarded" business object modeled explicitly.

This might seem messy. That's because it is. It gets messier if your client wants to customize anything. (Hmm, what are the chances of that?)

Kieran


Kieran Mathieson
kieran@dolfinity.com

Thanks again.It gets messier

John_B's picture

Thanks again.

It gets messier if your client wants to customize anything. (Hmm, what are the chances of that?)

Quite high I would think. As more of a full-service and support freelancer than a dev, explaining to clients which bits are easy and which will be very expensive is a big part of my job: another part is trying to anticipate requests clients may think of later.

In this case we do in some sense need to host the record of the badge ourselves, as well as possibly pushing to a Mozilla or other third party badge pack, because there will be a printed machine-readable record of the badge. Probably we need a response from our Drupal site to verify (to our own satisfaction) that the badge has been awarded on our site, in response to a GET request created from a QR code or something of that sort. So the top priority is pushing something to our own database, preferably our main Drupal 7 db (which, AFAIK, does not need to involve the OpenBagdes API). In the Drupal db the badge and the award could still be separate data objects in separate tables.

Oops! I got it wrong

mathieso's picture

Just realized. The achievements module does a table for storing which users got which achievements. Check the achievement_unlocks table.

Sorry, I should have thought it through more.

Kieran


Kieran Mathieson
kieran@dolfinity.com

Just use achievements and

rachel_norfolk's picture

Just use achievements and amobb, then - it does work...

edit - or employ me... ;-)

Gamification

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week