Skip to content

Piero Bosio Social Web Site Personale Logo Fediverso

Social Forum federato con il resto del mondo. Non contano le istanze, contano le persone

Would an ActivityPub enabled fediverse alternative of Discord be possible?

Fediverse
20 14 45
  • There seems to be a serious lack of a Discord equivalent fediverse platform unlike other social media alternatives. Most of the closest options are either too overwhelming in UI/UX for majority of people coming from Discord, missing deal-breaking features like video calling or are not federated.

    Could it due to some technical limitation of the ActivityPub protocol? I skimmed through its documentation and I get the impression that content may not be accommodating of instant messaging without unconventional modifications. It would also be troublesome to federate massive bunch of messages across (physical) servers in real time.

    If it were truly possible to create a Discord alternative, what would it take to make it compatible with the fediverse while also ensuring it feels functional and intuitive for migrating users and not pose too much of a resource drain for self hosters?

    Edit: Modified title to clarify post talking about ActivityPub in particular

  • There seems to be a serious lack of a Discord equivalent fediverse platform unlike other social media alternatives. Most of the closest options are either too overwhelming in UI/UX for majority of people coming from Discord, missing deal-breaking features like video calling or are not federated.

    Could it due to some technical limitation of the ActivityPub protocol? I skimmed through its documentation and I get the impression that content may not be accommodating of instant messaging without unconventional modifications. It would also be troublesome to federate massive bunch of messages across (physical) servers in real time.

    If it were truly possible to create a Discord alternative, what would it take to make it compatible with the fediverse while also ensuring it feels functional and intuitive for migrating users and not pose too much of a resource drain for self hosters?

    Edit: Modified title to clarify post talking about ActivityPub in particular

    Just fyi there is matrix which is federated but it doesn't use activity pub protocol and it's not directly a drop in replacement discord. Voice/ video/ screen sharing aren't quite on the same level as discord.

  • There seems to be a serious lack of a Discord equivalent fediverse platform unlike other social media alternatives. Most of the closest options are either too overwhelming in UI/UX for majority of people coming from Discord, missing deal-breaking features like video calling or are not federated.

    Could it due to some technical limitation of the ActivityPub protocol? I skimmed through its documentation and I get the impression that content may not be accommodating of instant messaging without unconventional modifications. It would also be troublesome to federate massive bunch of messages across (physical) servers in real time.

    If it were truly possible to create a Discord alternative, what would it take to make it compatible with the fediverse while also ensuring it feels functional and intuitive for migrating users and not pose too much of a resource drain for self hosters?

    Edit: Modified title to clarify post talking about ActivityPub in particular

    What about Matrix and XMPP?

  • There seems to be a serious lack of a Discord equivalent fediverse platform unlike other social media alternatives. Most of the closest options are either too overwhelming in UI/UX for majority of people coming from Discord, missing deal-breaking features like video calling or are not federated.

    Could it due to some technical limitation of the ActivityPub protocol? I skimmed through its documentation and I get the impression that content may not be accommodating of instant messaging without unconventional modifications. It would also be troublesome to federate massive bunch of messages across (physical) servers in real time.

    If it were truly possible to create a Discord alternative, what would it take to make it compatible with the fediverse while also ensuring it feels functional and intuitive for migrating users and not pose too much of a resource drain for self hosters?

    Edit: Modified title to clarify post talking about ActivityPub in particular

    Isn't that Matrix?

    ActivityPub wouldn't work because it's not a messaging protocol. It's a publishing protocol. The closest thing you have is Lemmy- where you have a server (instance) with channels (communities).

    It'll be easier to achieve something like this using SMTP (email protocol) than with ActivityPub.

    Matrix and XMPP are your best bets (although XMPP doesn't necessarily natively have video call, usually you'll have an accompanying TURN server)

    What you can do with email, xmpp and the fediverse is have the same username. It is possible for someone to make a platform which gives you one name and it accepts email, xmpp and fedi. Unfortunately, Matrix, for some strange reason uses the format of @name:server instead of the standard name@server (activitypub might use @name@server but that's close enough and a lot of lemmy frontends don't even care for the initial @. In reality that initial @ is probably just being used to ping them, now realising.)

  • There seems to be a serious lack of a Discord equivalent fediverse platform unlike other social media alternatives. Most of the closest options are either too overwhelming in UI/UX for majority of people coming from Discord, missing deal-breaking features like video calling or are not federated.

    Could it due to some technical limitation of the ActivityPub protocol? I skimmed through its documentation and I get the impression that content may not be accommodating of instant messaging without unconventional modifications. It would also be troublesome to federate massive bunch of messages across (physical) servers in real time.

    If it were truly possible to create a Discord alternative, what would it take to make it compatible with the fediverse while also ensuring it feels functional and intuitive for migrating users and not pose too much of a resource drain for self hosters?

    Edit: Modified title to clarify post talking about ActivityPub in particular

    Is Discord social media? Social sure, but not media really.
    It always seemed to be more a live communication/chat app to me.

  • There seems to be a serious lack of a Discord equivalent fediverse platform unlike other social media alternatives. Most of the closest options are either too overwhelming in UI/UX for majority of people coming from Discord, missing deal-breaking features like video calling or are not federated.

    Could it due to some technical limitation of the ActivityPub protocol? I skimmed through its documentation and I get the impression that content may not be accommodating of instant messaging without unconventional modifications. It would also be troublesome to federate massive bunch of messages across (physical) servers in real time.

    If it were truly possible to create a Discord alternative, what would it take to make it compatible with the fediverse while also ensuring it feels functional and intuitive for migrating users and not pose too much of a resource drain for self hosters?

    Edit: Modified title to clarify post talking about ActivityPub in particular

    Discord has both private and public channels. I won't bother considering their threaded discussion offerings, because they're absolutely horrendous.

    ActivityPub is primarily public. You have scoped visibility that enables things like private messaging, but there is no implementation that allows for federated private group discussions.

    There are proposals and a few implementations, but they all rely on everybody else to implement the same proposal, otherwise messages leak out, and that defeats the entire assumption of the private group.

    It's not an unsolvable problem, merely one that hasn't been successfully solved yet.

    As for whether AP is a good fit... It'll work. At the end of the day you're exchanging messages. Whether they're long form or chat messages makes little difference.

  • Isn't that Matrix?

    ActivityPub wouldn't work because it's not a messaging protocol. It's a publishing protocol. The closest thing you have is Lemmy- where you have a server (instance) with channels (communities).

    It'll be easier to achieve something like this using SMTP (email protocol) than with ActivityPub.

    Matrix and XMPP are your best bets (although XMPP doesn't necessarily natively have video call, usually you'll have an accompanying TURN server)

    What you can do with email, xmpp and the fediverse is have the same username. It is possible for someone to make a platform which gives you one name and it accepts email, xmpp and fedi. Unfortunately, Matrix, for some strange reason uses the format of @name:server instead of the standard name@server (activitypub might use @name@server but that's close enough and a lot of lemmy frontends don't even care for the initial @. In reality that initial @ is probably just being used to ping them, now realising.)

    Matrix just isn't up to it. It doesn't function the same really. It doesn't feel the same.

  • Isn't that Matrix?

    ActivityPub wouldn't work because it's not a messaging protocol. It's a publishing protocol. The closest thing you have is Lemmy- where you have a server (instance) with channels (communities).

    It'll be easier to achieve something like this using SMTP (email protocol) than with ActivityPub.

    Matrix and XMPP are your best bets (although XMPP doesn't necessarily natively have video call, usually you'll have an accompanying TURN server)

    What you can do with email, xmpp and the fediverse is have the same username. It is possible for someone to make a platform which gives you one name and it accepts email, xmpp and fedi. Unfortunately, Matrix, for some strange reason uses the format of @name:server instead of the standard name@server (activitypub might use @name@server but that's close enough and a lot of lemmy frontends don't even care for the initial @. In reality that initial @ is probably just being used to ping them, now realising.)

    although XMPP doesn’t necessarily natively have video call, usually you’ll have an accompanying TURN server

    The same is true for Matrix and the popular Ejabberd xmpp server has a Stun/Turn server built in, which makes it even easier to setup than what you have on Matrix.

    P.S.: Matrix also isn't a messaging protocol. It is a distributed database protocol that has been abused for making a messenger with it.

  • Matrix just isn't up to it. It doesn't function the same really. It doesn't feel the same.

    You can't choose what order channels are in, for one thing

  • Matrix just isn't up to it. It doesn't function the same really. It doesn't feel the same.

    That might not be a bad thing. I hate Discord. That might come due to its usage though. It's just not made to organize technical support.

  • That might not be a bad thing. I hate Discord. That might come due to its usage though. It's just not made to organize technical support.

    Well yes, that's the problem. Matrix is just used for tech/troubleshoot issues and it's buggy as hell.

    It isn't a social experience like discord. It is a gap in the fediverse

  • There seems to be a serious lack of a Discord equivalent fediverse platform unlike other social media alternatives. Most of the closest options are either too overwhelming in UI/UX for majority of people coming from Discord, missing deal-breaking features like video calling or are not federated.

    Could it due to some technical limitation of the ActivityPub protocol? I skimmed through its documentation and I get the impression that content may not be accommodating of instant messaging without unconventional modifications. It would also be troublesome to federate massive bunch of messages across (physical) servers in real time.

    If it were truly possible to create a Discord alternative, what would it take to make it compatible with the fediverse while also ensuring it feels functional and intuitive for migrating users and not pose too much of a resource drain for self hosters?

    Edit: Modified title to clarify post talking about ActivityPub in particular

    It's totally possible to make a true 1-1 competitor to Discord but no one has done it yet.

    Nextcloud Talk is probably the closest thing with federation. But Nextcloud is notoriously complicated to host. And for some reason super unpopular outside of Europe.

    Stoat (formerly Revolt) is very close, both in functionality and UI. But is not federated (and has no plans to) and for some reason not very popular. Also doesn't come with the wealth of configuration and moderation tools that Discord does.

    Matrix works but it's super slow, bug-ridden, and complicated to use.

    Zulip is similar but I've used it fairly extensively and still have no idea WTF is happening. Also not federated.

    Of course there's always IRC and whatever other ancient comms tools that still work fine but are very dated and lack functionality.

  • Matrix just isn't up to it. It doesn't function the same really. It doesn't feel the same.

    In what ways?

  • It's totally possible to make a true 1-1 competitor to Discord but no one has done it yet.

    Nextcloud Talk is probably the closest thing with federation. But Nextcloud is notoriously complicated to host. And for some reason super unpopular outside of Europe.

    Stoat (formerly Revolt) is very close, both in functionality and UI. But is not federated (and has no plans to) and for some reason not very popular. Also doesn't come with the wealth of configuration and moderation tools that Discord does.

    Matrix works but it's super slow, bug-ridden, and complicated to use.

    Zulip is similar but I've used it fairly extensively and still have no idea WTF is happening. Also not federated.

    Of course there's always IRC and whatever other ancient comms tools that still work fine but are very dated and lack functionality.

    The Stoat development cycle is really, really slow. This is why it's just fallen away.

  • Its buggy, it just doesn't really look like Discord. It is a chore for new users to use. There's no useful community discovery.

  • Its buggy, it just doesn't really look like Discord. It is a chore for new users to use. There's no useful community discovery.

    Don’t go looking for a 1 to 1 drop in. That mindset won’t work much. Same case wit expecting windows to work the same as windows: they’re just different and have to be learned in their own ways.

  • Is Discord social media? Social sure, but not media really.
    It always seemed to be more a live communication/chat app to me.

    Many people use it as forums.

  • Don’t go looking for a 1 to 1 drop in. That mindset won’t work much. Same case wit expecting windows to work the same as windows: they’re just different and have to be learned in their own ways.

    Right, but it almost doesn't matter because no-one is actually using matrix in the same way they might use Discord. It just isn't being used socially for hobbies and interests and a part of that is it's design and bugs and tedium getting set up.

  • It's totally possible to make a true 1-1 competitor to Discord but no one has done it yet.

    Nextcloud Talk is probably the closest thing with federation. But Nextcloud is notoriously complicated to host. And for some reason super unpopular outside of Europe.

    Stoat (formerly Revolt) is very close, both in functionality and UI. But is not federated (and has no plans to) and for some reason not very popular. Also doesn't come with the wealth of configuration and moderation tools that Discord does.

    Matrix works but it's super slow, bug-ridden, and complicated to use.

    Zulip is similar but I've used it fairly extensively and still have no idea WTF is happening. Also not federated.

    Of course there's always IRC and whatever other ancient comms tools that still work fine but are very dated and lack functionality.

    Nextcloud talk has federation?

  • Many people use it as forums.

    Except it's completely gated behind Discord corporate servers, unsearchable outside of Discord, and all ownership lies with... you guessed it, Discord.

    But oooh aah Nitro....


