Task #2638

Badges for the community

Added by Sophie Gautier 10 months ago. Updated 4 days ago.

In Progress
Target version:
Team - Q2/2019
Start date:
Due date:
% Done:


Estimated time:
(Total: 0:00 h)


This task is to follow-up the setting of badges and OpenBadges for the community. Attached is a document explaining what we want to achieve using Fedora badges and OpenBadges technologies.

OpenBadgesForLO.odt (474 KB) OpenBadgesForLO.odt Sophie Gautier, 2018-08-14 13:24
openbadges_test.png (290 KB) openbadges_test.png Mike Saunders, 2018-08-16 16:23
BadgeSystemDesignLibreOffice.ods (24.8 KB) BadgeSystemDesignLibreOffice.ods last version as of 2019-03-20 Sophie Gautier, 2019-03-20 18:03
ask_en.json (583 Bytes) ask_en.json Guilhem Moulin, 2019-06-21 01:38
wiki.json (228 Bytes) wiki.json Guilhem Moulin, 2019-06-21 01:51
git.json (223 Bytes) git.json Guilhem Moulin, 2019-06-21 01:56


Design - Task #2911: Design badgesIn ProgressHeiko Tietze

Related issues

Related to Marketing - Feature #689: BadgesNew


#1 Updated by Mike Saunders 10 months ago

So to get the ball rolling on this, I've followed the steps in the New Issuers Guide - I've tested this on There are three important files for defining a specific badge:

So those three files are static and make us ready to issue badges. To actually issue a badge, we create a .json file for each recipient, like this example which awards a badge to me (Mike). The UID must be unique. The main challenge here is generating these automatically, eg when someone performs a specific task in the LibreOffice project. But the files are quite simple.

With that .json file, we can use to "bake" the data into an image. This generates a PNG file which contains all the useful metadata that we defined before - the recipient, the issuer, and so forth. Badge recipients can then display the badges on their websites/social media, and upload them to a "badge backpack" at to view details about them (see openbadges_test.png, attached to this ticket, as an example).

Next steps

Creating badges is fairly simple - that's good. What we need to do now is:

  • Work out how to create .json files for awarded badges, with unique IDs (eg with a PHP script)
  • Then link that script to our project services (Git/Gerrit, wiki, Pootle etc.) so that badges can be generated automatically
  • Find out if using the Open Badges site is OK (I think so), or it'd be better if we hosted "backpacks" ourselves, like Fedora does

#2 Updated by Florian Effenberger 10 months ago

  • Target version set to Q4/2018

Who's gonna take the lead on this, Sophie or Mike? :)

#3 Updated by Mike Saunders 10 months ago

Florian Effenberger wrote:

Who's gonna take the lead on this, Sophie or Mike? :)

Let's discuss this at LibOCon, and then make some concrete plans going forward. It'd be a good thing to bring up at the Community Meeting on Tuesday, and I personally won't have much time to work in it before then anyway. I'm happy to take on the technical tasks after, of course...

#4 Updated by Sophie Gautier 6 months ago

#5 Updated by Mike Saunders 4 months ago

So, current status:

  • Guilhem has created some JSON queries to get stats from the wiki, so that we can add badges accordingly
  • Sophie is going to define and collect the minimum criteria to open a badge from the different projects and see how we can implement a first set
  • Mike is working with the design community on some shiny badge ideas

#6 Updated by Florian Effenberger 4 months ago

  • Target version changed from Q4/2018 to Q2/2019

#7 Updated by Sophie Gautier 4 months ago

  • File BadgeSystemDesignLibreOffice.ods added

Adding the badge system design in progress here

#8 Updated by Sophie Gautier 3 months ago

  • File deleted (BadgeSystemDesignLibreOffice.ods)

#10 Updated by Florian Effenberger about 2 months ago

Can you give a status update? I guess we're looking into connecting the various services, is that correct? Any ETA? :)

#11 Updated by Sophie Gautier about 2 months ago

Florian Effenberger wrote:

Can you give a status update? I guess we're looking into connecting the various services, is that correct? Any ETA? :)

During the in-person meeting, we will share with Guilhem, Mike and Heiko how to finalize the first steps and have a first set of badges available.

#12 Updated by Mike Saunders 5 days ago

So, we talked about this at the team meeting in Munich:

  • Sophie is coordinating the types of badges (and levels) to award
  • We have badge designs from K-J as a starting point
  • Explained to Guilhem how it works -- he has shown some cool queries to get data
  • Mike will send a badge image and specifications to Guilhem
  • Then Guilhem installs the badge "baking" software on our infra, links it to a query (wiki or Ask), and generates the command to "bake" the badge

Once that works, we can implement it more widely.

#13 Updated by Sophie Gautier 5 days ago

In the meantime, Heiko will open a subtask and work with the design team on the different designs and color codes we could use

#14 Updated by Guilhem Moulin 4 days ago

  • Explained to Guilhem how it works -- he has shown some cool queries to get data

Just for the record (given here as a mere example, of course for a real application we'd need some polishing, use the cursor API, some error checking, etc.), we can get a lot of data from the dashboard's ES engine. Everything here is public and can be run anonymously from any computer.

Askbot En users with ≥50 accepted answers (Just noticed the dashboard doesn't register accepted questions as such for non-en languages. Need to check out why.):

curl -gs -XPOST \
    -H "Content-Type: application/json" \
    -H "kbn-xsrf: reporting" -d@/tmp/ask_en.json \
    "" \
  | jq .aggregations.answer_authors.buckets

Wiki users with ≥250 edits:

curl -gs -XPOST \
    -H "Content-Type: application/json" \
    -H "kbn-xsrf: reporting" -d@/tmp/wiki.json \
    "" \
  | jq .aggregations.answer_authors.buckets

Developers with ≥250 commits:

curl -gs -XPOST \
    -H "Content-Type: application/json" \
    -H "kbn-xsrf: reporting" -d@/tmp/git.json \
    "" \
  | jq .aggregations.answer_authors.buckets

We'd also need to perform LDAP (or SortingHat) sub-queries to match public service account info to unique & private name + email addresses.

Also available in: Atom PDF