Federated Reputation

On the SocialHub, @keunes proposed to federate reputation in the sense that if Discourse supported ActivityPub, people could use their existing reputation on one or more Discourse instances across the Internet to bypass the initial trust levels 0 and 1 and go straight to 2 (member) level when joining a new board.

I just created my first post on this Discourse instance, and because I’m new here I can only post two links. Understandable, but rather annoying. So I was thinking: isn’t there a way to fediversify Discourse, particularly my Reputation?

E.g. in the AntennaPod forum we could set SocialHub as a ‘trusted trust source’ and allow users to benefit from their trust levels gained elsewhere.

Indeed, when you’re a known netizen with a good reputation, the limitations of lower trust levels might come as a burden when joining new forums. OTOH if you gain a bad reputation, this could also prevent you from gaining privileges on new boards (e.g., play as a negative weight on your trust level promotion, although this is easily circumvented by using a new identity).

So the idea is really to facilitate sharing reputation of good behavior across Discourse instances. As a global network of Discourse instances is already existing, with a number of users here on Meta who also dwell in multiple other instances, it becomes increasingly desirable to unify identities across instances for regular users, so that conversations become more fluid. ActivityPub is one way of doing it, and we’re currently exploring ways to create a plugin to add ActivityPub support for Discourse, which could serve as a basis for other federated features, including this one.

Parallel History

@erlend_sh reminded me of this drive-by proposal from three years ago:

Summary of interesting features proposed


Network of Trust


In post #4, @erlend_sh proposed to add “communities in common” with other users, and eventually port badges across communities to make it easier for members to discover new communities.


First thoughts crossing my mind regarding the “reputation migration”:

  • this should be opt-in per forum
  • this should be opt-in per user (see 1)
  • there should be an editable whitelist (maybe provided by discourse itself) of allowed forums
  • there should be an editable blacklist of allowed forums

1: this raises the question if we want to nag the user about it in the first 5 minutes of using the forum


I thought the Trust Levels were more about learning the rules and mores of the individual forums. Allowing people to skip the two week/15 visit ‘acclimatising’ phase (default) based on other forums rules may not work out so well.

I wouldn’t mind an extra ‘associate member’ trust level that could be applied to forums/users registered to a central directory-hub. Something that would allow me read access to lots of forums, and maybe the option to vote in polls, or Like things - while still needing to sign up to a particular forum for full membership to post and progress in Trust Level, etc.


I’m running a handful of small Discord instances and I’m dreading the day when I’ll have to start messing with moderation bots to prevent spam and other malicious behavior.

Most of Discord’s moderation shortcomings could be solved by Trust Levels, which are still hugely underutilized in community software.

Networked (federated) trust levels shared across multiple inter-operating instances enables two important features:

Network of Trust

A user who has attained TL 2 on Meta should get bumped straight to TL1 when joining any forum that has listed meta.discourse.org as a Trusted Forum. Essentially the next step after Let experienced users skip "new to Discourse" features.

It’s a very straight forward PageRank-like system.


Discord has this handy feature that lets you see which chat communities (servers) you and another user have in common:

This reminded me of what I still think is the most appealing use case for our elusive Discourse Hub:

A similar form of carrying over badges from other instances would also be very useful. When someone has received their first ‘Helpful’ badge (no such badge exists by default yet), every additional instance it is shown on acts as a reminder and affirmation to this person that they are the type of community member that helps others.


If the network of trust were introduced, I would like to see support for a Trusted Trust List as well as Trusted Forum. I.e. a Discourse instance might publish its Trusted Forum list and I could choose to trust meta.discourse.org/trusted-forums.json on my instance, for example. (Non-recursive, probably)


How do you see this working? Anonymously with no user data or … ?

