Confirmed users
20
edits
(General updating/ restructuring - in progress.) |
|||
| Line 1: | Line 1: | ||
== | == Mozilla Open Badge Infrastructure (OBI) == | ||
NOTE: The documentation below is for general on-boarding. | NOTE: The documentation below is for general on-boarding. For an overview of badge issuing with the Mozilla OBI, read on. For more technical documentation, please see our [https://github.com/mozilla/openbadges/blob/development/docs/apis/issuer_api.md github pages]. | ||
=== | === Background === | ||
==== Why Are We Doing This? ==== | ==== Why Are We Doing This? ==== | ||
| Line 10: | Line 10: | ||
* Develop badges as a system for alternative accreditation, credentialing, and recognition; | * Develop badges as a system for alternative accreditation, credentialing, and recognition; | ||
* Help badges expand beyond siloed environments to be broadly shareable; | * Help badges expand beyond siloed environments to be broadly shareable; | ||
* Truly support | * Truly support earners learning everywhere; | ||
* Optimize the value of those badges by allowing badges to be remixable and shareable with different audiences; | * Optimize the value of those badges by allowing badges to be remixable and shareable with different audiences; | ||
* Develop a supporting infrastructure to standardize the process and support each | * Develop a supporting infrastructure to standardize the process and support each earner; | ||
* Create an infrastructure that is open and as decentralized as possible to give | * Create an infrastructure that is open and as decentralized as possible to give earners control and support of the entire ecosystem; | ||
* Provide software and development tools to help organizations implement badging systems. | |||
==== Description ==== | ==== Description ==== | ||
The Open Badges framework is designed to enable people to earn badges across the Web - this requires support for multiple individual badge issuers. Empowering earners to use their badges as legitimate credentials also requires support for sharing of badges across many display sites. The framework potentially allows the earner to both collect and display badges in multiple contexts, tied to a single identity. Earners can share badges across such varied online environments as personal blogs and social networking channels. It is critical for this infrastructure to be open, to give earners control over how they represent their own learning and experiences, to allow anyone to issue badges, and for each earner to carry their badges with them throughout their online life. | |||
=== | === Tech Specs === | ||
* The OBI is built in node.js using express. | * The OBI is built in node.js using express. | ||
* | * Badges are represented by JSON data blobs embedded in PNG files in the [http://beta.openbadges.org/backpack/ Backpack] | ||
* | * Identity management is handled by [http://identity.mozilla.com/ Mozilla Persona] | ||
=== | === Open Badges Ecosystem === | ||
[[Image:Tech-diagram-v3 updated.png|700px|Open Badges -- Tech-diagram-v3 updated.png]]'''<br>''' | [[Image:Tech-diagram-v3 updated.png|700px|Open Badges -- Tech-diagram-v3 updated.png]]'''<br>''' | ||
* An issuer makes a badge available to their community of earners on their website. When awarded the badge, an earner sends it to their Backpack. | |||
* An | ** The badge becomes portable through the [https://github.com/mozilla/openbadges/wiki/Issuer-API Issuer API] script, presenting the earner with a modal dialog that requests their consent to add the badge to their Backpack. | ||
** The badge becomes portable through the [https://github.com/mozilla/openbadges/wiki/Issuer-API Issuer API] | ** If the issuer wants the earner to be able to store the badge outside the OBI, they can optionally push it to the [https://github.com/mozilla/openbadges/wiki/Badge-Baking Mozilla Baking Service] where the assertion URL representing JSON blobs is embedded into PNG files. Otherwise badge baking is handled through the Issuer API. | ||
** | |||
* Displayers pull unpacked badges (JSON) out of the Backpack based on earner action and privacy settings. | * Displayers pull unpacked badges (JSON) out of the Backpack based on earner action and privacy settings. | ||
* Public badges are discoverable based on earner’s email address. | * Public badges are discoverable based on earner’s email address. | ||
* Earners can share their badges through their Backpack and grant permission for a particular site to display that collection of badges. | * Earners can share their badges through their Backpack and grant permission for a particular site to display that collection of badges. | ||
* Displayers authenticate badges with the | * Displayers authenticate badges with the issuer using a verification check. | ||
''Badge issuing is significantly simplified using BadgeKit, Mozilla's new set of badging tools. The BadgeKit Web app lets issuers create and publish badges through an intuitive interface. An issuer can then present those badges using the BadgeKit API, which also handles reviewing applications - [[Badges/badgekit|Read more about BadgeKit]].'' | |||
=== Definitions and Concepts === | |||
'''Badge''' | |||
A digital representation of a skill, learning achievement or experience. Badges can represent competencies and involvements recognized in online or offline life. Each badge is associated with an image and some metadata. The metadata provides information about what the badge represents and the evidence used to support it. | |||
'''Open Badge Infrastructure (OBI)''' | |||
Open infrastructure technology supports independent badge issuers and displayers. Includes the metadata specification, APIs, verification framework, Backpack and software tools. | |||
'''''ROLES''''' | |||
'''Earner''' | |||
'' | Someone who earns a badge (either by applying or being directly issued with it). The earner can use their Backpack to manage and share their badges. | ||
'''Issuer''' | |||
Organization or individual who issues Open Badges to their communities. The issuer is responsible for defining badges, making them available to earners and handling applications for badges. | |||
* Badge issuing can involve participants with various specific roles, such as application assessors, badge creators and administrators. | |||
'''Displayer''' | |||
A website, organization, or person who accesses publicly shared Open Badges and displays them for badge earners. | A website, organization, or person who accesses publicly shared Open Badges and displays them for badge earners. | ||
An | '''''TOOLS''''' | ||
'''Mozilla Backpack''' | |||
The core authorized data store and management interface of Mozilla’s reference implementation of the Backpack. Each earner has their own Backpack where their badge data is stored. | |||
'''[https://github.com/mozilla/openbadges-specification/blob/master/Assertion/latest.md Assertion Specification]''' | |||
Badge metadata is represented as an [https://wiki.mozilla.org/Badges/Onboarding-Issuer#Assertion assertion]. The assertion specification defines the information within a badge. An assertion includes multiple items of data, such as: badge name and description, issuer, date, criteria URL, evidence URL and badge image URL. The assertion should carry all the information needed to understand a badge. This ensures that badges can be fully understood and verified no matter where they are shared. | |||
'''[https://github.com/mozilla/openbadges/wiki/Badge-Baking Badge Baking]''' | |||
A badge is an image combined with assertion data - badge baking embeds an assertion into an image to produce a portable badge. | |||
'''[https://github.com/mozilla/openbadges/wiki/Issuer-API Issuer API]''' | |||
The Issuer API provides a script for issuers to let earners send badges to the Backpack. | |||
'''[https://github.com/mozilla/openbadges/wiki/Displayer-API Displayer API]''' | |||
The Displayer API provides specifications for displaying badges beyond the Backpack. | |||
'''[https://github.com/mozilla/openbadges-verifier Verification] | |||
The Verifier extracts badge data to verify earners. | |||
'''[[Badges/badgekit|BadgeKit]]''' | |||
A new set of tools to simplify badging for issuers - provides an interface for creating and managing badges/ assessing badge applications. The BadgeKit API lets issuers control interaction with their own community of badge earners while supporting much of the badge admin process through a Web app. | |||
See also the [https://github.com/mozilla/openbadges-badgekit/wiki/BadgeKit-and-Open-Badges-Resources BadgeKit and Open Badges Resource list] | |||
To explore the concepts and terms in badging and badge issuing, check out the [https://github.com/mozilla/openbadges-badgekit/wiki/Glossary Badging and BadgeKit Glossary] | |||
=== | == Issuing Badges == | ||
* Issuers must have | |||
* | An issuer is an organization or individual who designs and issues badges within the ecosystem. The OBI is open and supports any independent issuer who conforms to the necessary badge and issuing specifications. Additionally, issuers can now benefit from the [https://wiki.mozilla.org/Badges/badgekit BadgeKit] tools, providing they meet specific technical requirements. | ||
* | |||
* | === Background === | ||
* | * Issuers determine the badging approach that will work best for their communities. | ||
* Earners must be registered with the backpack implementation that the issuer is trying to send their badges to. In the future, the issuer will need to ask the earner which backpack they want to push badges their to and honor that request. | * Touchpoints with the OBI occur through various interfaces, including sending badges to Backpacks and using BadgeKit. | ||
* Issuers do not need to register with the OBI - they simply utilize the JavaScript APIs. | |||
=== Requirements === | |||
* Issuers must have Web hosting facilities including: | |||
** A server capable of serving requests to the general Internet. | |||
** The ability to make a POST request from their server backend and read a JSON response. | |||
** Email addresses for earners (and the ability to email them). | |||
** Badges structured in the format that the assertion expects - when using BadgeKit this structuring is automated. | |||
** Earners must be registered with the backpack implementation that the issuer is trying to send their badges to. ''In the future, the issuer will need to ask the earner which backpack they want to push badges their to and honor that request.'' | |||
* For verification: | * For verification: | ||
** | ** For Hosted Assertions - issuers must maintain a server with the Badge Assertion information (at the unique badge URL) to verify each badge. | ||
** For Signed Assertions: | |||
** | |||
*** Issuers must generate public/private key pair and maintain the hosted public key. | *** Issuers must generate public/private key pair and maintain the hosted public key. | ||
*** Issuers must sign the badges themselves, sign the whole package, and push badges to earner backpacks through the Issuer | *** Issuers must sign the badges themselves, sign the whole package, and push badges to earner backpacks through the Issuer JavaScript API. | ||
* Issuers looking to use [[Badges/badgekit|BadgeKit]] have a specific range of options and requirements regarding hosting and technical provision - see the following blog post for more information: [http://openbadges.tumblr.com/post/78764181250/announcing-mozilla-badgekit Announcing Mozilla BadgeKit]. | * Issuers looking to use [[Badges/badgekit|BadgeKit]] have a specific range of options and requirements regarding hosting and technical provision - see the following blog post for more information: [http://openbadges.tumblr.com/post/78764181250/announcing-mozilla-badgekit Announcing Mozilla BadgeKit]. | ||
=== | === Badge Creation Flow === | ||
# Have an email address for the earner. | # Have an email address for the earner. | ||
| Line 104: | Line 130: | ||
# Integrate your site with the Backpack via the Issuer API | # Integrate your site with the Backpack via the Issuer API | ||
The Issuer API is a script that can be dropped into any badge issuer's website to provide a way for earners to add an issuer's badges to their Backpack or federated backpacks. There's no need to bake the badges independently as the API takes care of this. | ''The Issuer API is a script that can be dropped into any badge issuer's website to provide a way for earners to add an issuer's badges to their Backpack or federated backpacks. There's no need to bake the badges independently as the API takes care of this.'' | ||
''The badge creation flow varies significantly for issuers using [[Badges/badgekit|BadgeKit]]. Issuer admins can design and define the data for a badge within the BadgeKit Web app, with BadgeKit handling badge | '''''The badge creation flow varies significantly for issuers using [[Badges/badgekit|BadgeKit]]. Issuer admins can design and define the data for a badge within the BadgeKit Web app, with BadgeKit handling badge data structuring. Issuers can then present available badges to their earners using the BadgeKit API.''''' | ||
=== | === Open Badges related Widgets created by the community === | ||
A number of Open Badges widgets and utilities have been developed for integrating badges with various technologies including WordPress, Drupal, Django, Rails, PHP, Java, Moodle, Mahara, Joomla, Blackboard, Google Sites, Canvas, iOS, Android and AJAX. | |||
See [https://github.com/mozilla/openbadges/wiki/Open-Badges-related-widgets the list] on GitHub (which is regularly updated). | |||
=== BadgeKit === | |||
[https://wiki.mozilla.org/Badges/badgekit BadgeKit] builds on a range of tools which have been under continual development for some time through projects such as Chicago Summer of Learning. These tools include [https://github.com/mozilla/openbadger/blob/v2.0/docs/api.md Open Badger] and [https://github.com/mozilla/aestimia Aestimia]. | |||
The Mozilla Backpack is an authorized data storage space and management interface for earners of Open Badges. Each earner can access their own Backpack that | == Backpack == | ||
The Mozilla Backpack is an authorized data storage space and management interface for earners of Open Badges. Each earner can access their own Backpack - that lets them manage and share their badges. | |||
* The Backpack is open source and federated. Earners or issuers can take the [https://github.com/mozilla/openbadges code] and fork it. | * The Backpack is open source and federated. Earners or issuers can take the [https://github.com/mozilla/openbadges code] and fork it. | ||
* Earners may decide to create and host their own Backpack so that they have complete control over their badges. | * Earners may decide to create and host their own Backpack so that they have complete control over their badges. | ||
* Mozilla has built a reference or default Backpack (the "Mozilla Backpack") which holds all of the badge Assertions (hashed user email + badge data) for each earner. | * Mozilla has built a reference or default Backpack (the "Mozilla Backpack") which holds all of the badge Assertions (hashed user email + badge data) for each earner. | ||
== | == Assertion == | ||
Badge metadata is defined as an assertion, which contains multiple required and optional fields. The structure has evolved over time - see the [https://github.com/mozilla/openbadges-specification/blob/master/Assertion/latest.md assertion specification] for complete details. | |||
Issuers can put a reasonable amount of extra material into the badge, but that material must be static - once the badge is issued, any change to that information must not change. This is to prevent someone from issuing one badge, then sneakily changing it later to another badge unbeknownst to the earner. | |||
== Badge Images and Baking == | |||
* Each badge is a JSON blob of metadata embedded in a PNG file. | * Each badge is a JSON blob of metadata embedded in a PNG file. | ||
* This allows the badge to be more easily portable - an actual collection of information that can be emailed around and portable while still carrying its details with it. | * This allows the badge to be more easily portable - an actual collection of information that can be emailed around and portable while still carrying its details with it. | ||
* Ultimately, this is important for decentralization of the system and will allow earners to have more control over where their badges live. | * Ultimately, this is important for decentralization of the system and will allow earners to have more control over where their badges live. | ||
=== | === Baking Service === | ||
* | * To bake a badge, you must host a badge Assertion on your site. | ||
** See the Assertions page for details: https://github.com/mozilla/openbadges/ | ** See the Assertions page for details: https://github.com/mozilla/openbadges-specification/blob/master/Assertion/latest.md | ||
** The system is designed to: | |||
** The | *** avoid SPAMing the earner with unwanted badges, and | ||
*** | *** give earners ultimate control over where the badges go. | ||
*** | |||
* Mozilla provides the "tools" for unpacking the PNG file through the OBI. | * Mozilla provides the "tools" for unpacking the PNG file through the OBI. | ||
* PNG files will be unpacked in the Backpack where each earner can view, manage, and organize their badges (and see all the metadata behind each badge). | * PNG files will be unpacked in the Backpack where each earner can view, manage, and organize their badges (and see all the metadata behind each badge). | ||
* PNG files will be unpacked for the Displayer API so that Displayers will just have the raw data to work with on their end. | * PNG files will be unpacked for the Displayer API so that Displayers will just have the raw data to work with on their end. | ||
=== | ''If you are building a new system, we strongly recommend using the JavaScript Issuer API or BadgeKit for awarding badges. The tools and APIs take care of the badge baking.'' | ||
=== Badge Image Standards === | |||
* Image must be a PNG. | * Image must be a PNG. | ||
* Images should be square and not exceed 256kb. They should have dimensions not smaller that 90 x 90. | * Images should be square and not exceed 256kb. They should have dimensions not smaller that 90 x 90. | ||
* Image is provided as a URL to the image on the issuer server in the metadata. | * Image is provided as a URL to the image on the issuer server in the metadata. | ||
* Mozilla will cache the image in at least two sizes. | * Mozilla will cache the image in at least two sizes. | ||
* When a badge is displayed, it will be loaded from the Mozilla cache to avoid extra burden on the issuer servers. This also helps if the issuer is not available or the link is broken. | * When a badge is displayed, it will be loaded from the Mozilla cache to avoid extra burden on the issuer servers. This also helps if the issuer is not available or the link is broken. | ||
* When using BadgeKit, issuers can design badges inside the Web app using a graphical tool, or can upload images prepared elsewhere. | |||
== | == Verification == | ||
* To avoid gaming and duplication, the OBI is built to support badge verification. | * To avoid gaming and duplication, the OBI is built to support badge verification. | ||
* This | * This is essential to allow earners to prove the authenticity and validity of their badges. Badges can also have expiry dates, allowing issuer to implement time-sensitive badges, for example in continuous professional development scenarios. | ||
* The OBI provides the channel for this verification to happen through the Backpack but must communicate with the | * The OBI provides the channel for this verification to happen through the Backpack but must communicate with the issuer. | ||
* The issuer must be online to verify badges. (We are exploring a cache to cover verification for a set amount of time). | * The issuer must be online to verify badges. (We are exploring a cache to cover verification for a set amount of time). | ||
* Most verification will be done by displayers. Displayers should not display a badge that cannot be verified. | * Most verification will be done by displayers. Displayers should not display a badge that cannot be verified. | ||
=== | === Verification Method === | ||
* The OBI currently supports verification of badges through Hosted Assertions. When an issuer sends a badge using the OBI, metadata is pushed to a unique and persistent URL (the Assertion URL). The issuer maintains the badge Assertion and displayers can ping the assertion URL to verify the badge. | * The OBI currently supports verification of badges through Hosted Assertions. When an issuer sends a badge using the OBI, metadata is pushed to a unique and persistent URL (the Assertion URL). The issuer maintains the badge Assertion and displayers can ping the assertion URL to verify the badge. | ||
** A displayer puts the earner’s email address through a salted hash function and sees if it matches with the hash value indicated for the recipient in the badge metadata. If values match, the badge belongs to the earner and can be claimed. | ** A displayer puts the earner’s email address through a salted hash function and sees if it matches with the hash value indicated for the recipient in the badge metadata. If values match, the badge belongs to the earner and can be claimed. | ||
| Line 212: | Line 205: | ||
** If a badge is verified initially but it becomes unverified in the future, the earner is notified. | ** If a badge is verified initially but it becomes unverified in the future, the earner is notified. | ||
=== | === Functional Flow === | ||
# Badge (within it, its assertion) exists in the Backpack. | # Badge (within it, its assertion) exists in the Backpack. | ||
| Line 221: | Line 214: | ||
# If values match, badge is verified and displayer displays the badge. If not, displayer should reject the badge. | # If values match, badge is verified and displayer displays the badge. If not, displayer should reject the badge. | ||
== | == Displayers == | ||
* Display of badges is where a significant part of the value of this approach lies. Badges are not siloed or limited to one site but can be combined with badges from multiple issuers and then shared for different audiences and purposes. | * Display of badges is where a significant part of the value of this approach lies. Badges are not siloed or limited to one site but can be combined with badges from multiple issuers and then shared for different audiences and purposes. | ||
* Each earner will control where badges are displayed through the Backpack. | * Each earner will control where badges are displayed through the Backpack. | ||
| Line 228: | Line 221: | ||
* If a site has an earner's email address, they will be able to query that person's Backpack for all of that earner's public badges. They will get back JSON representation of the badges. | * If a site has an earner's email address, they will be able to query that person's Backpack for all of that earner's public badges. They will get back JSON representation of the badges. | ||
== | == Identity == | ||
* Identity is a critical component because we need to recognize earners as they earn badges from different issuers. | * Identity is a critical component because we need to recognize earners as they earn badges from different issuers. | ||
* It's important to us that identity be open and decentralized. | * It's important to us that identity be open and decentralized. | ||
* We are utilizing verified email as a form of identity through the Mozilla product Persona. | * We are utilizing verified email as a form of identity through the Mozilla product Persona. | ||
** Additional info: | ** Additional info: https://wiki.mozilla.org/Identity | ||
* Many sites already use email addresses for logins, even those that don't generally collect them. | * Many sites already use email addresses for logins, even those that don't generally collect them. | ||
* We don't need to retain any profile or personal information about the earner; all we need is their email address. | * We don't need to retain any profile or personal information about the earner; all we need is their email address. | ||
=== | === Verifying Identity in Backpack === | ||
# User validates identity to Mozilla's Verified Email. | # User validates identity to Mozilla's Verified Email. | ||