Search

Items tagged with: fediverse


The Blog Option in littleFedi


littleFedi, like many social platforms, had both a strength and a limit. Posts, by their nature, are ephemeral. They get published, federated (unless local-only, which littleFedi handles) and then, over time, lost. Partly through self-deletion, partly through their normal blending in with the thousands of other posts that pile up over time. Sometimes, though, we want something to stay. And not just stay as a social post, but as an actual blog. A bit like with BSSG, I had thought it would be convenient to have a minimal system. Not to compete with WordPress or other solutions, but to have a small blog, integrated into littleFedi, that would produce and serve a blog updated every now and then, whenever the person writing felt like doing it.

And that's why the blog option was born.

The idea is simple: when you write a post, from the web UI or from the CLI, there's a checkbox, "blog post". If you check it, that post stops being just a status that will scroll past and disappear. littleFedi renders it into a real static site. No JavaScript, just HTML and CSS, an Atom feed, tag pages, a chronological archive. Nothing exotic, nothing that needs maintenance five years from now.

The blog isn't a parallel system you have to feed separately. It's not an export, not an import, not a bridge to some other CMS. The post you wrote is the blog post. Same database, same act of writing, still boostable, still repliable, still part of the conversation on the fediverse side. The blog is just a second representation of the same content, generated automatically. Every time you create, edit, or delete a blog post, the whole static site for your account gets rebuilt from scratch, and the new version replaces the old one atomically, so nobody ever lands on a half-built page. If the build fails, the previous version stays in place. Simple, but it has to work reliably, or the whole idea is pointless.

That's the core of it: two representations of the same post. As a status, it lives in the fediverse, interactive, part of the conversation, subject to replies and boosts like anything else. As a static page, it lives on the web, durable, indexable, with a permalink, something an RSS reader can hold onto. You don't have to decide in advance which posts deserve to last. You write normally, and if something turns out to be worth keeping, you flag it, and it gets its own page.

One detail I cared about while thinking this through: the generated site has to be self-contained. When littleFedi builds it, media gets copied or hard-linked into the generated directory - images, audio, video. If it's stored on S3, it keeps its public URL directly. Either way, the point is that the site on disk doesn't depend on the instance staying up. If the server goes down tomorrow, the blog files are still a complete, working website. That wasn't an afterthought, it was one of the requirements from the start.

Not every account gets a blog, and that's intentional. The instance admin has to enable the feature globally ([blog] enabled = true), and then grant it per account. It's not meant to be a CMS, and I didn't want it to become one. Blog posts can't be replies, can't be boosts, have to be public and top-level. These are constraints, not missing features: the blog is for your own writing, not for threads or reshared content.

There's no JavaScript anywhere in the generated site. That was deliberate too. It loads fast, it works offline if you cache it, and it will still render correctly in ten years without anyone having to update a dependency.

In the end, the blog option doesn't ask you to choose between writing socially and writing something permanent. You keep writing the way you always do, on littleFedi, and if a post is worth keeping, you check a box. No separate platform, no migration, no vendor lock-in. Just your own posts, some of them rendered into a small static site you can host anywhere, built out of something that already existed on the open web.

Remember: all this is being currently served by a Raspberry PI Zero W powered by NetBSD

Here's the result: rpi0w.stefanomarinelli.it/@ste…

#littleFedi #SSG #BSSG #OwnYourData #Blogging #Fediverse #NetBSD


🔔 Erinnerung: Friendica-Admin-Treffen

Am Montag ist es wieder soweit!

📅 Montag, 27.07.2026
🕢 19:30 Uhr

Gemeinsam werfen wir einen Blick auf aktuelle Entwicklungen rund um Friendica. Geplant sind unter anderem:

🔹 Änderungen beim Start von Daemon und Worker
🔹 Die neue Technik für schnellere Seitenaktualisierungen

Wie immer gilt: Bringt gern eure Fragen, Erfahrungen und Themen mit. Der Austausch untereinander ist mindestens genauso wertvoll wie die vorbereiteten Themen.

📣 Gebt die Einladung gern auch an andere Friendica-Admins und Entwickler weiter. Je mehr teilnehmen, desto vielfältiger werden Erfahrungen, Ideen und Lösungsansätze.

Wir freuen uns auf einen informativen und gemütlichen Abend mit euch! 😊

#Friendica #Fediverse #OpenSource #Community #Systemadministration

@Friendica Admins


Week in Fediverse 2026-07-24


Servers

- WriteFreely v0.17.0
- Ktistec v3.9.0
- Vernissage Server v1.41.0
- GoToSocial v0.22.1
- Bookwyrm v0.9.1
- PeerTube v8.2.3
- Lemmy v0.19.20
- ties v0.3
- ActivityPub for WordPress v9.1.0
- NeoDB v0.17.2
- NodeBB v4.14.2
- PieFed v1.7.7
- FitPub v1.2.1
- ActivityForge: ForgeFed implementation in Rust

Clients

- PleromaFE v2.11.1
- Aria v1.5.9
- Pixelix v5.0.0
- Summit v1.83.0
- Jerboa v0.0.88
- Holos v1.15.0
- Rocinante v1.1.8

Tools and Plugins

- Superblock v3.1 (Hubzilla addon)
- Polls for ActivityPub v1.0.10 (WordPress plugin)

Protocol

- FEP-de8d: Emoji Catalogs

Articles

- I added ActivityPub to this blog

-----

#WeekInFediverse #Fediverse #ActivityPub

Previous edition: mitra.social/objects/019f71c0-…


Week in Fediverse 2026-07-17


Servers

- flohmarkt v0.20.0
- Vernissage Server v1.40.0
- FitPub v1.2.0
- Wafrn v2026.07.02
- TinyAP v0.1.11
- NeoDB v0.16.5.0
- PieFed v1.7.6
- Catodon v26.7.0
- Trunk & Tidbits, June 2026 (Mastodon)
- matrix-appservice-activitypub: Turns your Matrix server into a fully functioning ActivityPub server
- Discord–Fediverse Bridge: A self-hosted bridge between Discord forum channels and ActivityPub community actors
- ~petersanchez/honk: Fork of honk

Clients

- PeerTube Mobile v2.2.0
- Photon v2.4.0
- Tesseract v1.5.5
- Aria v1.5.8
- Mitra Mini v0.5.0

Tools and Plugins

- Enable Mastodon Apps v1.6.1 (WordPress plugin)
- Polls for ActivityPub v1.0.9 (WordPress plugin)
- Telegram ↔️ Mastodon Bridge Bot: A Python bot that forwards text messages, photos, and albums from a Telegram chat to your Mastodon account

For developers

- @shootpub/activitypub-types: ActivityPub types package with support for FEP-2277 Activitypub core types (duck typing)

Articles

- The Long Tail of Work Left Until ActivityPub Has E2EE

-----

#WeekInFediverse #Fediverse #ActivityPub

Previous edition: mitra.social/objects/019f4de5-…


Threads 連上聯邦宇宙真的只做半套,比bluesky 橋接到聯邦宇宙遇到的問題還多。

#fediverse #threads #bluesky


【研究】你看到的動態消息,不是巧合:社群平台為什麼容易往右靠

這幾年你可能也感覺到了:社群平台上看到的內容好像變得更兩極、更容易吵起來。這不完全是錯覺,也不是巧合——這跟演算法的設計邏輯有關,也跟這些平台最近幾年一次次鬆綁內容審核政策有關。對跨性別者等邊緣族群來說,這不只是「討厭」而已,而是攸關能不能安全地待在網路上發言、生活。

閱讀全文: ethome.cc/algorithm-mastodon-d…

---
ETHome | 資訊安全自媒體
給每個人的資安,也給最需要的人
#Fediverse #Mastodon #演算法 #社群平台 #資料自主權 #跨性別


Week in Fediverse 2026-07-10


Servers

- Betula v1.8.1
- Stegodon v1.8.6
- Ktistec v3.8.0
- Mitra v5.7.0
- Ibis v0.3.3
- Gathio v1.6.3
- NodeBB v4.14.0
- Wanderer v0.20.0
- Wafrn v2026.07.01
- Gush! v0.0.40
- PieFed v1.7.5
- Harmony v1.4.0

Clients

- Mastodon for iOS v2026.05
- tooi v0.27.0
- Voyager v2.47.4
- Aria v1.5.7
- Holos v1.14.0
- Rocinante v1.1.0
- chan-fe: Imageboard-style frontend for Mitra and Mastodon-compatible fediverse APIs

Tools and Plugins

- tag-federation.online: How Widely Do Hashtags Federate?
- Fedigraph: A dashboard for exploring the fediverse

For developers

- BotKit v0.5.0

Protocol

- FEP-4772: Representing bookmarks
- FEP-521b: Switch the default in FEP-521a to be 76171% cooler

-----

#WeekInFediverse #Fediverse #ActivityPub