I’m not sure what user data would be relevant to the trusted forum list specifically, I would envisage Trusted Forums being something that the instance admin choose and, if the admin opt to publish it, requesting meta.discourse.org/trusted-forums.json (or whatever the URL might be) would produce something along the lines of this:

  "trustedForums": [

Then as an admin of an instance, I could enter “meta.discourse.org” into Trusted Forums to only trust that instance (not the instances it trusts) or I could instead enter it into Trusted Trust List (with a better name…) to trust that instance and the instances that it trusts.

The json probably wouldn’t actually contain a reference to its own instance, that’s really just to illustrate that trusting the list from another instance should imply trust of that instance as well.

Since you mention user data, I assume you’re referring to how I see the trust itself working. That’s beyond the scope of what I was commenting on but given @erlend_sh’s idea of bumping a user to TL1, I guess the instance would have to share something like a sha256 hash of the email address with the trusted forums at the point of sign-up (or more likely in a sidekiq job after sign-up)

Though this avoids directly sharing user data, I can immediately see one flaw in that using the json above as an example. If a user has an account on bestforum.com and then signs up to meta.discourse.org, it would reveal to the first that the user has created an account on the second and could reveal to the second that the user already has an account on the first, which may be undesirable.

I’m not really sure how to deal with that. Having the user opt-in at sign-up can’t really be relied on because an instance which wants to abuse that mechanism could just remove it.

Possibly the “Discourse Hub” could mostly solve that problem by way of it only keeping (and only ever being given) hashed email addresses with associated instances and trust levels. An instance would query the hub with a hashed email address and perhaps use a score-based system with the instances where that hash has been seen and the trust levels attained, so an instance would never see what other instances are involved, just the resulting score.

Though with an obvious operator of such a hub being Civilized Discourse Construction Kit, Inc., this arrangement also still has an important question: do I, as a user of meta plus other instances, want CDCK to be able to see what other instances I’m using? (As it would be possible for an instance+hub operator to connect their own instance users with entries in the hub)

I guess to summarise, how the trust might work is too complicated for this addled brain. :slight_smile:

Although I find the “trusted forums” approach interesting and useful, I also see a potential security issue, where attackers would target less policed “trusted forums” to gain access to their actual target – where they could not gain access directly. So if we are to implement such a transitive trust mechanism, it should not be easily traversable and should come with a strong retaliation mechanism that would suspend an aggressor across instances: I see this as a hard constraint that would add a fair amount of complexity, and would better be left for a second phase of development.

OTOH it would (seem to) be easier to maintain a private list of trusted forums where the remote reputation of a member on each of these forums would reinforce its status locally. Maybe the concept of trust levels could be extended to instances as well as users? If an instance, say Meta, has a TL3, then people coming from there could have TL2 initially, with a decay factor if the user does not participate ; this adds another layer of complexity, but I am thinking aloud and wanted to sketch some alternative possibilities to trusting whole instances.

I agree on the discretion regarding who is using which instances. It should be taken into account, although publishing to public instances may be equivalent to publishing the fact you’re using them anyway ; this may apply to private boards though.


I’m still punting for a user list on a directory level. :slightly_smiling_face:

https://DiscourseDiscovery.org -

Anonymous users will see a directory of forums who have registered to be included in the public list (searchable by category or ‘Forum tags’), and also Search keywords across all instances in the directory.

Sign up to create a DiscourseDiscovery user account. New accounts will start at Hub_Level_0, and can progress through the remaining Hub_Levels by completing certain actions and adapted Discobot ‘Forum Training’ covering all the necessary skills you think people will need.

Different Hub_Levels will allow access to more features across the directory. Eg. Seeing categories not normally visible to anon users, take actions such as Like, or vote in polls (avatar images could be circled with red to denote associate/Hub_Level members), or get notifications on topic content, etc. Tapping on an avatar would bring up their DiscourseDiscovery Usercard.

Users can then add any ‘full-member’ forum accounts to a concatenated DiscourseDiscovery User Page (with the option to leave out any they want to). Badges can be tallied here, as well as latest activity, etc, etc.

Forums could also have the options in Security to restrict access to certain things (categories, polls, etc) to full members only. They could also choose whether to be included in the public directory, or a more private one based on a user’s Hub_Levels (or to not be included at all).

Just some ideas. :slightly_smiling_face:

1 Like