Gli ultimi otto messaggi ricevuti dalla Federazione
Post suggeriti
  • 0 Votes
    9 Posts
    51 Views
    After I said bye to everyone night one, I left to head back to the Boiling the Ocean flavored AirBnB (what a sentence) and got to talk @cas and @tbernard and crew about some of the happenings in the @postmarketOS and @gnome worlds.
  • 0 Votes
    1 Posts
    7 Views
    DI-Day im #c3d2Der @c3d2 lädt zu mehr digitaler Unabhängigkeit ein und wir kommen mit vorbei.Ihr habt Fragen zu freien Messengern wie #Matrix oder #XMPP, #Linux, dem #Fediverse oder anderen #OpenSource-Themen? Dann kommt gern am Sonntag den 4. Januar ab 14:00 Uhr in die Räume des c3d2, Riesaer Str. 32, #Dresden.#DIDay #DIDayHelpdesk #DIDAySprechstunde
  • 0 Votes
    1 Posts
    8 Views
    Fedify 1.10.0: Observability foundations for the future debug dashboard Fedify is a #TypeScript framework for building #ActivityPub servers that participate in the #fediverse. It reduces the complexity and boilerplate typically required for ActivityPub implementation while providing comprehensive federation capabilities. We're excited to announce #Fedify 1.10.0, a focused release that lays critical groundwork for future debugging and observability features. Released on December 24, 2025, this version introduces infrastructure improvements that will enable the upcoming debug dashboard while maintaining full backward compatibility with existing Fedify applications. This release represents a transitional step toward Fedify 2.0.0, introducing optional capabilities that will become standard in the next major version. The changes focus on enabling richer observability through OpenTelemetry enhancements and adding prefix scanning capabilities to the key–value store interface. Enhanced OpenTelemetry instrumentation Fedify 1.10.0 significantly expands OpenTelemetry instrumentation with span events that capture detailed ActivityPub data. These enhancements enable richer observability and debugging capabilities without relying solely on span attributes, which are limited to primitive values. The new span events provide complete activity payloads and verification status, making it possible to build comprehensive debugging tools that show the full context of federation operations: activitypub.activity.received event on activitypub.inbox span — records the full activity JSON, verification status (activity verified, HTTP signatures verified, Linked Data signatures verified), and actor information activitypub.activity.sent event on activitypub.send_activity span — records the full activity JSON and target inbox URL activitypub.object.fetched event on activitypub.lookup_object span — records the fetched object's type and complete JSON-LD representation Additionally, Fedify now instruments previously uncovered operations: activitypub.fetch_document span for document loader operations, tracking URL fetching, HTTP redirects, and final document URLs activitypub.verify_key_ownership span for cryptographic key ownership verification, recording actor ID, key ID, verification result, and the verification method used These instrumentation improvements emerged from work on issue #234 (Real-time ActivityPub debug dashboard). Rather than introducing a custom observer interface as originally proposed in #323, we leveraged Fedify's existing OpenTelemetry infrastructure to capture rich federation data through span events. This approach provides a standards-based foundation that's composable with existing observability tools like Jaeger, Zipkin, and Grafana Tempo. Distributed trace storage with FedifySpanExporter Building on the enhanced instrumentation, Fedify 1.10.0 introduces FedifySpanExporter, a new OpenTelemetry SpanExporter that persists ActivityPub activity traces to a KvStore. This enables distributed tracing support across multiple nodes in a Fedify deployment, which is essential for building debug dashboards that can show complete request flows across web servers and background workers. The new @fedify/fedify/otel module provides the following types and interfaces: import { MemoryKvStore } from "@fedify/fedify"; import { FedifySpanExporter } from "@fedify/fedify/otel"; import { BasicTracerProvider, SimpleSpanProcessor, } from "@opentelemetry/sdk-trace-base"; const kv = new MemoryKvStore(); const exporter = new FedifySpanExporter(kv, { ttl: Temporal.Duration.from({ hours: 1 }), }); const provider = new BasicTracerProvider(); provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); The stored traces can be queried for display in debugging interfaces: // Get all activities for a specific trace const activities = await exporter.getActivitiesByTraceId(traceId); // Get recent traces with summary information const recentTraces = await exporter.getRecentTraces({ limit: 100 }); The exporter supports two storage strategies depending on the KvStore capabilities. When the list() method is available (preferred), it stores individual records with keys like [prefix, traceId, spanId]. When only cas() is available, it uses compare-and-swap operations to append records to arrays stored per trace. This infrastructure provides the foundation for implementing a comprehensive debug dashboard as a custom SpanExporter, as outlined in the updated implementation plan for issue #234. Optional list() method for KvStore interface Fedify 1.10.0 adds an optional list() method to the KvStore interface for enumerating entries by key prefix. This method enables efficient prefix scanning, which is useful for implementing features like distributed trace storage, cache invalidation by prefix, and listing related entries. interface KvStore { // ... existing methods list?(prefix?: KvKey): AsyncIterable<KvStoreListEntry>; } When the prefix parameter is omitted or empty, list() returns all entries in the store. This is useful for debugging and administrative purposes. All official KvStore implementations have been updated to support this method: MemoryKvStore — filters in-memory keys by prefix SqliteKvStore — uses LIKE query with JSON key pattern PostgresKvStore — uses array slice comparison RedisKvStore — uses SCAN with pattern matching and key deserialization DenoKvStore — delegates to Deno KV's built-in list() API WorkersKvStore — uses Cloudflare Workers KV list() with JSON key prefix pattern While list() is currently optional to give existing custom KvStore implementations time to add support, it will become a required method in Fedify 2.0.0 (tracked in issue #499). This migration path allows implementers to gradually adopt the new capability throughout the 1.x release cycle. The addition of list() support was implemented in pull request #500, which also included the setup of proper testing infrastructure for WorkersKvStore using Vitest with @cloudflare/vitest-pool-workers. NestJS 11 and Express 5 support Thanks to a contribution from Cho Hasang (@crohasang@hackers.pub), the @fedify/nestjs package now supports NestJS 11 environments that use Express 5. The peer dependency range for Express has been widened to ^4.0.0 || ^5.0.0, eliminating peer dependency conflicts in modern NestJS projects while maintaining backward compatibility with Express 4. This change, implemented in pull request #493, keeps the workspace catalog pinned to Express 4 for internal development and test stability while allowing Express 5 in consuming applications. What's next Fedify 1.10.0 serves as a stepping stone toward the upcoming 2.0.0 release. The optional list() method introduced in this version will become required in 2.0.0, simplifying the interface contract and allowing Fedify internals to rely on prefix scanning being universally available. The enhanced #OpenTelemetry instrumentation and FedifySpanExporter provide the foundation for implementing the debug dashboard proposed in issue #234. The next steps include building the web dashboard UI with real-time activity lists, filtering, and JSON inspection capabilities—all as a separate package that leverages the standards-based observability infrastructure introduced in this release. Depending on the development timeline and feature priorities, there may be additional 1.x releases before the 2.0.0 migration. For developers building custom KvStore implementations, now is the time to add list() support to prepare for the eventual 2.0.0 upgrade. The implementation patterns used in the official backends provide clear guidance for various storage strategies. Acknowledgments Special thanks to Cho Hasang (@crohasang@hackers.pub) for the NestJS 11 compatibility improvements, and to all community members who provided feedback and testing for the new observability features. For the complete list of changes, bug fixes, and improvements, please refer to the CHANGES.md file in the repository. #fedidev #release
  • 0 Votes
    1 Posts
    19 Views
    Hello friends, I have collected $300 out of $800. $500 remains.Please donate to help cover my difficult living expenses.Even a small amount can make a difference.Thank you.#gaza #genocide #mutualaid #fediverse #journalism https://www.gofundme.com/f/help-young-journalist-mohammed-from-gaza-share-now?utm_campaign=fp_sharesheet&utm_medium=customer&utm_source=copy_link&lang=en_US&attribution_id=sl%3A5be8016a-f849-445b-8970-e9293df3f6f5https://mastodon.social/@Mohammedjhad/115304042421096986