ActivityPub Support: Phase 1 RFC

I see.
Pretty frustrating.

Friends changed do discourse because of upcoming ActivityPub.
Now they all trash discourse again …

Also the official forum for ActivityPub went to discourse and now we
need to debate what to do …

The developers behind Lemmy are doing great work on this front of adapting ActivityPub to be usable by community software:

https://github.com/LemmyNet/lemmy/blob/main/docs/src/contributing_federation_overview.md

However, they had to extend it, so there is no other software implementing their activities.

Our federation implementation is already feature complete, but so far we haven’t focused at all on complying with the ActivityPub spec. As such, Lemmy is likely not compatible with implementations which expect to send and receive valid activities.

I guess if Lemmy can get it to be compatible with Mastodon, we can go and implement the same API Lemmy uses, mapping

Discourse Lemmy ActivityPub
Category Community
Watching Follow
Topic Post
Post Comment
Like Like
14 Likes

In ActivityPub parlance this would be a Page then, which makes a lot of sense if you consider the Page publishing feature: first part would be announced as a Page, then any response would be a Note.

I’m unsure about Category -> Community. Since AP support and SSO make this more fluid. I tend to have more than one Discourse instance for a single community.

4 Likes

Just to say, the following Discourse instances started to share both users and topics, and ActivityPub in Discourse would be very useful to all of us:

6 Likes

Interesting, worth noting Mobilizon is also using ActivityPub for event planning, developed by Framasoft… same people making Peertube.

1 Like

It’s a pity Discourse isn’t moving towards implementing ActivityPub, I feel that there is a lot of missing potential here, given that there are so many communities, that already use Discourse and would benefit from this from day-1… Even if they don’t know it yet! :sweat_smile:

2 Likes

Hi there @rishabh, @riking, @codinghorror,

(Yes, there’s a TL;DR below)

Some time ago I understood from @sl007 and @hellekin that you won’t be pursuing this Phase 1 in the short term, even with the NGI0 funding. As a fellow promoter of interop based on ActivityPub I too find that a pity, of course. But from the perspective of Discourse, the leading and most popular forum software, there’s tons of forces and other priorities to take into account and this business decision in that light probably makes a lot of sense:

Decision: This RFC as proposed just wasn’t attractive enough to be given priority and placed on the Roadmap.

The RFC took a MVP approach with “Let’s start by creating a Facebok-like aggregated content feed across forums” as proposed by @Falco. It is just one of many, many features that might result from having native ActivityPub support in some form or other. Arguably having such a timeline is sort of a sidestep of what you normally find in a forum, and to me doesn’t seem like a real core feature. More of a bolt-on extension and therefore a nice-to-have.

A different approach

With the need to come to a quick MVP of ActivityPub support out of the way, maybe we could follow the opposite process:

Ideation: Brainstorm interop use cases and gauge them for viability in terms of business benefit and USP’s.

I.e. which features would be truly attractive to have in Discourse? Or even: Where might Discourse miss the boat if not in the loop on what is possible?

In @Falco’s latest post above he mentions Lemmy which is built from the ground up upon a dedicated Linked Data vocabulary that matches their business domain. They have their MVP ready and in production, and are now looking into expanding ther feature set on top of their own domain. This may include federating with the other domain of Microblogging where Mastodon and Pleroma and others are very successful.

The approach to the ideation might be along this exercise:

Exercise: Let’s envision how Discourse might have looked like if it was similarly based from the start on their own ActivityPub-based business domain (defined as a Linked Data vocabulary).

Let’s go wild in this brainstorm session, and let our creativity run freely.

The list of use cases that result from all this may be interesting enough business-sense-wise to become part of the Roadmap, but if not they may still inspire the community to build plugins and components, and lay some of the groundwork to build upon in a later stage.

ActivityPub versus Fediverse

I notice there is a broad misconception to what it means to have ActivityPub support in an application. Many people think that the reason to do so is to become ‘part of the Fediverse’. And here the thought immediately goes to federating with Mastodon instances i.e. implementing interop with (i.e. to join) the federated Microblogging domain.

