ActivityPub Support: Phase 1 RFC

Well, at the time, one of your team members did – even if he’s no more on board, and you were selected – so someone had to approve it, so I don’t know what “we” you’re referring to. :slight_smile: Anyway I’m looking forward to discussing with @Falco. Some kind of AP support would really be helpful for the ActivityPub community, especially since it would facilitate working across Discourse instances and integrate with the Fediverse better.

I’m conscious about the anti-spam issue, but I think it can be alleviated with staging Fediverse users like unregistered email users until they actually register a local account.

5 Likes

Of course, it would be really nice to see that.

Yes, we did apply for the funding in the past but we spoke with the NLnet team earlier this year to close the project and free up the funding that was reserved for us. Even if we were selected then, the collaboration with NGI0 is cancelled for now. Of course, we are free to make proposals in the future.

I just remembered that @riking might be interested too :slight_smile:

1 Like

Interesting.

This project was funded through the NGI0 Discovery Fund, a fund established by NLnet with financial support from the European Commission’s Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 825322.

So: Are they talking about another “Discourse”?
Just asking because of “Projects own website: https://discourse.org” …

1 Like

Oh, I didn’t know that page existed. I’ll write an e-mail to our contact at NLnet, nudge them in case they forgot to remove it and post an update here.

EDIT: changes are live on NLnet; Discourse ActivityPub

1 Like

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