From Fedora Project Wiki

(Major updates and alterations, because this page has not been touched since the start of the summer)
Line 1: Line 1:
 
= Fedora Open Badges =
 
= Fedora Open Badges =
  
The general idea is that as you do things as a Fedora Contributor and (eventually) as a
+
With [https://badges.fedoraproject.org/ Fedora Badges], contributors to the Fedora project earn virtual badges for their
Fedora User, we'll automatically issue you badges saying "So and so filed their
+
work! The system automatically awards most badges based on [http://fedmsg.readthedocs.org/en/latest/ Fedmsgs] collected by
first bug in Bugzilla" or "So and so closed 10 bugs in one week!".
+
[https://github.com/fedora-infra/datanommer Datanommer]. Eventually, regular desktop users will earn badges, too.
  
== Interested Persons ==
+
== Documentation ==
  
* [[User:Ralph| Ralph Bean]]
+
A considerable amount of literature exists regarding this system:
* [[User: timjcasey| Tim Casey]]
 
* [[User:oddshocks| David Gay]]
 
* [[User:jenneh| Jenn Kotler]]
 
* [[User:duffy | Máirín Duffy]]
 
  
If you think you want to know more about what we're trying to do here, you should probably jump on the [http://lists.fedoraproject.org/mailman/listinfo/badges mailing list] and add yourself to the above list.
+
* 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 [http://tahrir.readthedocs.org/en/latest/ brand-new RTFD pages] don't have much yet, but we're working on it!
 +
** The [http://fedmsg.readthedocs.org/en/latest/ Fedmsg RTFD], on the other hand, has a wealth of information on that piece of the stack.
  
== Two Types of badges ==
+
== Getting Involved ==
  
There will be two major types of badges.  They are distinguished by what
+
Want to know more about what we're doing here? You can join the (pretty quiet)
authority can award them: Distro badges and Community badges.
+
[http://lists.fedoraproject.org/mailman/listinfo/badges mailing list].
  
=== Distro Badges ===
+
=== Submitting Badge Ideas ===
  
These are awarded by the "Fedora Project". They are to be automatically
+
You can submit and discuss ideas for potential badges on
awarded by a rules engine that responds to events on the fedmsg bus.
+
[https://fedorahosted.org/fedora-badges/ 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.
  
Here are some preliminary ideas for Distro badges:
+
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,
<pre>
+
but art still is.
+ Involvement          Created a FAS account
 
+ First                Submit your first package review
 
+ Reviewer              Complete your first package review of another individual
 
+ Push'd                Push your first update using bodhi
 
+ If you build it...    Complete your first successfull build with koji
 
+ SCM                  Push to the Fedora Package Repository
 
+ Proven                Provenpackager group
 
+ Sponsor              Packager sponsor group
 
+ 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)
 
+ Secretary General    (awarded when zodbot notes you as a chair in an IRC meeting)
 
+ 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
 
 
</pre>
 
 
 
=== Community Badges ===
 
 
 
The other kind of badge will be manually awarded by users in the community.
 
For example:
 
 
 
<pre>
 
+ 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.
 
+ The FPL's Blessing        Awardable only by the Fedora Project Leader.
 
 
 
+ FUDCon 2012: ¡Presente!  Awardable by event organizers
 
 
 
+ Fedora ♡ PyCon 2014      Awardable by people running the Fedora booth at PyCon 2014.
 
</pre>
 
  
For community badges to be awarded, we need a system that allows the awarder to
+
In the future, we hope to have a fully-featured web application
generate a URL and/or QRCode that the awardee can visit to accept.
+
where users can vote on badges and submit them via web form.
  
== Badge Submission Process ==
+
=== Submitting Code ===
  
There are three phases to this, each more complex than the last.
+
You can also contribute code to any part of the Badges stack:
  
=== Badge Submission Phase 1 - A mailing list ===
+
* [https://github.com/fedora-infra/fedmsg Fedmsg]
 +
* [https://github.com/fedora-infra/datanommer Datanommer]
 +
* [https://github.com/fedora-infra/fedbadges Fedbadges]
 +
* [https://github.com/fedora-infra/tahrir-api Tahrir-API]
 +
* [https://github.com/fedora-infra/tahrir Tahrir]
  
We need to create badge-ideas@lists.fedoraproject.org.  If you have an idea
+
== Types of Badges ==
for a badge, fully write it up and email it to that list.  For a badge to be
 
accepted it needs to be fully defined and have artwork already associated with
 
it.  Acceptance is granted when it receives 3 +1s from members of the
 
'badges-admin' group.
 
  
Community badges may be defined by a simple paragraph explaining what the
+
There are two major types of badges:
badge is and what it is for.
 
  
Distro badges must be accompanied by a YAML file as defined below in the
+
* Badges which are automatically awarded by the system.
Really Making Badges section.
+
* Badges which are awarded by users via an invitation (link and/or QR code).
  
Both types of badges must be accompanied by artwork in order to be accepted.
+
Badge borders are also colour-coded even more specifically,
 
+
as detailed in [http://blog.linuxgrrl.com/2013/07/23/fedora-badgers/ mizmo's awesome blog post].
=== Badge Submission Phase 2 - A web form ===
 
 
 
Only slightly more convenient than a mailing list, this web form just emails
 
our original mailing list and the same rules of acceptance apply as before.
 
 
 
The purpose of the webform is to make the generating of the Distro badge YAML
 
file as simple as possible.
 
 
 
=== Badge Submission Phase 3 - Opening up the curation process ===
 
 
 
We build a much more full-featured web application that allows the community
 
to upvote and downvote different badge ideas.  Something kind of like
 
http://lego.cuusoo.com
 
  
 
== Really Making Badges ==
 
== Really Making Badges ==
Line 115: Line 58:
 
Making a badge requires the following:
 
Making a badge requires the following:
  
* Metadata
+
* Metadata.
** An image (with certain properties, TBD).
+
** A name.
** A name
+
** A description.
** A description
+
** An image which matches the criteria outlined in [http://blog.linuxgrrl.com/2013/07/23/fedora-badgers/ mizmo's awesome blog post].
** An http link to any old page describing criteria for the badge.
+
** An HTTP link to any old page describing criteria for the badge.
 
* A YAML description of the criteria for our fedmsg rules engine.
 
* A YAML description of the criteria for our fedmsg rules engine.
** For example, https://gist.github.com/ralphbean/5443891#file-bodhi-update-simple-yaml
+
** For examples, check out [http://infrastructure.fedoraproject.org/infra/badges/rules/ our rules repo].
 +
** The [https://badges.fedoraproject.org/builder Fedora Badges badge builder] can help you write YAML files, but it is incomplete, and so can't really help you much with the trigger and criteria parts of the file.
  
== Infrastructure (the plan) ==
+
== Infrastructure ==
  
These will get exported to Mozilla's Open Badges Infrastructure (OBI).  See
+
These badges get exported to Mozilla's Open Badges Infrastructure (OBI).  See
 
their [http://openbadges.org/ frontpage] for a general introduction and
 
their [http://openbadges.org/ frontpage] for a general introduction and
 
[https://github.com/mozilla/openbadges#mozilla-open-badges the README] for a
 
[https://github.com/mozilla/openbadges#mozilla-open-badges the README] for a
Line 131: Line 75:
 
badges just to Fedora where their friends' friends will never see them.
 
badges just to Fedora where their friends' friends will never see them.
  
Epoch One badge awarding will be driven by the fedmsg bus.  For instance, when a
+
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
 
user comments on a bodhi update, bodhi emits a fedmsg message.  A daemon sitting
 
in our infrastructure catches that message, checks a database[1] to see if that
 
in our infrastructure catches that message, checks a database[1] to see if that
Line 138: Line 82:
 
a second database that User X has Badge Y.
 
a second database that User X has Badge Y.
  
That process of checking the fedmsg database[1] will be handled by a rules
+
That process of checking the fedmsg database[1] is handled by a rules
engine.  Rules for badges will be defined in a YAML format described above.
+
engine.  Rules for badges are defined in a YAML format described above.
  
 
Mozilla's OBI requires that the user authenticate with them over
 
Mozilla's OBI requires that the user authenticate with them over
 
[http://www.mozilla.org/en-US/persona/ Persona].  We do not yet have a way to
 
[http://www.mozilla.org/en-US/persona/ Persona].  We do not yet have a way to
push badges automatically from our DB to the OBI. A stand-in workaround is 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
 
host a webapp that request Persona authn from the Fedora user and then exports
our badges to OBI over their json API.  This (while not deployed in our
+
our badges to OBI over their json API.  This actually works.. even if its a clumsy extra step.
infrastructure) actually works.. even if its a clumsy extra step.
 
  
 
Epoch Two badge awarding will be driven by user activity on their Fedora
 
Epoch Two badge awarding will be driven by user activity on their Fedora
Line 154: Line 97:
 
well thought out.
 
well thought out.
  
== Mock Ups ==
+
== Opting Out of Badges ==
Here is one of the first passes at the website layout:
 
* [http://jlk9713.cias.rit.edu/Fedora%20Badge%20Mockups/fedoraBadgeSiteMockup.pdf]
 
  
 +
By default, all FAS accounts are be included in the system.
  
== I don't want to have anything to do with this ==
+
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.
  
By default, all FAS accounts will be included in the system.
+
In the future, we may implement more fine-grained control over
 +
which parts of Badges you'd like to opt-out of.
  
By logging in, to Tahrir, the user should be able to do any of the following:
+
== Old Ideas ==
  
* Toggle a flag and receive no further badges.
+
Before Fedora Badges became a reality, we had a list here of various ideas for badges.
* Toggle a flag and still receive badges, but no notifications.
+
For archival purposes (and perhaps future use), here are the ideas that have yet
* Toggle a flag and hide their account and all its badges from being viewed by anyone.
+
to be implemented in some manner:
  
Users should also be able to hide a single or a subset of badges from being
+
<pre>
viewed by anyone.
+
+ 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
  
=== Timeline ===
+
+ 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
  
* Spruce up the Tahrir app.
+
+ Bug tracker          if you participated in more than X (20? 30?) bugs that have
* Deploy the Tahrir app.
+
                        been closed RAWHIDE, CURRENTRELEASE, or NEXTRELEASE
* Begin awarding badges via the fedmsg bus.
+
+ Alpha tester          if you reported X (1? 5? 10?) bugs against an alpha release
* Create a process for contributors to submit and vet new badge ideas and details.
+
+ Beta tester          if you reported X (1? 5? 10?) bugs against a beta release
* Write and make available a system for awarding badges from the desktop
+
+ 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.
 +
</pre>
  
 
== Resources ==
 
== Resources ==
  
* [https://github.com/oddshocks/badges Oddshock's badges notes for fedmsg internship]
+
* [https://github.com/oddshocks/badges Oddshocks badges notes for his fedbadges internship].
* [https://fedoraproject.org/wiki/Fedora_RPG_OLD old Fedora RPG sketches and mockups]
+
* [https://fedoraproject.org/wiki/Fedora_RPG_OLD Old Fedora RPG sketches and mockups].
* [https://fedoraproject.org/wiki/Badges old badges list]
+
* [https://fedoraproject.org/wiki/Badges Old badges list].

Revision as of 22:48, 10 August 2013

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.

Documentation

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.

Getting Involved

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.

Submitting Code

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:

  • Metadata.
    • 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.
    • For examples, check out our rules repo.
    • The Fedora Badges badge builder can help you write YAML files, but it is incomplete, and so can't really help you much with the trigger and criteria parts of the file.

Infrastructure

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[1] 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[1] 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.

Old Ideas

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.

Resources