Yes, this is a very attractive opportunity once having ActivityPub support, and many other applications like PixelFed (Insta alternative), PeerTube (YouTube alternative) and also Lemmy (Reddit alternative) are looking to do so. They make the Fediverse a more attractive place to participate in, and lotsa innovations are taking shape that make the fediverse future be really exciting.

BUT…

Arguably organizations targeting large user bases like Discourse might ask questions like: “Why would I want to integrate with the Fediverse with only about 4 million users?” or “Why would I integrate Microblogging into my software that is operating in an entirely different domain?”. And they would be right to state that, and forego ActivityPub implementation on that premise.

HOWEVER…

ActivityPub implementations are about much more than becoming part of the (Microblogging part of the) Fediverse. It makes perfect sense to implement a Linked Data vocabulary uniquely designed for your own business domain and have your own product instances federate together. Or all instances of your product and that of competitors in your industy who also adopt the same vocabulary, for that matter.

One example here is the ForgeFed project that aims to define interoperability standards for code forges (github, gitlab, gitea, sourcehut, etc.) to implement. Doing so makes tremendous sense, especially for the smaller code forge projects to provide an attractive alternative to Github (which has become all-too-dominant as a centralized, increasingly more walled-garden platform). If broadly adopted no longer will developers need to juggle a plethora of forge accounts on scattered servers across the internet to participate in interesting code project, file an issue, comment and submit PR’s.

(Note that - as indicated above - the same issue that people have with stand-alone code forges existing all-over-the-place, is what I and others also experience with our participation in a ton of Discourse communities.)

Opportunity: Discourse is uniquely positioned to take the lead in setting interoperability standards for forum software, and shape the standard in such way that it aligns perfectly with current Discourse feature set.

There are some up-and-coming competitors in your industry, who are innovative, taking fresh approaches, and iterating fast on adding new features (you at Discourse know best who these are :slight_smile: ). IMHO Discourse in feature-completeness still stands far above what their products have to offer. And you have a community like no other to help you evolve the product.

But the interop opportunity that exists now, might also become a threat. Either competitors might jump onto the opportunity first, or - maybe driven by the EU Digital Markets Act - the Big Tech platforms create something with overlap in forum software domain. In both cases it would be harder for Discourse to align with this standard and have the most authoritative voice in its specification design.

TL;DR

This has become a longer post than I intended. Sorry about that :blush:

In summary I am arguing that, given current stance on having ActivityPub support, it may be prudent to go from a short-term MVP-like focus, to a more broad evaluation of what ActivityPub interoperability could bring Discourse in terms of USP’s and positioning in the longer run. I.e. to elaborate the business case of ActivityPub adoption, starting with an ideation phase.

(How this is best set up - provided you are interested - I leave in the middle, but it may start simply with just a new AP topic having a summary wiki of collected use cases on top and people discussing use case ideas in the thread)

9 Likes

For your information: Dansup the lead developer of Pixelfed just announced their intent to add Federated Forum support:

5 Likes

Arnold what prevents you commissioning this as a plugin if you have access to funding?

Sometimes developing and proving out functionality in a plugin helps more wide and core adoption.

A good example of this is Topic List Previews (a plugin). Baked Thumbnail previews were originally 100% tacked on. Now Discourse core supports thumbnails natively as a result of its demonstrated popularity.

@angus & I built that out to a point where core then decided the idea was mature enough and popular enough to implement themselves.

Such an approach lowers risk and can help overcome practical boundaries before making into the core roadmap.

Just a thought …

8 Likes

There was already a proposal of funding in the marketplace, that someone in the Discourse team picked up, but then the accepted proposal was dropped. The offering is still open but requires a European entity to pick it up. It might be a European member of The Pavilion. I’d be happy to help with the proposal, as repurposing the existing one would certainly help fast tracking it to successful funding.

4 Likes

We can certainly have a discussion offline how that might be navigated.

4 Likes

