That would require tags also to be Actors. Since Users and Categories will be Actors, and “…ActivityPub objects will be associated with their equivalent Discourse objects…” I’m guessing that it would be possible (though I’d guess not part of the MVP since I don’t see it called out in the description) to extend to Actor support for tags, with custom admin configuration per tag.
I’m super interested in running early versions on the SocialHub or another Discourse instance. Let me know how I can be of help.
Another update! We’re now two months in, at the end of our development phase, and we’re starting some internal testing. That will probably take about a month as we test and tweak. Thanks for the offers to help with the testing! The initial testing will be internal to keep a tight test <> fix loop. We’ll broaden that out when we’ve ironed out any initial issues that arise.
Here’s what it looks like
Nice, love “this note will be federated out 5 minutes after…”
Small suggestion, in case it matters:
Allow the name of the account to be customized to more than just announcements. I don’t know if that is a set name, but my .02
Yes, the username (aka “preferredUsername”) is set in the category settings. “announcements” is what I set for that category.
In case you are curious whether very many people are interested in this functionality, I shared a link to comment 87 (the announcement from @angus of taking on this work) to the fediverse via Mastodon on May 20, 2023 at 2:48 US/Eastern, and by six hours later, 300 people had already checked it out (I got the “Good Share” badge for it).
Not being pushy when I say that I’m looking forward to being a beta tester when it is ready for initial public consumption.
I would like to draw attention to Daniël announcing support for federation in their upcoming v2.0 release of their forum software, with help of a NLnet grant.
There are now 3 forum softwares that are implementing federation: Flarum, nodeBB and Discourse (via The Pavilion). I sincerelly hope that we do not get 3 incompatible federated apps, and would like to point out to the Fediverse Enhancement Proposals process (FEP) as a means to align ActivityPub implementations.
The FEP process sees a lot of participation, with proposals being discussed on the SocialHub ActivityPub developer community, which in turn is liaisoned to the W3C SocialCG that has sprung into activity again.
Our implementation is compliant with the Activity Pub specification (and its internal data model is based on the ActivityPub data model). It is currently being tested for interoperability with Mastodon as a first step.
Testing is going well. Just sit tight for a bit longer.
I explicitly mentioned the FEP process, because “ActivityPub compliance” in itself isn’t saying much. AP is not like “implement the spec and interoperability is guaranteed”. There’s a gazillion ways to use ActivityStreams vocabulary in different message exchanges and create incompatible apps. Interoperability with Mastodon is a common and understandable goal, but their Fediverse presence represents the “Mastodon flavor” of AS/AP. Mastodon, being instrumental to the current success of the Fediverse, has made many app-specific decisions to fill gaps in the protocol, that are now becoming barriers to a more heterogenous Fediverse that facilitates many different app-types.
Forums are a different ‘business domain’ than Microblogging apps. Usually in order to support them well that means making extensions to the protocol. What the FEP is also involved in doing, is standardizing the ways to define extensions. Up to now most extensions are ad-hoc, and that leads to Protocol Decay. For instance, when considering Peertube some time ago I took notes on how they added more Video support… which can only be reverse-engineered from their codebase, really (I did not check if docs caught up to code).
PS. I cross-referenced to the Fediverse discussion.
I appreciate where you’re coming from. What you’re describing is a dynamic that exists in most standards communities. As this is a new implementation, it’s generally prudent to start from the “standard” specification, even if practically speaking there’s a few ways of interpreting that.
That said, having just spent a few months on the implementation, I’m not sure I’d agree that “ActivityPub compliance” doesn’t mean much. It’s a common ground from which to build from. We’ll get to the more specific aspects of practical implementation and interoperability, but we have to walk before we can run.
Kia ora Angus, I worry that you’ve read @aschrijver 's comment as trivializing your hard work. I read it as an observation on the wooly nature of the core AP spec, and the way it leaves so much unspecified. Knowing Arnold as a fellow fediverse cat-herder (we both volunteered on fediverse.party), I take it as read that he very much appreciates the work you and your team are doing on implementing AP for Discourse, as do I
Arnold and I have seen devs end up at loggerheads a few times, over who should redo chunks of their work to fix interop bugs in areas the AP spec is silent on. We’re very keen to help folks avoid both the time lost to coding redo, and the demoralising discussions that precede it. Which is why we encourage implementers to start talking to each other as early in the process as possible.
Ah, thank you @strypey. Yes, that is how it is. I am overjoyed with the work you are doing on this!
I’m happy to say we just published the first version of the plugin. Happy to hear any feedback over in the plugin topic
I tested it out successfully on my sandbox. This is great! I watched it federate out and tested through deletion successfully federating out.
Do you want discussion about next steps here or at the main plugin topic?
Great to hear! Let’s move further discussion to the plugin topic.
A post was merged into an existing topic: ActivityPub Plugin
Well, let’s make sure this is working at least.
I’m still not totally sure federation makes sense for Discourse (paragraphs/stories) in quite the way that it does for Twitter (sentences/chat) but we should support it for those that want to try.