Previous edition: mitra.social/objects/019f29a4-…


#Mitra v5.7.0

codeberg.org/silverpill/mitra/…
codeberg.org/silverpill/mitra-…

- Improvements related to groups: adding group description, editing and deleting groups, better navigation.
- Showing total number of voters in polls.
- The "Posts and replies" tab was removed from the profile page, replaced with filters (show reposts / show replies).




Friendica Plausch


The media in this post is not displayed to visitors. To view it, please go to the original post.

Friendica Plausch
Starts: Saturday, July 11, 2026 at 12:00:00 PM UTC
Finishes: Saturday, July 11, 2026 at 12:45:00 PM UTC

Statt FAQ zu lesen oder sich Videos anzusehen, könnte man einfach ins Gespräch kommen.

Der Termin richtet sich an alle Menschen, die von LinkedIn, Facebook, 𝕏 oder einer anderen unfreien Plattform weg wollen. Die sich für Friendica interessieren, beim Start noch etwas Hilfe benötigen oder konkrete Fragen zur Anwendung haben.

Der Rahmen:


  • Jeden Samstag 14 Uhr
  • 45 Minuten Plausch
  • Deine Fragen zur Anwendung
  • Realisiert über meet.jit.si/FriendicaPlausch
  • ohne Cam aber mit Mikrofon


Komm einfach vorbei. Wir lassen uns von den Themen tragen.

#Friendica #Fediverse #DIDit #DUTgemacht #DIDAY

Location: meet.jit.si/FriendicaPlausch


Ich habe heute baraag.net komplett blockiert.

Nachdem ich in den letzten Tagen bereits 17 Accounts von diesem Server einzeln sperren musste, weil sie sexualisierte Darstellungen offensichtlich minderjähriger Figuren in Form von #Cartoons, #Manga oder #Anime, verbreiteten oder teilten, ist für mich die Grenze erreicht.

Wer solche Inhalte nicht im #Fediverse sehen möchte, sollte überlegen, den gesamten Server zu blockieren.

Je nach Ausgestaltung können solche Darstellungen in mehreren Ländern in #Europa strafrechtlich relevant sein, insbesondere in der #Schweiz sowie, abhängig von den konkreten Umständen, auch in #Deutschland und weiteren EU-Staaten. Allein deshalb ist das kein Thema, bei dem ich Kompromisse eingehe.

#Friendica #Mastodon #Moderation #Kinderschutz


Week in Fediverse 2026-07-03


Servers

- TinyAP v0.1.10
- GoToSocial v0.22.0
- Mobilizon v5.2.4
- Bonfire v1.0.5
- PeerTube v8.2.2
- Ktistec v3.7.0
- PieFed v1.7.0
- Mastodon v4.6.3
- Hollo v0.9.6
- ActivityPub for WordPress v9.0.2
- NeoDB v0.16.3
- Wanderer v0.19.3
- Trunk & Tidbits, May 2026 (Mastodon)
- Lemmy Development Update June 2026 and 1.0.0-beta.1

Clients

- Fedilab v3.42.1
- Pachli v3.7.1
- Aria v1.5.5
- Rocinante v1.0.9
- Holos v1.12.0
- Mitra Mini v0.4.2

Tools and Plugins

- FediFetcher v7.1.21
- owncast-emojiwall v2.1.0
- Polls For ActivityPub (WordPress plugin)

For developers

- Why implementing ActivityPub is hard, and why it doesn't have to be (Fedify)

Protocol

- FEP-8c13: Context-Authority Routing with Object Integrity Proofs for Restricted Threads
- FEP-f228: Backfilling conversations (Final comments)
- FEP-7628: Move actor (Final comments)

-----

#WeekInFediverse #Fediverse #ActivityPub

Previous edition: mitra.social/objects/019f058a-…


Why implementing ActivityPub is hard, and why it doesn't have to be


A quiet failure


Picture the moment your server sends its first Follow activity to Mastodon. You read the spec, built the JSON, signed the HTTP request, and POSTed it with care. What comes back is a single line: 401 Unauthorized. No body. No explanation.

What went wrong? Maybe the clock behind your Date header drifted a few minutes. Maybe the hash in your Digest header is off. Maybe you uppercased the (request-target) pseudo-header while building the signing string, or published your public key as PEM where the other side wanted multibase. The remote server won't tell you. So you start reading someone else's server code to debug your own.

I know, because I've been there. Fedify began as a casualty of another project. I set out to build a single-user microblogging server, the one that would later become Hollo, and started implementing ActivityPub from scratch. Somewhere between the signature specs and the JSON-LD, the protocol work swallowed the product, and I put the whole thing down. What I picked back up wasn't the app. It was the framework the app should have had. Fedify shipped first; only then could Hollo exist, built on top of it. (I've told this story at more length in A year with the fediverse.)

ActivityPub development gets hard in a few very specific places. In this post I want to walk through five of them, then show what each one looks like with Fedify. If you've spent time in the fediverse, you'll probably nod along. If you haven't, you may wonder why anyone would do all of this by hand. Either way, the conclusion is the same: nobody has to anymore.

Five scenes

Scene 1: there is more than one standard


ActivityPub servers authenticate each other with HTTP signatures. Except there isn't one signature spec. Most of the fediverse runs on draft-cavage-http-signatures-12, an expired draft that never became a standard. The actual standard exists too: RFC 9421, HTTP Message Signatures. The problem is that you can't know which one a given server accepts until you try.

A real-world implementation therefore has to sign with one spec, see whether it gets rejected, re-sign with the other, and remember per server which one worked so it can skip the dance next time. The fediverse calls this double-knocking. Yes, you get to implement it yourself.

That's still not the end. HTTP signatures only prove who sent a request. For situations like inbox forwarding, where you relay an activity you received to a third party, you need signatures that live on the document itself: Linked Data Signatures and Object Integrity Proofs. Four signature mechanisms in total, and two kinds of keys to manage: RSA and Ed25519.

Scene 2: one document, many shapes


ActivityPub's wire format is JSON-LD, and in JSON-LD the same document can take many shapes. This is easier to show than to explain. Here is a Create activity one server might send:

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Create",
  "actor": "https://example.com/users/alice",
  "to": "https://www.w3.org/ns/activitystreams#Public",
  "object": {
    "type": "Note",
    "id": "https://example.com/notes/123",
    "content": "Hello, fediverse!"
  }
}

And here is a semantically identical activity from another server:
{
  "@context": ["https://www.w3.org/ns/activitystreams"],
  "type": "Create",
  "actor": {
    "type": "Person",
    "id": "https://example.com/users/alice",
    "preferredUsername": "alice"
  },
  "to": ["as:Public"],
  "object": "https://example.com/notes/123"
}

actor turned from a URI string into an inline object. to turned from a string into an array. object went the other way, from an inline object to a URI. Even the address that means “public” has three valid spellings: https://www.w3.org/ns/activitystreams#Public, as:Public, and plain Public. Your parser has to accept every combination, and which one arrives depends on the sender's implementation.

The spec-compliant answer is to normalize every document with a JSON-LD processor, expansion followed by compaction. In practice many implementations treat it all as “just JSON” and quietly break on whatever shape some server happens to emit. Either way, you end up with defensive code smeared across the whole codebase: is this a string? An array? An object? A URI I have to fetch?

Scene 3: the zombie post


A user publishes a post, spots a typo, and deletes it right away. Your server sends a Create, then a Delete. Thanks to network weather, some receiving server gets the Delete first and the Create second. It ignores the deletion of a post that doesn't exist yet, then dutifully processes the creation of a post that was already deleted. That post now lives on that server forever, while its author believes it's gone.

Then there's scale. With five thousand followers, one post means thousands of HTTP deliveries. Do that inline in the request handler and your publish button takes half a minute to respond, or the server falls over. Fine, use a queue. Deliveries fail, so retry them. On what schedule? Exponential backoff. How many times? And is a 500 Internal Server Error the same kind of failure as a 410 Gone? When do you clean up three thousand followers on a server that no longer exists? Should you keep hammering a host that has been down for days?

At some point it dawns on you that this is no longer protocol implementation. It's distributed systems engineering.

Scene 4: it's not a spec, it's an ecosystem


Even perfect spec compliance doesn't buy you interoperability. A few examples from the field:

  • Mastodon's secure mode requires HTTP signatures on GET requests too (so-called authorized fetch). Now suppose both servers run in that mode. To fetch the other side's public key you must sign your request; to verify your signature, the other side must first fetch your key. Deadlock. The community's workaround is to sign with an “instance actor” that represents the server itself. You won't find that in the spec.
  • Threads can't parse activities whose actor is embedded as an inline object. When sending to Threads, the actor has to be a URI.
  • Lemmy silently rejects Group actors that lack fields Mastodon never asks for, such as a moderators collection linked via attributedTo and a featured collection.
  • Misskey carries vocabulary extensions of its own; quote posts alone go by three different property names across implementations.