Your link to Dansup reminds me of the Wordpress ActivityPub plugins available these last couple years. Similar to this person, I’ve been running them on my own Wordpress since they began: ActivityPub plugin and the now fairly inactive Pterotype.

Your site is turned into an actor on the fediverse, such as @latest@meta.discourse.org, you can add a description for your account, and your site icon is displayed as your federated user profile pic. Posts will show up in the federation for other users and their comments will show up on our site, displaying their federated user icon and name.

Example reply:

@doug@mastodoon.social:
I've really enjoyed following this thread on federation!  Keep up the good work

Really nice because it is displayed on wordpress as just another comment, when it is also a true federated comment as well via ActivityPub.

edit: Check out Prismo, which a federated variation of Lemmy/Reddit built on Ruby / PostgreSQL that might more closely align with a design for Discourse

2 Likes

Hi @merefield,

Building plugins is certainly a very viable option. In my exercise I proposed thinking “as if” Discourse was built from the ground up with federation in mind as a means to investigate with an open mind all the possibilities, without looking - for the moment - of what’s possible / feasible / unfeasible wrt the current product and ecosystem. Each of the things we come up with may lend themselves perfectly to be implemented as plugins.

I am working myself mostly on different aspects of this Fediverse. My response was as both an ardent fan and promoter of Discourse and an advocate for the Fediverse, which - with all its innovation - I see as the opportunity to become the next-gen, people-driven and more humane social media landscape.

But in my post above I wanted to highlight that there’s an interoperability use case completely independent of Fediverse integration too, directly between disparate Discource communities. PS. I followed up to the SocialHub forum to raise awareness of this aspect of having ActivityPub support: Positioning ActivityPub: De-Emphasize "Being Part of the Fediverse" as primary USP - ActivityPub - SocialHub

Thank you, much appreciated. It is a great thought, and I hope this thread will inspire any plugin developer to discover the possibilities.

:sparkling_heart:

Yes, love it. These projects can be fine inspiritation to what might be in the kind of Discourse @merefield is talking about, when focusing on Fediverse support.

4 Likes

We have concluded in the past that Discourse-Discourse federation is entirely uninteresting; we already have basic interop through OpenGraph which seems to be good enough. If anyone has a compelling use case, I’d like to hear it, but have not seen one presented yet. You’ve only talked about the technical possibilities and not about what product features this technology actually enables.

4 Likes

Good points! If the goal is for a post on one forum to be synchronized with a post on a different Discourse forum… you can already use matterbabble with matterbridge.

1 Like

No, you are right. That’s what I was proposing we do (in my TL;DR with “elaborate the business case of ActivityPub adoption, starting with an ideation phase”).

Since this brainstorm proposal goes way beyond the topic of this thread, and also does not refer to a single feature or RFC, but more of a Vision, I’ve created a separate topic in #community category:

3 Likes

Please see a proposal to shape up a business use-case that could make for a starting point convincing @riking of the interest of implementing ActivityPub support in Discourse :slight_smile: @merefield would you like to join the conversation there? – It would be straightforward if AP was supported, of course!

4 Likes

Pardon if this is incorrect, but why not convert rss feeds to activitypub with feed2toot? I see it supports Mastodon and Pleroma. Discourse generates RSS feeds for categories and groups by default. Support for RSS is also built into Hubzilla and Friendica.

https://feed2toot.readthedocs.io/en/latest/

Wouldn’t that only be “one way”? “Out” from Discourse towards ActivityPub instances, but not the other way.

@hellekin Pardon me, but I don’t really see the “use case” here. I mean, why do it, what the benefits are, etc.

Rereading the thread and after having fanned out in the Community has no boundary: Discourse-as-a-Fabric - ideation & brainstorm and starting to think on Shaping Up a Business Use-Case for ActivityPub in Discourse - Discourse - SocialHub again, I realize that no one has asked to elaborate on the reasons here, which is my and other AP advocates’ oversight, I guess. Sorry about that.

Could you provide more insight in what is withholding Discourse from looking deeper into federation features, and what would be interesting areas where the ActivityPub community can provide you with more information and support?

3 Likes