From Fedora Project Wiki

 
(31 intermediate revisions by 5 users not shown)
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]. After years of work, and many contributions from developers and artists, we have almost 400 badges implemented on [https://badges.fedoraproject.org/ Fedora Badges].


== Interested Persons ==
* [https://badges.fedoraproject.org/ Fedora Badges in production].
* [https://badges.stg.fedoraproject.org/ Fedora Badges in staging] (the badge aggregator is turned off for staging, so no new badges will be awarded here).
* [http://infrastructure.fedoraproject.org/infra/badges/rules/ Fedora Badges rules repo].
* Fedora Badges images files exist in each individual issue on [https://pagure.io/Fedora-Badges Pagure] and in [http://infrastructure.fedoraproject.org/infra/badges/pngs/ PNG] and [http://infrastructure.fedoraproject.org/infra/badges/svgs/ SVG] format.
* [https://github.com/oddshocks/presentations/tree/master/fedora_badges/build Oddshocks Flock presentation slides on Fedora Badges] (download and open index.html in your web browser)


* [[User:Ralph| Ralph Bean]]
== Documentation ==
* [[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.
A considerable amount of literature exists regarding this system:


== Two Types of badges ==
* 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.
* Blog posts by [http://blog.linuxgrrl.com/2013/07/23/fedora-badgers/ mizmo].
* Blog posts by [https://riecatnor.wordpress.com/ riecatnor].
* Blog posts by [https://mashaleonova.wordpress.com/author/mleonova/ mleonova].


There will be two major types of badges.  They are distinguished by what
== Getting Involved ==
authority can award them:  Distro badges and Community badges.


=== Distro Badges ===
Want to know more about what we're doing here? You can join the
[http://lists.fedoraproject.org/mailman/listinfo/badges mailing list].


These are awarded by the "Fedora Project".  They are to be automatically
=== Submitting Badge Ideas ===
awarded by a rules engine that responds to events on the fedmsg bus.


Here are some preliminary ideas for Distro badges:
You can submit and discuss ideas for potential badges on
[https://pagure.io/Fedora-Badges the Pagure page].
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.


<pre>
Community badges may be defined by a simple paragraph explaining what the
+ Involvement          Created a FAS account
badge is and what it is for. No YAML file is needed for these badges,
+ First                Submit your first package review
but art still is.
+ Reviewer              Complete your first package review of another individual
 
+ Push'd                Push your first update using bodhi
=== Submitting Code ===
+ If you build it...    Complete your first successfull build with koji
 
+ SCM                  Push to the Fedora Package Repository
You can also contribute code to any part of the Badges stack:
+ 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).
* [https://github.com/fedora-infra/fedmsg Fedmsg]
+ Not a jerk            (awarded by steering committee for handling situations well)
* [https://github.com/fedora-infra/datanommer Datanommer]
+ Secretary General    (awarded when zodbot notes you as a chair in an IRC meeting)
* [https://github.com/fedora-infra/fedbadges Fedbadges]
+ Generalissimo        Member of the Fedora Board, FPC or FESCo
* [https://github.com/fedora-infra/tahrir-api Tahrir-API]
+ Commander in Chief    Fedora Project Leader
* [https://github.com/fedora-infra/tahrir Tahrir]


+ Bug tracker          if you participated in more than X (20? 30?) bugs that have
=== Submitting Badge Artwork ===
                        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
Fedora Badges is a perfect place to start if you want to help out the Fedora Design Team and the Badges project. Visit the [https://pagure.io/Fedora-Badges the Pagure page] and look for an issue that needs artwork. This [https://pagure.io/Fedora-Badges/issue/528 issue] holds the design resources you will need to design badges.
+ Polyglot              Submitted two or more languages to a single Fedora package
</pre>


=== Community Badges ===
== Types of Badges ==


The other kind of badge will be manually awarded by users in the community.
There are three major types of badges:
For example:


<pre>
* Badges which are automatically awarded by the system.
+ Met $USER in person      Anyone can award this to anyone else.
* Badges which are awarded by users via an invitation (link and/or QR code).
+ Made $USER's day          Anyone can award this to anyone else.
* Badges which are awarded manually.  
+ Signed $USER's GPG key    Anyone can award this to anyone else.


+ Crème de la FEM          Awardable only by the Fedora Engineering Manager.
There are six categories of badges:
+ The FPL's Blessing        Awardable only by the Fedora Project Leader.


+ FUDCon 2012: ¡Presente!  Awardable by event organizers
* Content/Learning
* Community
* Development
* Quality/Testing
* Events
* Miscellaneous


+ Fedora ♡ PyCon 2014      Awardable by people running the Fedora booth at PyCon 2014.
== Designing Badges ==
</pre>


For community badges to be awarded, we need a system that allows the awarder to
Designing Fedora Badges is a fun and artistic way to contribute to Fedora. With the help of many artists we have created almost 400 designs that are aesthetically cohesive.  
generate a URL and/or QRCode that the awardee can visit to accept.


== Badge Submission Process ==
=== Designing Fedora Badges: How To ===


There are three phases to this, each more complex than the last.
'''1. Start by downloading the resources you will need to create Badge designs.'''
* [https://inkscape.org/en/download/ Inkscape].
* [https://pagure.io/Fedora-Badges/issue/528 Templates, Content & Palettes].


=== Badge Submission Phase 1 - A mailing list ===
'''2. Familiarize yourself with the following links.'''
* [https://badges.fedoraproject.org/ Fedora Badges].
* [https://pagure.io/Fedora-Badges Fedora Badges Pagure page].
* Fedora Badges Style Guide


We need to create badge-ideas@lists.fedoraproject.org.  If you have an idea
'''3. Choose an issue, and assign yourself as owner.'''
for a badge, fully write it up and email it to that list. For a badge to be
* Once you have found an issue that you would like to make a design for, go to the [https://badges.fedoraproject.org/explore/badges Explore] page on Fedora Badges and research similar badges. What have other artists used to create their design? What background, what characters, colors, themes, etc?
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
'''4. Categorize your badge design. Is it:'''
badge is and what it is for.
* Content/Learning (Blue)
* Community (Pink)
* Development (Orange)
* Quality/Testing (Green)
* Event (Purple)
* Miscellaneous (Dark Blue)


Distro badges must be accompanied by a YAML file as defined below in the
This will be the outer ring color for your badge. Open the corresponding template, and save with your new file name. (Also, PSA, save your file early and often!!)
Really Making Badges section.


Both types of badges must be accompanied by artwork in order to be accepted.
'''5. Choose a background color.'''
* Use the [https://badges.fedoraproject.org/explore/badges Explore] page to find similar badges and use the appropriate background color.
* After you have chosen the background color, you will then either make it into a gradient, or you will overlay a pattern.
* Try using one of the backgrounds that exist already, this helps keep our designs cohesive.
* If you have an idea for a full illustrated background, feel free to go for it!


=== Badge Submission Phase 2 - A web form ===
'''6. Design badge graphics! You can do this in two ways:'''
* Create original designs
* Reuse/remix other badges designs


Only slightly more convenient than a mailing list, this web form just emails
When creating graphics for Fedora Badges, keep these things in mind:
our original mailing list and the same rules of acceptance apply as before.
* Reference the style guide often. The style guide helps the many contributors work cohesive.
* Use a stroke of 1.5 or more on all of your objects, unless no stroke adds to the design
* If your design needs typography, use [https://fontlibrary.org/en/font/comfortaa Comfortaa]. Also use strokes to help the type pop off the background it is on.  
* If your design requires the Fedora logo, do not skew the logo in any way, only resize it


The purpose of the webform is to make the generating of the Distro badge YAML
'''7. Export your file, and upload to the issue.'''
file as simple as possible.
* Make sure the export window in Inkscape says 256 x 256 for export size.  


=== Badge Submission Phase 3 - Opening up the curation process ===
'''8. Request that a mentor review your badge artwork in #fedora-design on [https://webchat.freenode.net/ IRC].'''
* People you can ask for help with art: mizmo, riecatnor, sirko, mleonova
* Work with one of these mentors until they approve your art.


We build a much more full-featured web application that allows the community
'''9. Once your artwork has been approved, add your name/badge issue to this [https://fedoraproject.org/wiki/Open_Badges/ArtworkLog wiki page].'''
to upvote and downvote different badge ideas.  Something kind of like
* Also let riecatnor know to award you the appropriate badge!
http://lego.cuusoo.com


== Really Making Badges ==
== Really Making Badges ==
Line 115: Line 128:
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 145:
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
user has ever comment on an update before.  If not, then a badge awarded to them
user has ever commented on an update before.  If not, then a badge is awarded to them
for commenting on their first update.  Badge awarding means creating an entry in
for commenting on their first update.  Badge awarding means creating an entry in
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 167:
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]
 
 
== I don't want to have anything to do with this ==
 
By default, all FAS accounts will be included in the system.
 
By logging in, to Tahrir, the user should be able to do any of the following:


* Toggle a flag and receive no further badges.
By default, all FAS accounts are included in the system.
* Toggle a flag and still receive badges, but no notifications.
* Toggle a flag and hide their account and all its badges from being viewed by anyone.


Users should also be able to hide a single or a subset of badges from being
By logging in to Tahrir, users can deactivate their accounts
viewed by anyone.
and not earn any more badges. Their details will not be displayed
anywhere on their applications. This will apply until they log back
in and use the same button to reactivate their accounts.


=== Timeline ===
In the future, we may implement more fine-grained control over
which parts of Badges you'd like to opt-out of.


* Spruce up the Tahrir app.
* Deploy the Tahrir app.
* Begin awarding badges via the fedmsg bus.
* Create a process for contributors to submit and vet new badge ideas and details.
* Write and make available a system for awarding badges from the desktop


== 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://pagure.io/Fedora-Badges/issue/528 Design Resources].

Latest revision as of 11:13, 29 March 2017

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. After years of work, and many contributions from developers and artists, we have almost 400 badges implemented on Fedora Badges.

Documentation

A considerable amount of literature exists regarding this system:

  • 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.
  • Blog posts by mizmo.
  • Blog posts by riecatnor.
  • Blog posts by mleonova.

Getting Involved

Want to know more about what we're doing here? You can join the mailing list.

Submitting Badge Ideas

You can submit and discuss ideas for potential badges on the Pagure page. 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.

Submitting Code

You can also contribute code to any part of the Badges stack:

Submitting Badge Artwork

Fedora Badges is a perfect place to start if you want to help out the Fedora Design Team and the Badges project. Visit the the Pagure page and look for an issue that needs artwork. This issue holds the design resources you will need to design badges.

Types of Badges

There are three 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).
  • Badges which are awarded manually.

There are six categories of badges:

  • Content/Learning
  • Community
  • Development
  • Quality/Testing
  • Events
  • Miscellaneous

Designing Badges

Designing Fedora Badges is a fun and artistic way to contribute to Fedora. With the help of many artists we have created almost 400 designs that are aesthetically cohesive.

Designing Fedora Badges: How To

1. Start by downloading the resources you will need to create Badge designs.

2. Familiarize yourself with the following links.

3. Choose an issue, and assign yourself as owner.

  • Once you have found an issue that you would like to make a design for, go to the Explore page on Fedora Badges and research similar badges. What have other artists used to create their design? What background, what characters, colors, themes, etc?

4. Categorize your badge design. Is it:

  • Content/Learning (Blue)
  • Community (Pink)
  • Development (Orange)
  • Quality/Testing (Green)
  • Event (Purple)
  • Miscellaneous (Dark Blue)

This will be the outer ring color for your badge. Open the corresponding template, and save with your new file name. (Also, PSA, save your file early and often!!)

5. Choose a background color.

  • Use the Explore page to find similar badges and use the appropriate background color.
  • After you have chosen the background color, you will then either make it into a gradient, or you will overlay a pattern.
  • Try using one of the backgrounds that exist already, this helps keep our designs cohesive.
  • If you have an idea for a full illustrated background, feel free to go for it!

6. Design badge graphics! You can do this in two ways:

  • Create original designs
  • Reuse/remix other badges designs

When creating graphics for Fedora Badges, keep these things in mind:

  • Reference the style guide often. The style guide helps the many contributors work cohesive.
  • Use a stroke of 1.5 or more on all of your objects, unless no stroke adds to the design
  • If your design needs typography, use Comfortaa. Also use strokes to help the type pop off the background it is on.
  • If your design requires the Fedora logo, do not skew the logo in any way, only resize it

7. Export your file, and upload to the issue.

  • Make sure the export window in Inkscape says 256 x 256 for export size.

8. Request that a mentor review your badge artwork in #fedora-design on IRC.

  • People you can ask for help with art: mizmo, riecatnor, sirko, mleonova
  • Work with one of these mentors until they approve your art.

9. Once your artwork has been approved, add your name/badge issue to this wiki page.

  • Also let riecatnor know to award you the appropriate badge!

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 commented on an update before. If not, then a badge is 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 included in the system.

By logging in to Tahrir, users can deactivate their accounts and not earn any more badges. Their details will not be displayed anywhere on their applications. This will apply until they log back in and use the same button to reactivate their accounts.

In the future, we may implement more fine-grained control over which parts of Badges you'd like to opt-out of.


Resources