The list keeps growing. Interoperability here is not something you finish once and stop thinking about. It's maintenance, forever.

Scene 5: insecure by default


Build it from scratch, and you start out wide open. Skip signature verification on incoming activities and anyone can inject a forged Follow or Delete. Leave the document loader unrestricted and a malicious activity can point it at http://169.254.169.254/ or your internal network, turning your server into an SSRF proxy. Skip origin checks on embedded objects and any server can hand out a document claiming “here's what the Mastodon lead developer said.”

What these traps share is that nothing happens when you fall into them. Everything appears to work. Until someone exploits it.

Ghost ran into this too


If you're thinking “surely our team would manage,” consider Ghost: a leading open-source publishing platform used by thousands of journalists and creators, and a team that set out to build its own ActivityPub support.

We can definitely attest to the problems that Fedify is working hard to solve, because even in just a few weeks of early prototyping we were running into the issues described above right away.

From Alright, let's Fedify


Ghost ended up building its ActivityPub layer on Fedify.

So I put all of it in a framework


Fedify is a TypeScript library for building federated server apps on ActivityPub and the standards around it. It runs on Deno, Node.js, and Bun, and supports edge runtimes like Cloudflare Workers. The design goal hasn't changed since the beginning: keep everything in those five scenes out of application code.

Here are the same five scenes again, this time with Fedify.

Scene 1, revisited: the signature war is the framework's job


Here is everything it takes to put one actor on the fediverse:

import { createFederation, generateCryptoKeyPair, MemoryKvStore } from "@fedify/fedify";
import { Endpoints, Person } from "@fedify/vocab";

const federation = createFederation<void>({
  kv: new MemoryKvStore(),  // Swap for Redis, PostgreSQL, etc. in production
});

federation
  .setActorDispatcher("/users/{identifier}", async (ctx, identifier) => {
    if (identifier !== "alice") return null;
    const keyPairs = await ctx.getActorKeyPairs(identifier);
    return new Person({
      id: ctx.getActorUri(identifier),
      preferredUsername: identifier,
      name: "Alice",
      inbox: ctx.getInboxUri(identifier),
      endpoints: new Endpoints({ sharedInbox: ctx.getInboxUri() }),
      publicKey: keyPairs[0].cryptographicKey,
      assertionMethods: keyPairs.map((keyPair) => keyPair.multikey),
    });
  })
  .setKeyPairsDispatcher(async (ctx, identifier) => {
    // In real code you'd persist these in a database; this shows the gist
    return [await generateCryptoKeyPair()];
  });

The moment this code runs:
  • Every outgoing request gets signed. With an RSA key, Fedify emits HTTP Signatures and Linked Data Signatures; add an Ed25519 key and it attaches Object Integrity Proofs as well. All four mechanisms coexist on a single activity, and each receiver verifies with the strongest one it understands.
  • Fedify does the double-knocking for you: first contact goes out as RFC 9421, a rejection triggers a draft-cavage retry, and the winning spec is cached per server. If the rejection carries an [Accept-Signature challenge] (RFC 9421 §5), Fedify reads it and re-signs with exactly the components the server asked for.
  • Incoming signatures are verified before your code sees anything. An activity that fails verification never reaches your listeners.
  • One bonus. Because you registered an actor dispatcher, you now have a WebFinger (RFC 7033) server, for free. Type @alice@example.com into Mastodon's search box and your actor comes up. You never wrote a line of WebFinger code.


Scene 2, revisited: types instead of JSON-LD


Fedify ships about eighty classes covering the whole Activity Vocabulary plus the major vendor extensions. The classes are typed and immutable, and their accessors absorb the shape differences that JSON-LD allows.

const actor = await ctx.lookupObject("@hongminhee@hollo.social");
if (actor instanceof Person) {
  console.log(actor.name);           // Safe whether it's a string or langString
  const followers = await actor.getFollowers();  // Fetches a URI, unwraps an object
}

[lookupObject()] takes a handle and runs the whole chain for you, WebFinger discovery included. Accessors like getFollowers() behave the same way whether the value is a URI reference or an inline object, and fetched values are cached.

Vendor fragmentation gets stitched up here too. The three competing quote properties (quoteUri, _misskey_quote, quoteUrl) are unified behind one API, next to the emerging FEP-044f quote. Misskey's isCat property exists as a type, so your server can determine cat-ness with full type safety. It sounds like a joke, but a few dozen details of exactly this kind are what interoperability is actually made of.

Scene 3, revisited: the zombie post dies in one line


Delivery infrastructure first. Plug a message queue into createFederation() and delivery moves to the background, with automatic retries under exponential backoff (up to ten attempts by default). When a post goes to thousands of followers, two-stage fan-out kicks in: a single consolidated message enters the queue, and a background worker splits it into per-server delivery tasks. The publish button responds immediately.

Retries create a problem of their own: the same activity can arrive twice. Fedify keeps a 24-hour idempotence cache of processed activities, so duplicates get detected and skipped before they reach your handlers.

As for the zombie post, the fix is one option:

await ctx.sendActivity(
  { identifier: "alice" },
  "followers",           // Collects recipients from your followers collection
  deleteActivity,
  { orderingKey: post.id },  // Same key = in-order delivery per server
);

[Activities that share an orderingKey] are delivered to each receiving server in the order they were sent. A Delete can no longer overtake its Create. Activities with different keys still go out in parallel, so throughput survives.

Fedify also handles dead servers. On a 404 Not Found or 410 Gone, it stops retrying and calls a handler you register. If the delivery went to a shared inbox, you also get the list of followers behind it, so you can prune vanished accounts on the spot. Hosts that fail repeatedly trip a per-host circuit breaker that holds deliveries and probes periodically until the host recovers. It's on by default; there's nothing to configure.

Scene 4, revisited: we track the quirks so you don't


Here is how Fedify disarms the traps from scene 4:

  • Authorized fetch: chain [.authorize()] onto a dispatcher and the verified identity of the requester lands in your callback. Blocklists, private collections, whatever your app needs is plain application logic. The instance-actor deadlock has a supported pattern as well.
  • Threads and inline actors: an activity transformer, enabled by default, rewrites inline actors into URIs on the way out. You don't need to know Threads has this problem.
  • Lemmy's requirements: the custom collection API exposes a moderators collection in a few lines, and Lemmy's JSON-LD context ships preloaded.

When a new quirk surfaces in the wild, the fix lands in Fedify, not in every application separately. Each interoperability lesson gets learned once.

Scene 5, revisited: becoming unsafe takes effort


Fedify's defaults point the other way.

  • Signature verification is something you turn off (for tests), not something you remember to turn on.
  • The document loader refuses private address ranges and loopback out of the box, with DNS rebinding accounted for. To open yourself up to SSRF you have to flip an option whose very name announces it's for testing.
  • When an embedded object's origin differs from its parent document's, the accessor refuses to trust it and re-fetches from the source (based on FEP-fe34). Content spoofing is stopped at the property access level.

In a from-scratch implementation, you have to keep remembering to do things safely. In Fedify, the unsafe path is the one that takes deliberate effort. For a federated server, with its tangle of trust boundaries, that's the right way around.

Your stack stays your stack


“Fine, but what if it doesn't fit our stack?” Fedify was built to fit the stack you already have. There are thirteen web framework integrations: servers like Express, Hono, Fastify, Koa, NestJS, and Elysia, and meta-frameworks like Next.js, Nuxt, SvelteKit, Astro, SolidStart, and Fresh. Middleware handles content negotiation, so the same URL in your existing app serves HTML to browsers and JSON-LD to the fediverse.

Fedify doesn't dictate your database either. For its own storage it asks for one key–value interface, with seven adapters available (Redis, PostgreSQL, MySQL/MariaDB, SQLite, Deno KV, Cloudflare Workers KV, in-memory). Message queues come in eight flavors (PostgreSQL, Redis, AMQP/RabbitMQ, and so on), and you can implement the interface yourself if none fits. Your domain data stays in whatever database and ORM you already use.

Already running federation on another library? There are migration guides with data migration scripts for moving from activitypub-express and friends without losing your existing followers.

The core isn't the ceiling, either. Higher-level packages build on it: [@fedify/relay] gives you a complete ActivityPub relay server in a single function call, and [@fedify/backfill] reconstructs incomplete conversation threads by walking the rest of the fediverse for you.

Tools for the whole development loop


A quieter misery of federated development has always been the missing tooling. Fedify comes with tools for every stage of the loop.

[fedify init] scaffolds a project in one line, and fedify tunnel exposes your local server over HTTPS so you can test against real Mastodon. Activities your server sends can be received by fedify inbox, a disposable inbox server spun up on the spot; whatever other servers publish, you can inspect with fedify lookup. My personal favorite is fedify lookup --authorized-fetch, which generates a one-off key pair and stands up a temporary ActivityPub server just to make a signed request for an object behind secure mode. The CLI is also useful to ActivityPub developers who don't use Fedify at all.

While you write code, an ActivityPub-specific linter (@fedify/lint) catches twenty kinds of interoperability bugs, like an actor missing its inbox. Tests run without the network using mocks from [@fedify/testing]. Once the server is up, attach the debug dashboard (@fedify/debugger) with one line and watch activities and signature verification results in your browser, live. In production there's built-in OpenTelemetry instrumentation (28 span types, 37 metrics) plus a monitoring guide, and when performance matters, [fedify bench], a load-testing tool built for ActivityPub, catches regressions in CI.

As far as I know, no other ActivityPub framework ships even one of the tools in this section.

The documentation is part of the tooling. The official docs run to a thirty-chapter manual and five tutorials, and they go well past API listings. There's an operations chapter with ready-made PromQL queries and alerting rules for watching your queue backlog, and a field-guide chapter that documents de facto conventions, like which property makes your avatar show up in Mastodon, with screenshots. At two in the morning, when federation is broken and you don't know why, this is the difference between a bad night and a short one.

It's already running


Fedify is not a thought experiment. Ghost's ActivityPub service, mentioned above, is built on it. So are Encyclia, which bridges ORCID researcher records into the fediverse; SiliconBeest, running serverless on Cloudflare Workers; Typo Blue, a Korean blogging platform; Hollo, my own single-user microblogging platform; and Hackers' Pub, run by its community. Hollo, by the way, is the app from the beginning of this post: the project I once had to shelve, finished at last on the framework it forced into existence.

The tutorials give a concrete sense of scale. They walk you from a single-file server, a few dozen lines, that Mastodon can follow, through an image sharing service in roughly 750 lines that fully interoperates with Pixelfed (follows, likes, comments), up to a community platform federating both ways with the real lemmy.ml.

The fediverse needs more apps


I didn't build Fedify to mint more ActivityPub experts. Rather the opposite. I believe the fediverse will only grow beyond microblogging when developers can build federated apps without knowing ActivityPub's fine print. Signature spec transitions and JSON-LD compaction are problems that belong inside a framework, not barriers in front of someone with a new idea.

Starting takes one line:

npm init @fedify

Follow the first tutorial and by the end, Mastodon can find your server. If you get stuck, come find us in the Matrix room or GitHub Discussions. See you in the fediverse.


Where in the Fediverse are you reading this ?
Asking for a friend.
#poll #fediverse #socialmedia

  • Mastodon (90%, 73 votes)
  • GoToSocial (2%, 2 votes)
  • Akkoma (2%, 2 votes)
  • Friendica (0%, 0 votes)
  • Lemmy (0%, 0 votes)
  • PieFed (0%, 0 votes)
  • Mbin (0%, 0 votes)
  • snac2 (1%, 1 vote)
  • Pixelfed (0%, 0 votes)
  • Other (comment) (3%, 3 votes)
81 voters. Poll end: Monday, July 6, 2026, 9:32 PM


Week in Fediverse 2026-06-26


Servers

- Vernissage Server v1.39.0
- Bookwyrm v0.9.0
- Mastodon v4.6.1
- GoToSocial v0.21.3
- Ktistec v3.6.0
- snac v2.93
- Mitra v5.6.0
- Misskey v2026.6.0
- NeoDB v0.16.2.1

Clients

- Fedilab v3.42.0
- Mastodon for Android v2.13.0
- Voyager 2.47.3
- Tesseract v1.5.4
- Holos v1.10.2
- Phanpy changelog
- Rocinante: A modern, open-source Android client for BookWyrm

For developers

- Fedify v2.3.0
- Masto.js v7.12.0

Articles

- FR#168 – LLMs Join The Fediverse

-----

#WeekInFediverse #Fediverse #ActivityPub

Previous edition: mitra.social/objects/019ee1be-…


Fediverse & Social Web track at COSCUP 2026


The Fediverse & Social Web track runs on Sunday, August 9 (day 2 of
COSCUP 2026) in room TR411 at National Taiwan University of Science and
Technology (NTUST), Taipei.

Eleven sessions across the day, covering ActivityPub implementations,
governance and community building in East Asia, internationalization, and
non-Latin script support on the fediverse.

TimeSessionSpeaker
9:30 AMFederation Is Not Enough: Governance Patterns for the Open Social Web in East AsiaRoro Park
10:00 AMDecentralized by Design, Connected by Culture: Japan's Fediverse and OSS Ecosystem Through FediLUGYuki Onobuchi (@Yohei_Zuho@mstdn.y-zu.org)
10:35 AMBuilding a Fediverse on the CloudFlare Edge: SiliconBeestSAE JIN KIM (@siliconsjang@siliconbeest.sjang.dev)
11:05 AMFrom 0 to FediverseJihyeok Seo (@jihyeok@hackers.pub)
11:35 AMFeder: One ActivityPub Core, Many RuntimesJiwon Kwon (@z9mb1@hackers.pub)
1:30 PMFrom One Codebase to Many Clients: How We Turn Mastodon Instances into No-Code Mobile Apps and Help Grow the FediverseAung Kyaw Phyo, Ye Myat Thu
2:00 PMActivityPlug: a unified API layer for ActivityPub server softwareHaze (@nebuleto@hackers.pub)
2:30 PMI just wanted ruby annotations: writing in dead scripts on the living fediverseHong Minhee (洪 民憙) (@hongminhee@hollo.social)
3:00 PMVertical writing for the Mongolian script on MastodonItoh Shimon (@shimon1024@mastodon.social)
3:30 PM@小明@範例.測試, or, Fediverse handles in every languageJim DeLaHunt (@jdlh@mstdn.ca)
4:00 PMFrom CMS to Fediverse: Drupal's ActivityPub moduleJiajun Xu (@foolfitz@social.slat.org)

@COSCUP@floss.social 2026 takes place August 8–9 at NTUST, Taipei. The full schedule is at
pretalx.coscup.org/coscup-2026/schedule/.


好耶😀👍

@matt_birchler Frok 了 @nileane 的 Tangerine UI 并进行了一些更新,使其支持 Mastodon 4.6,并添加了新主题,增强了高对比度模式。@matt_birchler 表示他无法保证对 Tangerine UI 的长期维护。

#联邦宇宙 #长毛象安利大会 #社交媒体 #新闻 #Fediverse #Mastodon #News #BreakingNews


No promises long term, but I've forked @nileane's outstanding Tangerine UI and have made a few updates.

🦣 Mastodon 4.6 support
🪨 New Granite theme
🌓 Better support for high contrast mode

Read the full details below!

birchtree.me/blog/tangerine-ne…




Week in Fediverse 2026-06-19


Servers

- Gush! v0.0.39
- Hollo v0.9.5
- FitPub v1.1.0
- Mbin v1.10.0
- PeerTube v8.2.1
- Mastodon v4.6.0
- Wafrn v2026.06.02
- Ktistec v3.5.0
- ActivityPub for WordPress v9.0.1
- NeoDB v0.16.2
- NodeBB v4.13.2

Clients

- Nicolium v1.0.0
- Mastodon Bird UI v4.0.0
- Loops for Android v1.0.2.4
- Voyager v2.47.1
- Aria v1.5.4
- Loops is now on Google Play

Tools and Plugins

- PeerTube livechat plugin v14.0.3
- Canvas: A collaborative pixel canvas built for the Fediverse

Articles

- We've been hacked

-----

#WeekInFediverse #Fediverse #ActivityPub

Previous edition: mitra.social/objects/019ebd9e-…


!Friendica Admins
🌐 Rückblick: 4. Friendica-Admin-Treff

Am 15.06.2026 fand unser 4. Friendica-Admin-Treff statt.

Wieder kamen Administratoren, Instanzbetreiber und Entwickler zusammen, um sich über aktuelle Themen rund um Friendica und das Fediverse auszutauschen. Die Gespräche waren so spannend, dass die Runde bis tief in die Nacht andauerte.

Zu Gast war unter anderem @Sascha Foerster , der selbst eine Mastodon-Instanz betreibt. Gemeinsam sprachen wir über die zunehmenden Spam- und Bot-Accounts auf unseren Plattformen. Schnell wurde deutlich: Dieses Problem betrifft nicht nur Friendica, sondern das gesamte Fediverse. Ob Mastodon, Friendica oder andere Projekte – alle stehen vor ähnlichen Herausforderungen. Umso wichtiger ist der Austausch von Erfahrungen und Lösungsansätzen über die Plattformgrenzen hinweg. Vielen Dank, Sascha, für deinen wertvollen Beitrag.

