Skip to content

Instantly share code, notes, and snippets.

@hcschuetz
Last active April 16, 2025 21:18
Show Gist options
  • Save hcschuetz/75ca7cecd2ecc2c22b0ecb881a221241 to your computer and use it in GitHub Desktop.
Save hcschuetz/75ca7cecd2ecc2c22b0ecb881a221241 to your computer and use it in GitHub Desktop.
Notes on mastodon/fediverse user groups (why hashtags do not suffice).

(Zur deutschen Version 🇩🇪)

On Hashtags, Groups and Toot Propagation on Mastodon

TL;DR

The behavior of hashtags on Mastodon (or in the Fediverse in general) is somewhat complicated to understand. In particular, hashtags can't be used to propagate toots across instances.

To distribute toots more reliably to a group of users, a group handle, for example at a.gup.pe, should be used.

Preliminary Remarks

I would have preferred to refer to some existing Mastodon documentation instead of writing this text. Unfortunately, I haven't found anything suitable, especially no official documentation on the behavior of hashtags. If anyone has a suitable link, I would appreciate a comment.

I have gathered the information here from my own experience and various discussions on the web. If there are any errors or omissions, I would also appreciate a comment.

The information here is as of April 2025. Mastodon's behavior could change in the future.

Now to the actual topic.

Following a User

If you are following a user, this means that toots (original toots and boosts) from this user are

  1. propagated to your instance and
  2. displayed in your home feed.

Notes:

  • Step 1 is of course only necessary if the user is not on the same instance as you.
  • The logic is actually even more complicated, especially for replies and for toots that are not "public". But I can't cover all that here.

Following a Hashtag

If you're following a hashtag, then you will see only those toots with the hashtag, that have somehow reached your instance anyway. That is, step 1 from above is not carried out, but only step 2, if the hashtag has got to your instance for other reasons.

So in a way it is a matter of luck whether you receive a toot with the hashtag.

Toot Propagation

A toot will reach your instance

  • if the author and you are on the same instance,
  • or if someone on your instance (e.g. yourself) follows the author or someone who has boosted the toot,
  • or if the author directly addresses the toot to someone on your instance by mentioning their handle,
  • or if a reply to the toot has already reached your instance.

Hashtags do not cause toot propagation. That would be far too much effort, because every toot with a hashtag would have to be propagated to all other instances. (Or alternatively, each instance would have to know which hashtags are followed by users on all other instances. That would also be too much effort).

A reply reaching an instance, "knows" its predecessor hashtag and "pulls" it along, so that the predecessor can then also be found on the instance. This can happen over several levels.

But a toot does not know its "successors" (i.e. its replies), because they can be floating around anywhere in the Fediverse and a search through the entire Fediverse would again be too much effort.

Groups and Boost Bots

As mentioned before, hashtags cannot be used to reliably send toots to a group of users on different instances.

Instead, a group could agree that every member follows every other member. However, people often don't want this because they are only interested in certain toots.

A "central" user could also regularly boost all toots on the topic.

  • A toot would have to be addressed to this user.
  • All group members would have to follow the central user.

This solution has the advantage that not everyone has to follow everyone else, you only have to follow one user. However, it also has disadvantages:

  • The "central" user would have to boost reliably.
  • Group members may not be interested in everything tooted by the central user.

It is therefore best to automate the "central user". It is a "bot" boosting all the toots addressed to it. Authors must address their toots to the bot, mentioning its handle in the toots. And all group members must follow the bot.

Gargron himself has implemented a boost bot. However:

  • It seems to be a bit outdated.
  • And you would have to set it up on a server.
  • In addition, this boost bot behaves a little differently to what I described above: It reacts to hashtags rather than mentions.

Fortunately there is a service creating such bots automatically: a.gup.pe. When

  • authors mention a handle @[email protected] in the toots
  • and group members follow this handle,

then the toots are boosted and propagated as described above.

Particularly comfortable: You need not even explicitly perform an admin step on a.gup.pe to create the group handle. Just use the handle.

Another hint regarding gup.pe groups: Your mastodon UI only knows about the group members (= followers) on your mastodon instance. To see the total number of members/followers, go to https://a.gup.pe/u/ourGroupName.

See also this blog post by Raphael Jolivet listing and comparing several group services for the fediverse.

Editing Toots

There still seems to be the following problem: If you do not enter the name of the group correctly when you first submit a toot and only correct it in an edit, then the propagation to the group seems not to work.

It is not clear to me, at which level this problem should be fixed: In the ActivityPub protocol, in the Mastodon server code or in the code of a.gup.pe?

A Concrete Case

