Fedora Open Badges
With Fedora Badges, contributors to the Fedora project earn virtual badges for their work! The system automatically awards most badges based on Fedmsgs collected by Datanommer. Eventually, regular desktop users will earn badges, too.
- Fedora Badges in production.
- Fedora Badges in staging (the badge aggregator is turned off for staging, so no new badges will be awarded here).
- Fedora Badges rules repo.
- Fedora Badges images exist in PNG and SVG format. If the SVGs are not up-to-date, check mizmo's awesome blog post.
- Oddshocks Flock presentation slides on Fedora Badges.
A considerable amount of literature exists regarding this system:
- This wiki page. We're still working on updating it, but it's pretty good right now.
- The readmes located in the repos of the various parts of the software stack, listed below under "Submitting Code".
- The brand-new RTFD pages don't have much yet, but we're working on it!
- The Fedmsg RTFD, on the other hand, has a wealth of information on that piece of the stack.
Want to know more about what we're doing here? You can join the (pretty quiet) mailing list.
Submitting Badge Ideas
You can submit and discuss ideas for potential badges on the trac instance. In order for a badge to be accepted, it must be fully-defined via a YAML file and have associated artwork. A badge is accepted when it receives 3 +1s from members of the badges-admin group.
Community badges may be defined by a simple paragraph explaining what the badge is and what it is for. No YAML file is needed for these badges, but art still is.
In the future, we hope to have a fully-featured web application where users can vote on badges and submit them via web form.
You can also contribute code to any part of the Badges stack:
Types of Badges
There are two major types of badges:
- Badges which are automatically awarded by the system.
- Badges which are awarded by users via an invitation (link and/or QR code).
Badge borders are also colour-coded even more specifically, as detailed in mizmo's awesome blog post.
Really Making Badges
Making a badge requires the following:
- A name.
- A description.
- An image which matches the criteria outlined in mizmo's awesome blog post.
- An HTTP link to any old page describing criteria for the badge.
- A YAML description of the criteria for our fedmsg rules engine.
These badges get exported to Mozilla's Open Badges Infrastructure (OBI). See their frontpage for a general introduction and the README for a more technical introduction. This is good -- it means we don't lock in users' badges just to Fedora where their friends' friends will never see them.
Epoch One badge awarding is driven by the fedmsg bus. For instance, when a user comments on a bodhi update, bodhi emits a fedmsg message. A daemon sitting in our infrastructure catches that message, checks a database to see if that user has ever comment on an update before. If not, then a badge awarded to them for commenting on their first update. Badge awarding means creating an entry in a second database that User X has Badge Y.
That process of checking the fedmsg database is handled by a rules engine. Rules for badges are defined in a YAML format described above.
Mozilla's OBI requires that the user authenticate with them over Persona. We do not yet have a way to push badges automatically from our DB to the OBI. A stand-in workaround is to host a webapp that request Persona authn from the Fedora user and then exports our badges to OBI over their json API. This actually works.. even if its a clumsy extra step.
Epoch Two badge awarding will be driven by user activity on their Fedora machine. When they run yum update for the first time, or open the gnome-tweak-tool for the first time, a daemon on their machine will make submissions to our infrastructure.. awarding them badges. Epoch Two is not yet well thought out.
Opting Out of Badges
By default, all FAS accounts are be included in the system.
By logging in to Tahrir, the user can deactivate their account and not earn any more badges. Their details will not be displayed anywhere on the application. This will apply until they log back in and use the same button to reactivate their account.
In the future, we may implement more fine-grained control over which parts of Badges you'd like to opt-out of.
Before Fedora Badges became a reality, we had a list here of various ideas for badges. For archival purposes (and perhaps future use), here are the ideas that have yet to be implemented in some manner:
+ First Submit your first package review + Reviewer Complete your first package review of another individual + SCM Push to the Fedora Package Repository + Top packager If you have more than X (20? 30?) packages approved + Reviewer If you did more than X (10?) reviews + Bottom-poster (doesn't top-post on email lists). + Not a jerk (awarded by steering committee for handling situations well) + Generalissimo Member of the Fedora Board, FPC or FESCo + Commander in Chief Fedora Project Leader + Bug tracker if you participated in more than X (20? 30?) bugs that have been closed RAWHIDE, CURRENTRELEASE, or NEXTRELEASE + Alpha tester if you reported X (1? 5? 10?) bugs against an alpha release + Beta tester if you reported X (1? 5? 10?) bugs against a beta release + Living on the edge Reported a bug against a Rawhide critpath package + Communicator Submitted a translation to a Fedora package + Polyglot Submitted two or more languages to a single Fedora package + Met $USER in person Anyone can award this to anyone else. + Made $USER's day Anyone can award this to anyone else. + Signed $USER's GPG key Anyone can award this to anyone else. + Crème de la FEM Awardable only by the Fedora Engineering Manager. + Fedora ♡ PyCon 2014 Awardable by people running the Fedora booth at PyCon 2014.