Ein weiteres Thema war tags.pub. @OldKid ⁂ berichtete von seinen bisherigen Erkenntnissen und Erfahrungen. Die anschließende Diskussion war sehr aufschlussreich. @Michael 🇺🇦 äußerte sich positiv über die Person hinter dem Projekt und brachte zusätzliche Perspektiven ein. Gerade bei neuen Entwicklungen ist es wichtig, verschiedene Sichtweisen kennenzulernen und miteinander ins Gespräch zu kommen. Kommunikation ist oft der erste Schritt auf dem Weg zu guten Lösungen.

Natürlich wurde auch über Friendica selbst gesprochen. Einige Administratoren und Instanzbetreiber entwickeln bereits eigene Addons und Erweiterungen, die den Alltag erleichtern und manchmal sogar ihren Weg in den Friendica-Core finden. Als Beispiel wurde unter anderem der von @Jools entwickelte Editor genannt. Michael und @Artur Weigandt (beides Entwickler) zeigten daran Interesse und diskutierten mögliche Perspektiven.

Besonders interessant war für die anwesenden Administratoren zum Abschluss ein Einblick in die Arbeitsweise der Entwickler. Gemeinsam wurde versucht, einen Fehler einzugrenzen und dessen Ursache zu finden. Dabei konnten wir live miterleben, wie systematisch und geduldig Fehlersuche und Entwicklung im Hintergrund stattfinden.

Solche Treffen zeigen immer wieder, wie wichtig die gute Zusammenarbeit zwischen Administratoren, Instanzbetreibern und Entwicklern ist. Nur durch gegenseitiges Verständnis, offenen Austausch und gemeinsames Arbeiten kann Friendica erfolgreich weiterentwickelt werden.

Vielen Dank an alle Teilnehmer für ihre Zeit, ihre Erfahrungen und die vielen wertvollen Beiträge. Wir freuen uns bereits auf das nächste Treffen. 😊

#Friendica #Fediverse #OpenSource #Community #Administration #Mastodon #SpamAbwehr #tagspub


Week in Fediverse 2026-06-12


Servers

- Betula v1.8.0
- Bookwyrm v0.8.7
- Lemmy v0.19.19
- Mitra v5.5.0
- ActivityPub for WordPress v9.0.0
- PeerTube v8.2.1
- NeoDB v0.16.0
- flohmarkt v0.18.1
- NodeBB v4.13.0
- Mastodon 4.6 for Developers
- Discord–Fediverse Bridge: Syncs Discord forum channels with Lemmy communities over ActivityPub

Clients

- Mastodon for iOS v2026.04
- RaccoonForFriendica v1.0.0
- Nicolium v0.3.2
- Voyager v2.47.0
- Tesseract v1.5.3
- Holos v1.9.0

For developers

- Fedify v2.2.5

Protocol

- FEP-5219: Groups and permissions
- FEP-7aa9: Featuring recommendations using a dedicated collection

Articles

- Non-Commercial Social Networks

-----

#WeekInFediverse #Fediverse #ActivityPub

Previous edition: mitra.social/objects/019e9956-…


#Mitra v5.5.0

codeberg.org/silverpill/mitra/…
codeberg.org/silverpill/mitra-…

- List of followed groups, group timelines and the ability to post to a group. The list of groups can be accessed from the menu on your profile page.
- "Load conversation" item was added to the post menu (admin only). Unlike "Load replies", it loads an entire thread, not just replies to the selected post.
- Partial support for ActivityPub outbox POST (only Like activities, disabled by default).



!Friendica Admins
🌐 Erinnerung: 4. Friendica-Admin-Treff

Am kommenden Montag ist es wieder soweit:

📅 Montag, 15.06.2026
🕢 19:30 Uhr (MEZ)
💻 Online Konferenzraum

Eingeladen sind alle Friendica-Admins, Instanzbetreiber, Entwickler:innen sowie alle, die sich aktiv für Friendica interessieren.

Die letzten Treffen haben gezeigt, wie wertvoll der direkte Austausch zwischen Entwicklern und Administratoren ist. Viele Herausforderungen betreffen nicht nur einzelne Instanzen, sondern die gesamte Community.

📌 Geplante Schwerpunkte:

🛡️ Spam-Abwehr als gemeinsames Anliegen

Spam, Bot-Anmeldungen und missbräuchliche Accounts beschäftigen inzwischen viele Instanzen. Gemeinsam möchten wir Erfahrungen austauschen, bestehende Ansätze diskutieren und überlegen, wie wir Friendica-Nutzer und Administratoren künftig noch besser unterstützen können.

🏷️ tags.pub

Die neue Möglichkeit, Inhalte über tags.pub sichtbar zu machen, sorgt aktuell für Interesse und Diskussionen. Welche Chancen ergeben sich daraus? Welche Erfahrungen gibt es bereits? Und wie kann das sinnvoll im Fediverse genutzt werden?

Natürlich bleibt auch Raum für weitere aktuelle Themen, Fragen, Erfahrungen aus dem Instanzbetrieb sowie den Austausch rund um die aktuelle Friendica-Version.

Gerade Entwickler und Maintainer sind herzlich eingeladen, ihre Sichtweisen und Erfahrungen einzubringen. Ebenso freuen wir uns über jeden Administrator, der von seinen praktischen Erfahrungen berichten kann.

Je mehr Perspektiven zusammenkommen, desto wertvoller wird der Austausch für alle.

Wir freuen uns auf einen spannenden Abend mit vielen bekannten und neuen Gesichtern. 😊

🇩🇪 Die Veranstaltung findet in deutscher Sprache statt.

🇬🇧 The meeting will be held in German. An English summary of the most important discussion points and results can be published afterwards so that international Friendica admins and developers can also follow the discussion.

#Friendica #Fediverse #AdminTreff #Systemadministration #OpenSource #SocialWeb #FediverseDeutschland



@Pawlicker @Phantasm Not the whole Fediverse is social media.

Social media is all about unidirectional followers and churning out content to as many people as possible. Mastodon is social media. It's modelled after Twitter which is social media. So are basically all other microblogging server applications in the Fediverse.

In stark contrast, Hubzilla, as well as its ancestors and descendants, is not social media. It is not modelled after Twitter. It is not nomadic Mastodon with unlimited characters. It doesn't even have unidirectional following. Intentionally in all cases. Also, something that has been around for longer than Mastodon can't be modelled after Mastodon.

Rather, at its core, it's modelled after the Facebook of the 2010s. The Facebook of the 2010s was not social media. It was a social network, dedicated to bidirectional interactions between people. To this day, Facebook doesn't have unidirectional following. Instead, it has "friends" which are always bidirectional.

Likewise, Hubzilla has bidirectional "contacts" as a default. Mind you, these are nothing like your usual Fediverse microblogging mutuals. They aren't one following connection plus one being-followed connection. They're one and exactly one connection which goes both ways.

Also, unlike most other Fediverse software, Hubzilla is extremely flexible in its use-cases. Unlike on most other Fediverse server applications, Hubzilla isn't hard-coded to always be public unless it's a DM which still is quasi-public. It can very much be used for enclosed communities as well, protected by a staggeringly advanced permissions system.

Let me put it this way: BlackMastodon was a disaster. Why? Because Mastodon has nothing much between fully public and mention-driven DMs, and its only ways of self-moderation are muting, blocking and calling the mods.

BlackZilla would have been a success (unless phone apps with native mobile UIs would have been a hard requirement). It would have allowed for discussions with restricted permissions, made absolutely impenetrable even for Mastodon users. It would even have allowed for discussion groups which would have been both fully private and hidden from all directories. Most importantly, it would have empowered its users to moderate their own streams themselves with a whole arsenal of countermeasures, all the way up to the thermonuclear option of turning ActivityPub off entirely.

Just because you use software that can federate with Mastodon, doesn't mean it has to work like Mastodon, and it means even less that it has to always work like Mastodon. Mastodon is not the gold standard and reference implementation of ActivityPub. It's a highly Mastodon-centric notion that everything in the Fediverse that doesn't strictly "implement Mastodon" is broken.

By the way: The way that permissions are worded on (streams) and Forte make much clearer what they're actually for than the way they're worded on Hubzilla. They aren't always there to prevent everyone from doing things. Rather, they're there to keep your stream clean from unwanted content.

Yes, if I disallow comments on a post, anyone on Mastodon can still reply to it, not even knowing that they aren't allowed to do that. But if they do reply, who'll see that reply?

Anyone else in the conversation who's on Friendica or Hubzilla or (streams) or Forte or Lemmy or /kbin or Mbin or PieFed or anything else that knows a thing or two about enclosed threaded conversations won't. That's because they all receive the reply not from the Mastodon poster, but from me. But I don't let that reply from Mastodon in. And if I don't let it in, it won't spread to the users on the aforementioned applications.

That is the intention. And it has been since Mike Macgirvin designed Friendica 16 years ago.

Really: If Hubzilla has enclosed conversations backed by a FEP created on (streams) and an advanced permissions system, and Mastodon doesn't have either, and this causes malfunctions, it's Hubzilla that's broken.