(The referenced examples are in German but might be helpful nevertheless.)

The second toot in this thread was not boosted by anyone and therefore initially reached only my instance and the instances of my few followers. Many (probably most) players of the Hangman game didn't get the toot, even if they explicitly searched for the hashtag.

Only when a follow-up toot was boosted, the above toot was propagated as well. But that was already too late for the game round.

(The "side discussions" to the thread linked above have to be opened separately).

As a consequence of the above problems (and there were probably similar problems earlier in the hashtag history) the group @[email protected] was introduced.

In the next Hangman game, however, the second and third toot were not boosted by the group, because the group handle was only corrected by an edit. This can be seen near the bottom of the group feed.

(Off-topic: I find Mastodon feeds much more pleasant to read on phanpy.social than in Mastodon's standard web UI).

Über Hashtags, Gruppen und die Weiterleitung von Tröts auf Mastodon

Zusammenfassung

Das Verhalten von Hashtags auf Mastodon (oder allgemein im Fediverse) ist etwas kompliziert zu verstehen. Hashtags sind insbesondere ungeeignet um Tröts über Instanzen hinweg zu verbreiten.

Wenn man Tröts einigermaßen zuverlässig an eine Gruppe von Usern verteilen will, sollte man ein Gruppen-Handle verwenden, beispielsweise bei a.gup.pe.

Vorbemerkungen

Ich hätte lieber auf eine existierende Mastodon-Doku verwiesen, statt diesen Text zu schreiben. Leider habe ich aber nichts passendes gefunden, insbesondere keine offizielle Dokumentation zum Verhalten von Hashtags. Wenn jemand einen geeigneten Link hat, würde ich mich über einen Kommentar freuen.

Die Informationen hier habe ich aus eigenen Erfahrungen und verschiedenen Diskussionen im Web gesammelt. Bei eventuellen Fehlern oder Unvollständigkeiten würde ich mich auch über einen Kommentar freuen.

Ach ja, die Infos hier sind auf dem Stand von April 2025. Das Verhalten von Mastodon könnte sich in Zukunft ändern.

Nun zur Sache.

Einem User folgen

Wenn Du einem User folgst, führt das dazu, dass Tröts (eigene Tröts und auch Boosts) von diesem User

  1. an Deine Instanz weitergeleitet und
  2. in Deinem Home-Feed angezeigt

werden.

Anmerkungen:

  • Schritt 1 ist natürlich nur dann nötig, wenn der User auf einer anderen Instanz ist als Du.
  • Die Logik ist tatsächlich noch komplizierter, insbesondere für Replys und für Tröts, die nicht "public" sind. Das kann ich aber hier nicht alles abdecken.

Einem Hashtag folgen

Wenn Du einem Hashtag folgst, dann werden Dir nur solche Tröts mit dem Hashtag angezeigt, die ohnehin irgendwie auf Deine Instanz gekommen sind. Es wird also der Schritt 1 von oben nicht durchgeführt, sondern nur der Schritt 2, falls der Tröt aus anderen Gründen auf Deiner Instanz gelandet ist.

Es ist also in gewisser Weise eine Glückssache, ob man Tröts mit dem Hashtag erhält.

Tröt-Weiterleitung

Ein Tröt landet auf Deiner Instanz,

  • wenn der Autor und Du auf der gleichen Instanz sind,
  • oder wenn irgendwer auf Deiner Instanz (z.B. Du selbst) dem Autor folgt oder jemandem, der den Tröt geboostet hat,
  • oder wenn der Autor den Tröt direkt an jemanden auf Deiner Instanz addressiert,
  • oder wenn ein Reply auf den Tröt schon auf Deine Instanz gelangt ist.

Hashtags sorgen nicht für die Weiterleitung. Das wäre viel zu aufwändig, denn dazu müsste ja jeder Tröt mit Hashtag an alle anderen Instanzen weitergeleitet werden. (Oder alternativ müsste jede Instanz wissen, welchen Hashtags User auf allen anderen Instanzen folgen. Das wäre auch zu aufwändig.)

Ein Reply, der auf eine Instanz gelangt, "kennt" seinen Vorgänger-Tröt und "zieht" ihn gewissermaßen mit sich, so dass der Vorgänger dann auch auf der Instanz vorzufinden ist. Das kann auch über mehrere Stufen passieren. Aber ein Tröt kennt seine "Nachfolger" (also seine Replys) nicht, denn die können ja irgendwo im Fediverse herumschwirren und eine Suche durch das ganze Fediverse wäre wieder zu aufwändig.

Gruppen / Boost-Bots

Wenn man Tröts zuverlässig an eine Gruppe von Usern auf verschiedenen Instanzen weiterleiten will, dann geht das also nicht mit einem Hashtag.

Man könnte stattdessen vereinbaren, dass jeder User in einer Gruppe jedem anderen folgt. Das will man aber oft nicht, weil man sich nur für bestimmte Tröts interessiert.

Es könnte auch ein "zentraler" User regelmäßig alle Tröts zum Thema boosten.

  • Ein Tröt müsste an diesen User addressiert werden.
  • Alle Gruppen-Mitglieder müssten dem zentralen User folgen.

Diese Lösung hat den Vorteil, dass nicht mehr jeder jedem folgen muss, sondern man muss nur noch einem folgen. Sie hat aber auch Nachteile:

  • Der "zentrale" User müsste mit dem Boosten zuverlässig sein.
  • Gruppen-Mitglieder interessieren sich vielleicht nicht für alles, was der zentrale User sonst noch trötet.

Deshalb ist es am besten, wenn man den "zentralen User" automatisiert. Das ist dann ein "Bot", der alle an ihn gerichteten Tröts boostet. Autoren müssen ihre Tröts an den Bot addressieren, sein Handle also in den Tröts erwähnen ("mention"). Und alle Gruppen-Mitglieder müssen dem Bot folgen.

Gargron himself hat einen Boost-Bot implementiert. Aber:

  • Der scheint schon ein bisschen veraltet zu sein.
  • Und man müsste ihn auf einem Server aufsetzen.
  • Außerdem verhält sich dieser Boost-Bot ein bisschen anders als von mir oben beschrieben: Er reagiert auf Hashtags statt auf "Mentions" (also Adress-Handles).

Es gibt jedoch einen Service, der solche Bots automatisch anlegt: a.gup.pe. Wenn

  • Autoren ein Handle @[email protected] in den Tröts erwähnen
  • und Gruppen-Mitglieder diesem Handle folgen,

dann werden die Tröts wie oben beschrieben geboostet und weitergeleitet.

Besonders praktisch: Man braucht das Gruppen-Handle auf a.gup.pe nicht einmal mit irgendeinem Admin-Schritt explizit anlegen, sondern muss es einfach nur verwenden.

Noch ein Hinweis zu gup.pe-Gruppen: Dein Mastodon-UI kennt nur die Gruppen-Mitglieder (= Follower) auf Deiner Mastodon-Instanz. Die Gesamtzahl der Mitglieder/Follower sieht man auf https://a.gup.pe/u/unserGruppenName.

Siehe auch diesen Blog-Post von Raphael Jolivet, der verschiedene Dienste für Gruppen im Fediverse auflistet und vergleicht.

Editieren von Tröts

Es scheint noch folgendes Problem zu geben: Wenn man den Namen der Gruppe beim ersten Abschicken eines Tröts nicht richtig angibt und erst in einem Edit korrigiert, dann scheint die Weiterleitung in die Gruppe nicht zu funktionieren.

Auf welcher Ebene dieses Problem gefixt werden müsste (im ActivityPub-Protokoll, im Mastodon-Server-Code oder im Code von a.gup.pe), ist mir nicht klar.

Ein konkreter Fall

Der zweite Tröt in diesem Thread wurde von niemandem geboostet und landete daher zunächst nur auf meiner Instanz und den Instanzen meiner wenigen Follower. Viele (vermutlich die meisten) Mitspieler des Galgenmännchen-Spiels haben also den Tröt nicht bekommen, selbst wenn sie explizit nach dem Hashtag gesucht haben.

Erst als ein Nachfolge-Tröt wieder geboostet wurde, wurde auch der obige Tröt weitergeleitet. Das war aber für die Spiel-Runde schon zu spät.

(Die "Nebendiskussionen" zum oben verlinkten Thread muss man extra aufklappen.)

Als Konsequenz aus den obigen Problemen (und ähnliche Probleme hat es wohl schon früher in der Hashtag-Historie gegeben) wurde die Gruppe @[email protected] eingeführt.

Im nächsten Galgenmännchen-Spiel, wurden jedoch der zweite und dritte Tröt nicht durch die Gruppe geboostet, da das Gruppen-Handle erst durch einen Edit berichtigt wurde. Dies kann man nahe dem unteren Ende des Gruppen-Feed sehen.

(Off-topic: Ich finde Mastodon-Feeds auf phanpy.social wesentlich angenehmer zu lesen als im Standard-Web-UI von Mastodon.)

@hcschuetz
Copy link
Author

There's also this article by Fedi.Tips on groups.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment