I think it's a good time to explain how we see @badgefed and @fediprofile, how they work together, and how #badges can use #ActivityPub and the #Fediverse.
-
Badges themselves are very simple files.
Often the badge information is encoded inside an image, usually a PNG.
So the image contains both:
• the visual badge
• the structured metadata describing the credentialOne file, both human-friendly and machine-readable.
Other times these are simple json files.
--
Where things get interesting is with #ActivityPub.
@badgefed uses ActivityPub as a transport layer for decentralization, and also as a way to add social features.
BadgeFed issues credentials, but it wraps the OpenBadge inside an ActivityPub Note.
The actor creating that note is the badge issuer. <-- important!
--
This is actually very similar to how a Mastodon post works when you post a image.
Imagine:
• the image = the badge
• the post = the description of the recognitionOnce published, anyone in the #Fediverse can interact with it:
reply, comment, like, boost, quote, or follow (and block) the issuer.Badges become social objects.
ActivityPub is also used for federation.
Badge issuers (ActivityPub actors) can follow other issuers.
When a badge is issued, a Create activity is federated.
Other servers receive that activity and can store a local copy of the badge.
This works very similarly to how Mastodon servers cache posts.
Because of that, badges can also be:
• revoked using the Delete activity
• updated using the Update activityAgain, this reuses existing ActivityPub verbs instead of inventing a new protocol or new spec.
Simple primitives, (I love how simple it is), powerful results.
--
Verification is also straightforward.
The #OpenBadge issuer URL points to the ActivityPub actor URL.
That means the same actor who published the badge also owns the public/private key pair used in ActivityPub.
So the actor identity and the badge issuer identity match.
-
ActivityPub is also used for federation.
Badge issuers (ActivityPub actors) can follow other issuers.
When a badge is issued, a Create activity is federated.
Other servers receive that activity and can store a local copy of the badge.
This works very similarly to how Mastodon servers cache posts.
Because of that, badges can also be:
• revoked using the Delete activity
• updated using the Update activityAgain, this reuses existing ActivityPub verbs instead of inventing a new protocol or new spec.
Simple primitives, (I love how simple it is), powerful results.
--
Verification is also straightforward.
The #OpenBadge issuer URL points to the ActivityPub actor URL.
That means the same actor who published the badge also owns the public/private key pair used in ActivityPub.
So the actor identity and the badge issuer identity match.
Now let’s talk about @fediprofile
@badgefed issues recognition to recipients identified by a profile URL.
It intentionally does not allow email addresses (even hashed ones).
This avoids security issues and allows recipients to be identified using public profiles. Privacy at it's best.
Any URL can be used as a profile:
• LinkedIn
• Mastodon
• GitHub
• personal websites
• Instagram (ugh, eww)
• etc...If that URL also happens to be an ActivityPub actor (for example a Mastodon or PixelFed profile), the user will also receive a mention or notification when a badge is issued.
--
Many people already receive badges across different identities.
For example, I personally have badges tied to:
• my LinkedIn
• my personal website
• gaming profilesThis is where the concept of a badge wallet or badge backpack becomes useful.
A place to collect them all. (POKEMON!)
-
Now let’s talk about @fediprofile
@badgefed issues recognition to recipients identified by a profile URL.
It intentionally does not allow email addresses (even hashed ones).
This avoids security issues and allows recipients to be identified using public profiles. Privacy at it's best.
Any URL can be used as a profile:
• LinkedIn
• Mastodon
• GitHub
• personal websites
• Instagram (ugh, eww)
• etc...If that URL also happens to be an ActivityPub actor (for example a Mastodon or PixelFed profile), the user will also receive a mention or notification when a badge is issued.
--
Many people already receive badges across different identities.
For example, I personally have badges tied to:
• my LinkedIn
• my personal website
• gaming profilesThis is where the concept of a badge wallet or badge backpack becomes useful.
A place to collect them all. (POKEMON!)
@fediprofile is designed to be that wallet.
Because Fediprofile itself is an ActivityPub actor, it can follow badge issuers (again simplicity wins!).
When it detects a badge issued to one of the verified profile URLs connected to the account, it automatically stores it (and optionally boost it).
Users can then choose which badges to display. Users OWN their badges.
This creates a low-friction identity layer.
People who don’t want to run their own site can still have a public profile where they show:
• their social links
• their activity
• their badgesAll in a decentralized way.
--
In the future, Fediprofile will support OAuth sign-in from platforms like:
• LinkedIn
• GitHub
• Google
• others (not instagram but is open-source and you can implement it ...)This allows people to easily create a profile while still participating in the #Fediverse. (In a limited way).
-
@fediprofile is designed to be that wallet.
Because Fediprofile itself is an ActivityPub actor, it can follow badge issuers (again simplicity wins!).
When it detects a badge issued to one of the verified profile URLs connected to the account, it automatically stores it (and optionally boost it).
Users can then choose which badges to display. Users OWN their badges.
This creates a low-friction identity layer.
People who don’t want to run their own site can still have a public profile where they show:
• their social links
• their activity
• their badgesAll in a decentralized way.
--
In the future, Fediprofile will support OAuth sign-in from platforms like:
• LinkedIn
• GitHub
• Google
• others (not instagram but is open-source and you can implement it ...)This allows people to easily create a profile while still participating in the #Fediverse. (In a limited way).
This is where the model becomes powerful.
People who don’t know about the Fediverse can still participate indirectly.
They receive badges, create profiles, and interact with issuers, WITHOut needing to understand federation.
It’s a gentle on-ramp.
(And I am making sure to add extra friction if they don't have a fediverse account, and encouraging them to create one).
--
There are interesting possibilities here.
Imagine a Fediprofile plugin that lets someone cross-post to Instagram and Pixelfed.
Or automatically creates a Pixelfed account for an illustrator.
Fediprofile becomes an entry point into the Fediverse.
-
This is where the model becomes powerful.
People who don’t know about the Fediverse can still participate indirectly.
They receive badges, create profiles, and interact with issuers, WITHOut needing to understand federation.
It’s a gentle on-ramp.
(And I am making sure to add extra friction if they don't have a fediverse account, and encouraging them to create one).
--
There are interesting possibilities here.
Imagine a Fediprofile plugin that lets someone cross-post to Instagram and Pixelfed.
Or automatically creates a Pixelfed account for an illustrator.
Fediprofile becomes an entry point into the Fediverse.
And all of this to answer @johannab question.
--
For communities, this becomes even more powerful.
A community can run its own Fediprofile hub.
Profiles can include:
• social links
• badges
• gamification
• streaks
• recognitionsAll tied to the community.
--
Example: a hiking community.
Imagine a fediprofile hub for mountain hikers where members can:
• show their trail badges
• track hiking streaks
• share gear links
• display summit achievementsCombine that with a badge issuer and maybe a #Mastodon and/or #PixelFed server for the community.
Now you have a decentralized ecosystem.
-
And all of this to answer @johannab question.
--
For communities, this becomes even more powerful.
A community can run its own Fediprofile hub.
Profiles can include:
• social links
• badges
• gamification
• streaks
• recognitionsAll tied to the community.
--
Example: a hiking community.
Imagine a fediprofile hub for mountain hikers where members can:
• show their trail badges
• track hiking streaks
• share gear links
• display summit achievementsCombine that with a badge issuer and maybe a #Mastodon and/or #PixelFed server for the community.
Now you have a decentralized ecosystem.
I’m also exploring ideas like:
• leaderboards
• activity points
• community challengesPossibly as a component integrated with BadgeFed + Fediprofile, or maybe as a separate project.
Still experimenting.
--
In short:
BadgeFed issues decentralized recognitions.
Fediprofile helps people collect and display them.Both use #ActivityPub as the backbone.
(You can create your own badge wallet. You can create your own badge issuer. Just use activitypub and openbadges and they should connect).
Badges become portable, social, and decentralized.
And communities can build on top of that.
--
P.S. I decided to NEVER add a wallet into BadgeFed, keeping it simple and extensible by default. So Fediprofile is the default wallet. But anyone can build and use their own. No new specs, no new protocols.
-
I think it's a good time to explain how we see @badgefed and @fediprofile, how they work together, and how #badges can use #ActivityPub and the #Fediverse.
Also how this can help communities outside the fediverse!
This is a quick overview of the architecture and ideas behind it. 🧵 1/
(thanks @johannab for the ask ...)
@mapache this is interesting, though I have one question before I get too much more interested: is there any genAI involved in these projects at all?

-
I think it's a good time to explain how we see @badgefed and @fediprofile, how they work together, and how #badges can use #ActivityPub and the #Fediverse.
Also how this can help communities outside the fediverse!
This is a quick overview of the architecture and ideas behind it. 🧵 1/
(thanks @johannab for the ask ...)
-
@mapache A big sticking point for me has been that students will usually use an institution's Moodle for a few years then leave, so it cant be their wallet. But your separation of BadgeFed as an issuer and Fediprofile as a wallet makes this much clearer.
-
@marxjohnson I am planning a moodle plugin for badgefed!
-
@marxjohnson I am planning a moodle plugin for badgefed!
@mapache Fantastic, please post about it here when it happens
-
@mapache this is interesting, though I have one question before I get too much more interested: is there any genAI involved in these projects at all?

I have tried to use AI/LLMs but it just sucks for ActivityPub implementations and blazer that I rather do it myself, it is more efficient, accurate and fun.
I do use it for some for CSS stuff where I am no expert. If someone wants to collab for frontend I would greatly appreciate it.
-
R relay@relay.mycrowd.ca shared this topic
-
And all of this to answer @johannab question.
--
For communities, this becomes even more powerful.
A community can run its own Fediprofile hub.
Profiles can include:
• social links
• badges
• gamification
• streaks
• recognitionsAll tied to the community.
--
Example: a hiking community.
Imagine a fediprofile hub for mountain hikers where members can:
• show their trail badges
• track hiking streaks
• share gear links
• display summit achievementsCombine that with a badge issuer and maybe a #Mastodon and/or #PixelFed server for the community.
Now you have a decentralized ecosystem.
Yes pls sign me up!!!!
Question: can we authenticate with other Activity Pub credentials (Bonfire, for example), or are we limited to Mastodon?
Here's my aim for the near future:
1. AP fediverse platform possibly a stack of a few bespoke apps (Bonfire, Vernissage, Emissary/Atlas, maybe Peertube...)
2. If not SSO, then one login for all our sandbox spaces.
3. One (pseudonymous permitted) profile for community members (I was pondering this when FediProfile popped up on the TL!!!) -
Yes pls sign me up!!!!
Question: can we authenticate with other Activity Pub credentials (Bonfire, for example), or are we limited to Mastodon?
Here's my aim for the near future:
1. AP fediverse platform possibly a stack of a few bespoke apps (Bonfire, Vernissage, Emissary/Atlas, maybe Peertube...)
2. If not SSO, then one login for all our sandbox spaces.
3. One (pseudonymous permitted) profile for community members (I was pondering this when FediProfile popped up on the TL!!!) -
Yes pls sign me up!!!!
Question: can we authenticate with other Activity Pub credentials (Bonfire, for example), or are we limited to Mastodon?
Here's my aim for the near future:
1. AP fediverse platform possibly a stack of a few bespoke apps (Bonfire, Vernissage, Emissary/Atlas, maybe Peertube...)
2. If not SSO, then one login for all our sandbox spaces.
3. One (pseudonymous permitted) profile for community members (I was pondering this when FediProfile popped up on the TL!!!)And 4) since FediProfile led me back to BadgeFed and recalling that you introduced it last year ... a way for the community to "verify" roles in the community (yes, this is a "moderator", yes this is a "tech support' account...)
4 a) Bonus if the verification can also be "yes I belong to <climate project X in ontario, canada> without a need to dox someone and get inappropriate levels of info when just looking to connect online. -
Oh I don't know - I'm aiming to start one.
Here's the high-level current motivation: @samnabi and the https://onemillionneighbours.ca project have put together a project aiming to address something I've been observing for years, that local civic engagement efforts suffer because *online* connectivity scatters people and their connections to the global similar-but-walled-off tech giant "social Media" spaces.
I want a way for local citizens to engage *locally* and in 3D.
-
Oh I don't know - I'm aiming to start one.
Here's the high-level current motivation: @samnabi and the https://onemillionneighbours.ca project have put together a project aiming to address something I've been observing for years, that local civic engagement efforts suffer because *online* connectivity scatters people and their connections to the global similar-but-walled-off tech giant "social Media" spaces.
I want a way for local citizens to engage *locally* and in 3D.
@theraccoonbytes @mapache @samnabi
a large part of the point I'm trying to make is that we can do this within borders, with a commitment to local hosting and local support, but with access to the global base of fediverse software and collaborative reach globally.
But my vision for "verification" is more like the financial industry's "KYC" - an identifyable org and/or certified professional vouches for someone by an auditable process. Badgefed + Fediprofile seems a great digital schema for it