If Mastodon has quote-post controls backed by a FEP created on GoToSocial, and Hubzilla neither has nor supports them, and this causes malfunctions, it's Hubzilla that's broken.

Simply because both Hubzilla devs oh-so-staunchly refuse to "implement Mastodon" and rip all that stuff out that Mastodon doesn't support.

It has stopped being funny long ago.

#Long #LongPost #CWLong #CWLongPost #FediMeta #FediverseMeta #CWFediMeta #CWFediverseMeta #Fediverse #Mastodon #Hubzilla #MastodonCentricity #MastodonNormativity


@Pawlicker About "reply gating": This, or something similar, has been a standard feature at least on Hubzilla, (streams) and Forte from the get-go, i.e. from their respective creation on. Hubzilla has had it since 2012. All three rely heavily on permissions for anything and everything. They can make themselves and each other hide the reply button. When someone wants to comment from Mastodon or something else that doesn't understand these permissions, these three simply reject unpermitted comments before they even reach the inbox.

On Hubzilla, the channel-wide permission to comment also includes a permission to like or dislike something. I can generally allow

  • only myself
  • only certain contacts
  • only my contacts
  • only my contacts plus those with an unapproved contact request
  • anyone on the same Hubzilla hub as me
  • anyone on Hubzilla (strangely, this does exclude (streams) channels)
  • anyone in the Fediverse
  • anyone anywhere on the Web, even without a Fediverse account


to comment on my posts.

In addition, I can turn comments on and off for specific posts. Mind you, if it's a reply, it isn't a post, it's a comment, and I've got no control over it.

On (streams) and Forte, the channel-wide permission to comment is uncoupled from the permission to like or dislike. The channel-wide options are

  • only myself plus certain contacts
  • only my contacts
  • anyone in the Fediverse
  • anyone anywhere on the Web, even without a Fediverse account

On top of that, I can generally allow comments only for a certain number of days.

Again, I can turn comments on and off for specific posts. But I can also only allow my contacts to comment on specific posts, and I can define until when comments are allowed on specific posts.

In all three cases, I can even choose to preview technically unpermitted comments and then decide whether I allow or reject them, one by one.

