Shaping Up a Business Use-Case for ActivityPub in Discourse

@aschrijver thank you for this proposal and your support in pushing the @discourse team to adopt ActivityPub. As with everything, the Discourse team is not monolithic and has some people more interested in ActivityPub support than others. But I suspect this drive is second to the business incentives of Discourse. Before inviting @riking, as he requested a business use-case to be convinced, I’d like to help shaping one up. I can invite @merefield and other people at The Pavilion who demonstrated interest.

My idea would probably revolve around maintaining a “main” Discourse identity (e.g., my own self-hosted instance that I use daily) and use this to connect to other instances (as a “staged user” if I don’t want to fully participate, but still be able to reply to existing topics, like I would by email) so I can follow public topics. This can be pitched as a minimal use-case to enable remote participation equivalent to email, but using ActivityPub instead. On my “main” instance, I could received notifications from remote actor topics as I subscribe to them. In other words:

  1. a plugin would implement ActivityPub for public topics, giving them an Inbox/Outbox pair that other ActivityPub actors can suscribe to.
  2. A topic would announce new comments as Notes
  3. Subscribers would receive a private message mentioning the announce.

Already this minimal implementation would enable ActivtyPub staged users following the email staged users, and reply_by_activitypub could offer a next step. For the first iteration, only topic-publish-notes, subscribe-to-stage-user, and subscribe-receives-notifications would be within scope.

Now, this does not make for a solid business use-case, but it can help start the conversation.

1 Like

Because there was follow-up on Discourse Meta to the AP topics, I first responded there. Relevant in the post linked below are the decision where to place the functionality: giving full freedom to users (like in this topic and the original RFC proposal on Meta), or keeping forum staff in full control (like in my Discourse-as-a-Fabric description, and which I think is more interesting to Discourse, the company, and its customers, the community managers):

The previous discussion on Meta has progressed quite well. Note that codinghorror (founder Jeff Atwood) reacted, and it shows some shortcomings in AP / Fediverse positioning maybe. He writes (emphasis mine):

Activitypub is a good idea, but even brand new software implementing it as first class citizens have to fix quite a few holes in the specs – so for us it makes sense to wait and see.

Also, this is totally doable as a plugin if it is something a particular group is super passionate about.

These ‘holes’ mentioned there are arguably fixed by the additional range of (standardized) technology, apart from AP, needed to plug them. They are WebFinger, HTTP Signatures, OAuth2, etc.

The fact that this isn’t immediately clear is due to the fact that no website, including activitypub.rocks, informs good enough on the topic.

1 Like

I am writing just for a reference if someone found it here.

This might have changed, but I guess as a starting point this seems to me to be documented well enough:

Yes, these resources will help you quite a bit in getting started. I highly recommend you update the first resource (it is an editable wiki post) when you find things missing or inaccurate.

On the nitty-gritty details you may find places where you get stuck, or have to look in other codebases. But for those you can pose your questions on the forum and there’s usually someone to help.

Since you are entering new application domains I am very interested in the approach and process you use for project / product / architecture / code design. I feel much can be gained here in investigating how app developers can get up to speed quickly, and create modular exensible codebases that evolve neatly along with the Fediverse itself (e.g. by using DDD strategic design).