In other words, where I am (I'm commenting from Hubzilla), this not only has been available for longer than Mastodon has even existed, but it's deeply engrained into the culture.

About "quote gating": Friendica, Hubzilla, (streams) and Forte have all always (in Friendica's case, since 2010) had both actual quotes like on bulletin-board forums (remember the 2000s when forums were all the rage?) and Twitter-quote-tweet-style quote-posts (which literally were the only way for them to share content before they adopted Twitter-retweet-style forwarding).

The former obviously only works in comments. Whether or not it's allowed is defined by whether or not comments are allowed.

The latter doesn't have any permission setting, not even on Hubzilla, (streams) and Forte with the most advanced permissions systems in the whole Fediverse. That's because their inventor says that it's technologically impossible to keep people from forwarding or sharing your content in separate posts.

If you disallow actual quote-posts, people can still copy-paste the content of your post into a new post. Unlike when you're actually being quote-posted, you won't even notice unless they mention you. Mind you, while an estimated 60% of all Mastodon users are on iPhones, and another estimated 39% are on Android phones, 100% of all Hubzilla, (streams) and Forte users are on desktop or laptop computers where copy-paste is easy-peasy. It's pretty much impossible to disallow copy-paste, and even if it was, people would resort to screenshots.

You don't want people to quote-post your stuff? Then don't make it public. Once it's public, it's out there, and anyone can do with it whatever they please.

Nobody really misses an actual permission for quote-posts. That's also because Hubzilla, (streams) and Forte aren't primarily a home for Twitter refugees. In fact, neither of them can even understand the ruckus about quote-posts on Mastodon, and neither can Friendica users. Hardly any of them have been on Twitter at any point in the 2020s. There's no influence of Twitter culture anywhere to be found.

The typical path into Hubzilla is not Twitter > Musk buys Twitter > Mastodon > Hubzilla. Not even Twitter > Musk buys Twitter > Mastodon > Friendica > Hubzilla. It's Facebook > diaspora* > Friendica > Hubzilla. Or Facebook > Google+ > diaspora* > Friendica > Hubzilla. The typical path into (streams) is the same, but one step further beyond Hubzilla. The typical path into Forte is the same as into (streams), but another step further beyond (streams).

About the iPhone: Whether or not the iPhone is a status symbol depends on where you are.

In the USA, the iPhone is the Levi's jeans of phones. It's the Ford F-150 of phones. The allegedly all-American American phone. Most importantly, it's what everyone has.

Over here in Germany, the iPhone is the higher-class Mercedes-Benz of phones. The iPhone 15 Pro is the 2026 Mercedes-Benz-AMG E 53 of phones. The iPhone 15 Pro Max is the 2026 Mercedes-Benz-AMG S 63 E Performance of phones, slammed suspensions, standing on polished 22" Lexani wheels, muffler cut-outs always open. In American terms, it's the 2026 Cadillac Escalade-V of phones, gold-foiled, with air-ride, standing on gold-plated 26" Bellagio spinnaz. The phone made for peacocking in rap music video clips. It's the Rolex of phones. For women, it's the genuine Prada or Fendi or Louis Vuitton handbag of phones.

Well, and then there's the iPhone 4S with the cracked screen. It's the 1995 Mercedes-Benz E-Class of phones. Old, worn out, four-banger engine, often rusty as hell, may have been stolen at some point, but it's cheap. And most importantly, it's still a Benz, and it's a real Benz as opposed to "Baby Benz" C-Class and smaller. The Benz for those who need a Benz to show their folks how much of a winner they are, but who can't really afford one.

Over here, the Samsung Galaxy S is the VW Golf of phones. The Americans' Ford F-150 of phones. It's what everyone has. It's the no-brainer that you buy when you don't know what to buy, so you buy what everyone buys. Still, it's expensive for what it does. But all the other brands are akin to "cheap imports" from, what, France or Italy or Japan or Korea or Romania.

The choice of the hardcore nerds in the homeland of Chaos Computer Club and Chaos Communication Congress is never something that can only run stock Android. It's an iPhone even less. They rather buy a Google Pixel, and the first thing they do is root it immediately and install GrapheneOS. Or if they refuse to buy something from Google and/or run a Google OS (de-Googled or not), they acquire a Sony Experia, root it and install SailfishOS. Or they go straight for a Fairphone or even the new Jolla Phone or something like that. I'm pretty sure many want a true successor to the Nokia N900.

If Google locks Android down, these nerds won't flock to Apple. Some may switch to SailfishOS which, on officially supported phones, has the Aliendalvik compatibility layer for Android apps, but only with F-Droid and neither with the Google Play Store proper nor with Micro-G. Many more will go entirely elsewhere like PostmarketOS or PureOS, also seeing as SailfishOS is payware that's half proprietary and closed-source. Or they'll forgo mobile phones entirely or keep old phones alive for as long as they can.

About iOS apps: I guess the notion that the Fediverse equals Mastodon, something that the majorty of Mastodon users believe, is particularly wide-spread among iPhone users. And if it isn't only Mastodon, it doesn't extend beyond Mastodon, Pixelfed and PeerTube. Excluding Pixelfed and PeerTube, if Mastodon can't do it, the Fediverse as a whole can't. I mean, on top of the fact that apps made for Mastodon generally only support Mastodon features because the Mastodon Client API only supports Mastodon features, and the Mastodon Client API is all that these apps understand.

It's particularly bad for Friendica users. If they're on Android, they may opt for a Mastodon app. There are several Android apps for Mastodon that have been reported to work with Friendica. Or they may want to try one of the dedicated Friendica apps which are at various levels of unfinished. Or they may choose the middle-ground and use Fedilab.

But if they're on an iPhone, they'll discover that literally not even a single Mastodon iOS app works with Friendica. There is no Fedilab. And the iOS version of RaccoonForFriendica requires Test Flight, and it's probably even more incomplete than the Android version.

In general, iPhone apps are rarely developed for the same reasons as Android apps. Most Android Fediverse apps are open-source and under a free license, and they're also or exclusively available on F-Droid. They're developed by FLOSS enthusiasts/idealists. However, these people don't develop for iOS. That's because the Apple App Store is inherently hostile towards free software, and it's completely incompatible with all versions of the GNU General Public License.

Also, as you've already pointed out, you absolutely need a Mac to develop iOS apps. But if someone releases FLOSS apps on F-Droid, you can bet they're running GNU/Linux at home (more often Arch or a derivative than you may think), and they won't touch any corporate-made, closed-source OS with a 10-foot barge pole. They may even steer clear of anything where Novell, Red Hat or Canonical is involved.

With hobbyist FLOSS enthusiasts out of the way of developing iPhone apps, this is only ever done by those who do it for money. Or fame and social status (same reason why they always have a fairly new iPhone). Or both. But then they discovered that the Fediverse, to them at least, is a hive of radical leftist tech nerds whom you can't impress with expensive bling-bling from big American gigacorps. They failed to gather the umpteen thousand followers they wanted. So they left for greener pastures: Bluesky. Or they even went back to their hundreds of thousands of followers on 𝕏. Doing so, they also abandoned their iPhone app development.

By the way, none of this affects Hubzilla, (streams) and Forte. For starters, just like Friendica, all four can be installed as Progressive Web Apps. However, at least in the case of these three, there is no alternative to the Web interface whatsoever. There's an old Android app for Hubzilla named Nomad, but it's only available on F-Droid, it hasn't been worked on since December, 2019, it only runs on older Android versions and Aliendalvik, and it's only a wrapper for the Web interface anyway. For (streams) and Forte, there's zilch.

There has been some talk about developing a native mobile Hubzilla app. It's kind of difficult, though. Generally, Hubzilla users use Hubzilla on desktop OS's. They can't imagine people daily-driving phones as their main or only end-user devices, so they think that a Hubzilla app only needs the features one would need when out and about because everyone will go back to their desktop or laptop computers anyway when they're back home.

In reality, many users of the Hubzilla app will only use that app. They won't use Hubzilla's Web interface in a browser. They won't use it on a desktop or laptop computer either, usually because they simply don't have one. They'll resort to that app for everything. In fact, they'll perceive Hubzilla as a phone app rather than a Fediverse server application. This means that a Hubzilla mobile app will inevitably have to cover all of Hubzilla's features except those that really don't make sense in a phone app (e.g. the PDL editor). But a fully-featured Hubzilla app would be so complex, it'd make infamous K-9 Mail pale in comparison.

Licensing is the least problem here. Hubzilla and Forte are released under the MIT license, (streams) was released into the public domain. So I guess putting an app for either of them under the MIT license would be an option, one that's fairly compatible with the Apple App Store even. It's just that this app would be bound to be an absolute monster.

#Long #LongPost #CWLong #CWLongPost #FediMeta #FediverseMeta #CWFediMeta #CWFediverseMeta #Fediverse #Mastodon #Friendica #Hubzilla #Streams #(streams) #Forte #QuotePost #QuotePosts #QuoteTweet #QuoteTweets #QuoteToot #QuoteToots #QuoteBoost #QuoteBoosts #QuotedShares #QuotePostDebate #QuoteTootDebate #ReplyControl #Permissions #MastodonApp #MastodonApps #FediverseApp #FediverseApps #iOS #iOSApp #iOSApps #iPhone #iPhoneApp #iPhoneApps #Android #AndroidApp #AndroidApps


📢 Ein kleiner Hinweis zum Thema Instanz-Administration im Fediverse

In den letzten Tagen ist mir wieder bewusst geworden, dass es rund um die Rolle von Administratoren im Fediverse manchmal Missverständnisse gibt. Deshalb möchte ich dazu ein paar allgemeine Worte schreiben.

Egal ob Friendica, Mastodon, Hubzilla, Sharkey, PeerTube, BookWyrm oder eine andere Fediverse-Anwendung:

🛠️ Die Aufgabe eines Instanzbetreibers besteht in erster Linie darin, die technische Plattform bereitzustellen, zu warten und bei Problemen zu unterstützen.

Was Administratoren in der Regel nicht können:

❌ Passwörter einsehen
❌ Private Nachrichten lesen, die nicht öffentlich sind
❌ Sich einfach in Benutzerkonten einloggen
❌ Im Namen anderer Nutzer Beiträge verfassen

Viele Anwendungen im Fediverse bieten sehr umfangreiche Funktionen und Einstellungsmöglichkeiten. Gerade Friendica und Hubzilla verfügen über zahlreiche Optionen, die manchmal zu Verwirrung führen können. Das ist völlig normal.

💡 Deshalb mein Rat:

Wenn euch etwas merkwürdig vorkommt, eine Einstellung unklar ist oder ihr eine Meldung nicht versteht, dann wendet euch direkt an eure Instanzbetreiber oder die Community. Die meisten Administratoren helfen gern weiter und können oft schnell erklären, was hinter einer Funktion oder einer Fehlermeldung steckt.

Das Fediverse lebt von Offenheit, Transparenz und gegenseitiger Unterstützung. Deshalb sollten wir bei Unsicherheiten lieber nachfragen, bevor Vermutungen zu Missverständnissen, Gerüchten oder falschen Annahmen führen.

🤝 Reden hilft fast immer weiter.

Ich wünsche euch einen schönen Tag und viele positive Begegnungen im Fediverse.

#Fediverse #Friendica #Mastodon #Hubzilla #PeerTube #BookWyrm #OpenSocialWeb #Datenschutz #DigitaleSelbstbestimmung


@Michael 🇺🇦 has implemented a nice new extension of following tags into Friendica. In the development branch (aimed to be released as 2026.08) it is now possible to automatically follow the tags from tags.pub by @Evan Prodromou 🥳

Admins of Friendica nodes can activate this in the settings of their nodes, down below in the Relay section. All the tags that are selected there plus user tags if that option is enabled, will then be automatically followed at tags.pub as relays (and unfollowed it one removes a tag from the list).

Lets see if my raspi can handle that 🫣

#Friendica #fediverse /cc @Friendica Admins


Week in Fediverse 2026-06-05


Servers

- Mastodon v4.5.11
- Hollo v0.9.3
- Wafrn v2026.06.01
- Ktistec v3.4.1
- tootik v0.23.1
- NeoDB v0.15.2
- wanderer v0.19.2
- Lemmy Development Update May 2026
- FitPub: A self-hosted fitness tracking platform for the Fediverse
- Harmony: Discord-style servers and chat with ActivityPub
- Menuverse: A federated menu system for canteens and institutions
- LAUTI: A calendar software where one can publish events, groups and places

Clients

- Pachli v3.7.0
- Elk v1.0.0
- Fedilab v3.41.0
- tooi v0.26.0
- Pixelix v4.4.0
- Aria v1.5.3
- Tesseract v1.5.0
- Interstellar v0.11.4
- Holos v1.8.0
- P2Play v0.10.1

For developers

- APx v0.25.0

Protocol

- FEP-bebd: Follow Invites

Articles

- Prikbord: Federated calendar for events in Rotterdam
- small details in my mastodon client that i wanted more people to notice
- From simple afterthought to over-engineered software
- FR#165 – Fediverse News May 2026

-----

#WeekInFediverse #Fediverse #ActivityPub

Previous edition: mitra.social/objects/019e7560-…


The media in this post is not displayed to visitors. To view it, please go to the original post.

Following the @EUCommission Tech Sovereignty and Open Source Strategy (and Mastodon’s direct mention within it!) announced this week…

Our team is proud to have signed and contributed to the drafting of the European Social Stack Open Declaration alongside our peers in the #SocialWeb and #Fediverse: @anewsocial, @eurosky.social, @newsmast, Save Social, and @swf.

We are a movement, and stronger together.

Read the declaration, add your signature, and share: european.social/


Hexo 博客接入 Fediverse —— Hatsu + Vercel 踩坑记

本文记录了基于 Vercel 部署的 Hexo 静态博客与 Fediverse(通过 Hatsu 后端)实现双向互通的踩坑历程。针对 Fedi 软件对文章 URL 识别失败以及 Vercel 路由跳转丢失斜杠(404)的痛点,通过编写 Vercel 边缘函数结合路由规则,成功实现了自动重定向跳转。同时,还在博客中集成了 Mastodon 评论系统并开源了修改后的 Butterfly 主题。

blog.samhou.moe/hexo-fediverse…

#web开发 #fediverse #web #html #hexo #vercel #hatsu #javascript





The media in this post is not displayed to visitors. To view it, please go to the original post.

Fedizens! Please send me your favourite meme which shows something important about the #Fediverse

I'll go first:


Week in Fediverse 2026-05-29


Servers

- PeerTube v8.2.0
- Bookwyrm v0.8.6
- Gush! v0.0.38
- Hollo v0.9.2
- Mitra v5.4.0
- Ktistec v3.4.0
- Loops v1.0.0-beta.12
- tootik v0.23.0
- NeoDB v0.15.0
- NodeBB v4.12.0
- Catodon v26.5.0
- TinyAP v0.1.9

Clients

- Fedilab v3.40.2
- Nicolium v0.3.1
- Coho v1.2
- Interstellar v0.11.3
- Aria v1.5.2
- Loops Mobile App v1.0.2.2
- Mitra Mini v0.4.1

Tools and Plugins

- Event Bridge for ActivityPub v1.3.0 (WordPress plugin)
- hugo-ap-comments: Embed Mastodon / Fediverse replies as a comment section on your static Hugo site

Articles

- Stop Posting to Platforms — Turn Your Website into a Fediverse Node

-----

#WeekInFediverse #Fediverse #ActivityPub

Previous edition: mitra.social/objects/019e5172-…


#Mitra v5.4.0

codeberg.org/silverpill/mitra/…
codeberg.org/silverpill/mitra-…

- All users can load latest and featured posts from remote profiles. Previously this action was only available to admins.
- A category can be specified when adding an emoji to local collection. Mitra Web doesn't support emoji categories yet, but categorization should work in other clients.
- Improved reliability of the media proxy.
- Added command groups: account, ap, config, emoji, filter, invite, media. They are currently hidden from the main list of commands. Use help subcommand to view information about a group: mitra filter help.



The consultation that could see digital ID checks sweep across the Internet ends today ⌛️

ORG has submitted a response, outlining the threats to privacy and freedom of expression posed by the government's proposals.

We set out a better way forward that tackles the cause of online harms.

Read more ⬇️

openrightsgroup.org/publicatio…

#onlinesafety #consultation #socialmedia #privacy #ageverification #digitalID #freedomofexpression #digitalrights #interoperability #fediverse #ukpolitics #ukpol


Node Statistic : horche.demkontinuum


Currently this node is aware of 22,565 nodes (2,225,753 active users last month, 2,354,247 active users last six months, 17,973,915 registered users in total)


Post your statistics to the Fediverse

#horche #Fediverse #Friendica @Friendica Admins


Week in Fediverse 2026-05-22


Servers

- Gush! v0.0.37
- Stegodon v1.8.5
- Iceshrimp.NET v2026.1.1-beta
- Iceshrimp v2026.5.1
- Hollo v0.9.0
- Mastodon v4.5.10
- PeerTube v8.1.6
- Sharkey v2025.4.7
- Hubzilla v11.2.1
- Friendica v2026.05
- Ktistec v3.3.9
- Smithereen v1.0.0
- Vernissage Server v1.38.0
- ActivityPub for WordPress v8.3.0
- Misskey v2026.5.4
- tootik v0.22.2
- NeoDB v0.14.4
- Open beta testing for Lemmy 1.0.0
- Trunk & Tidbits, April 2026
- XMPP/ActivityPub Bridge: Chat between XMPP and the Fediverse
- Cookifed: A free and federated recipes management app and cooking social network

Clients

- Nicolium v0.3.0
- Fedilab v3.40.1
- Aria v1.5.1
- Blorp v1.14.0
- Impressia v3.2.0
- Holos v1.6.0

Tools and Plugins

- Analytodon: Analytics for Mastodon

For developers

- Fedify v2.2.3
- BotKit v0.4.2

Protocol

- Basic Profile for Social API Servers
- FEP-baf5: Administrator Collection

Articles

- the may 2026 fedi software vulnerability
- Never Lose a Toot Again: Full-Text Search for Your Mastodon Feed

-----

#WeekInFediverse #Fediverse #ActivityPub

Previous edition: mitra.social/objects/019e2d21-…


Week in Fediverse 2026-05-15


Servers

- PieFed v1.6.23
- Hollo v0.8.3
- Ktistec v3.3.8
- Wafrn v2026.05.01
- snac v2.92
- Mitra v5.3.0
- Iceshrimp v2026.4.2
- Hollo v0.8.4
- Vernissage v1.37.0
- Bonfire v1.0.3
- Hometown v1.2.1
- tootik v0.22.1
- NeoDB v0.14.2
- NodeBB v4.11.3
- PieFed v1.6.23
- Wanderer v0.19.0
- Aktor: A headless, Mastodon-compatible ActivityPub server

Clients

- FediLab v3.40.0
- tooi v0.25.0
- Holos v1.5.6
- Phanpy changelog
- lemmy-tray: Read lemmy posts in system tray

Tools and Plugins

- FediFetcher v7.1.18
- slurp v1.1.1

For developers

- BotKit v0.4.1
- APx v0.24.0

Articles

- There Are a Million Fediverses. Some of Them Are Louder than Others

-----

#WeekInFediverse #Fediverse #ActivityPub

Previous edition: mitra.social/objects/019e0915-…


Week in Fediverse 2026-05-08


Servers

- Vernissage v1.35.0
- Pleroma v2.10.2
- Funkwhale v2.0.2
- Betula v1.7.0
- Hollo v0.8.2
- Akkoma v2026.05
- Ktistec v3.3.7
- NodeBB v4.11.0
- Misskey v2026.5.1
- Ties v0.2.1
- PieFed v1.6.21
- Lemmy Development Update April 2026

Clients

- Nicolium v0.2.1
- Fedilab v3.39.0
- Pachli v3.6.1
- Mastodon for Android v2.12.0
- Coho v1.0
- PixelDroid v1.0.beta42
- Blorp v1.13.0
- Mitra Mini v0.4.0
- Holos v1.5.5

Tools and Plugins

- Fediverse Redirect v1.15.1

For developers

- APx v0.23.0

Articles

- Join the fediverse! zine
- A Bridge to Somewhere: How to Link Your Mastodon, Bluesky, or Other Federated Accounts

-----

#WeekInFediverse #Fediverse #ActivityPub

Previous edition: mitra.social/objects/019de52a-…


AI-assisted moderation in the fediverse is happening. Now what?


UPDATE: proof is at piefed.social/c/fediverse/p/20…

I recently discovered that some popular federated instances have been using LLM-assisted moderation tooling that evaluates whether someone has said something bannable. They do this by running a script/app that sends the user’s comment history to OpenAI with the question “analyze this content for evidence of *specific political ideology* sentiment. Also identify any *related political ideology* tropes“.

OpenAI’s LLM (they’re using GPT-5.3-mini) then responds with something like:

Below is a structured analysis of the uploaded content, focused on *specific ideology* rhetoric. This is an analytic classification, not a moral judgement.

1. Overall Pattern

blah blah

2. Evidence of *specific ideology* sentiment

blah blah

3. several pages more, concluding with (in this case)

Yes, the content contains:

Clear *specific ideology* alignment
Repeated *specific ideology* framing, especially through blah blah
Extensive use of canonical *ideology* tropes, in blah blah domains.

The pattern is not accidental or isolated; it is consistent, internally coherent, and reproduces well‑documented *country with the ideology* public‑diplomacy narratives rather than neutral analysis.

===========================================

FULL DUMP OF COMMENT HISTORY BELOW

===========================================

Date: 2026-xx-xxT0xxxxx

Comment ID: instance.told/comment/2497xxxx

Post ID: 603xxx

Community ID: 1xx

Content of the comment has been redacted

========================================

Date: 2026-xx-xxT0xxxxx

Comment ID: instance.told/comment/2497xxxx

Post ID: 603xxx

Community ID: 1xx

Content of the comment has been redacted

========================================

Date: 2026-xx-xxT0xxxxx

Comment ID: instance.told/comment/2497xxxx

Post ID: 603xxx

Community ID: 1xx

Content of the comment has been redacted

========================================


and so on, hundreds of comments.

I have not named the instances or people involved, to give them time to consider the results of this discussion, make any corrective changes they want and disclose their practices at their own pace and in their own way. I have also redacted the evidence to avoid personal attacks and dogpiling. Let’s focus on the system, not the individuals involved. Today these instances are using it and maybe we’re ok with that because it’s being used by communities we agree with but what if people we strongly disagree with used it on their instances tomorrow?

The use and existence of this tooling raises a lot of questions.

What are the risks? Fedi moderators are often unsupervised, untrained volunteers and these are powerful tools.

What safeguards do we need?

Would asking a LLM “please evaluate this person’s political opinions” give different results than “find evidence we can use to ban them” (as used in the cases I’ve seen)?

What are our transparency expectations?

Is this acceptable and normal?

Should this tooling be disclosed? (it was not – should it have been?)

If you were given a choice, would you have opted out of it?

Can we opt out?

Are there GDPR implications? Privacy implications? Should these tools be described in a privacy policy?

Are private messages being scanned and sent to OpenAI?

How long should these assessments be retained and can we request to see it, or ask for it to be deleted?

Once the user’s comments are sent to OpenAI, is it used to train their models?

What will the effect be on our discourse and culture if people know they are being politically profiled?

Where are the lines between normal moderation assistance tools, political profiling and opaque 3rd-party data processing?

I hope that by chewing over these questions we can begin to establish some norms and expectations around this technology. The fediverse doesn’t have any centralized enforcement so we need discussions like this to develop an awareness of what people want in terms of disclosure, privacy, consent and acceptable use. Then people can make choices about which instances they join and which ones they interact with remotely.

And of course there are the other issues with LLMs relating to environmental sustainability, erosion of worker’s rights, increasing the cost of living and on and on. I can’t see PieFed adding any functionality like this anytime soon. But it’s happening out there anyway so now we need to talk about it.

What do you make of this?
#fediverse