I'm considering working on a federation extension that is fully compatible with other activitypub platforms like Mastodon and Friendica. The past has shown a consistent interest in this topic and the recent events at Twitter strengthen the opinion that federated ownership of content is valuable for security, consistency and sustainability.

The eventual goal is to:

  1. allow users from your Flarum install to participate in the Fediverse
  2. allow federated guests to participate on your Flarum install
  3. display federated outside content
  4. allow publishing your content on the Fediverse

As I firmly believe in fast iteration, a first release (as a beta) will include the bare minimum features 1 and 2.

Building this won't be easy, I really would love to publish this as an open-source extension. For that to be possible we need your support through pledges.

Ref:

The ability to authenticate across Flarum installs was actually one of the original Kickstarter promises. I'd love to see this come to life via the Fediverse.

13 days later
9 days later

Probably best to target Reddit like Fediverse forums for compatibility. Like Lemmy, Kbin or Friendica groups.

2 months later

A federation extension, would it need to be installed on a fresh Flarum install, or can it be activated on an existing forum?

I think it's a great idea!

    5 days later

    luceos I am very interested by this extension! Did you already decide which license it will be released under? I see that the composer.json advertises mit but there is no license file in the repo yet.

    I would be interested in contributing to the code even if I don't know the ActivityPub protocol really well yet (even more so with a less permissive license than MIT). Is there some public todo list somewhere?

      n-peugnet this is definitely lined up for open source. No limitations.

      There's no public to do list because I'm a) having a hard time wrapping my head around AP (it's still a new area for me) and b) caught up in other work.

      Your contributions would be very welcome, my goal was to make the extension resemble the Mastodon protocols as much as possible, because that's - as far as I could see - the most well documented protocol of them all, and it has additional features we could use.

      If you want to dive into this, feel free to ping me on discord luceos#0001.

      3 months later

      I like the idea!

      One thing that did bother me about the fediverse was in number 3, this is usually done by duplicating the content which can lead to lots and lots of space taken up on your server. Could the duplication part be made optional if you ever get to 3?

      I can also suggest a number 5: the ability to import and move from one flarum forum to another your user account.

      I do have one really easy but kinda cheap 1 minute implementation / probably not great for longterm way to implement 3 right away, which I actually did on my own just-for-testing flarum: use mastofeed to grab a couple outside feeds by their rss (obviously not viable if you want to follow hundreds of them). If you make a page for your forum with .rss on the end, with content displayed in the xml format, then others can read the .rss feed with mastofeed as well, which means this also covers .4
      Making your own page that generates xml when you add .rss to the end IS something that mastodon already does, so to make this a little less 'cheap' you could replace mastofeed with your own xml reader. Then 3 and 4 would have very basic versions done. The 'proper' protocol involves sending 'follows' so other people know on the network that you are, well, following them I think? Haven't actually looked at it yet.

        a month later

        Given the recent Reddit debacle, I've really gotten into communities using Lemmy, but as others have mentioned, it lacks a lot of forum features. It's very encouraging to see this on the road map for Flarum, and I'm excited to see how this all comes together.

        3 months later

        longlostsoul this is usually done by duplicating the content which can lead to lots and lots of space taken up on your server. Could the duplication part be made optional if you ever get to 3?

        There's a balance to be struck between reducing avoidable storage on your server, and reducing avoidable hits on remote servers. If possible, I would suggest using normal web requests to copy from the remote server to the browser the first time a piece of content is requested, but if the same content is being requested by users on the same instance more than N times, a copy ought to be cached on the local server their use. Does that make sense?

        Ultimately, it's the same balance the matrix chat network has to strike. Between a) copying the full history of a room to a homeserver when an account there joins the room for the first time, consuming a lot of storage space on all participating homeservers, and b) leaving all the history on the originating homeserver, so the client has to pull from a remote homeserver any time a person goes back in the history, and its vulnerable to loss if that homeserver goes down.

          7 days later

          strypey Would love to hear more about this balancing and the dev's ideas about this. @strypey do you have more literature about how other projects handle this tradeoff?

          6 months later

          Hello! I've been working on the Discourse ActivityPub implementation (https://meta.discourse.org/t/activitypub-plugin/266794) for some time now and would love to work with you guys when you're ready to start testing this. I just posted a similar message on NodeBB's forums where there's some similar work going on (https://community.nodebb.org/topic/17684/nodebb-receives-nlnet-ngi0-core-grant). I think it might make some sense for the "forum" folks to put our heads together a bit here.

            angusmcleod Hello Angus,

            Thanks for reaching out. I've had the call with Julian from nodeBB and we decided to stay in touch related to major design decisions in the federation implementation. We also agreed to support the FEPs and collaborate on them to become finalized. I do think streamlining our implementations would be highly beneficial. I'll send you an email shortly to see how to best do that.

            My implementation is currently underway and is based on the upcoming Flarum major version 2. Although most of our stack is already capable of tackling the data streams required for federation, I still need to implement the necessary endpoints and backend logic.

            Great! Since I posted the above Julian and I had a chat at https://fediforum.org and we've decided to put together a working group, meeting monthly, to make some progress on this (details here). Julian's managing the mailing list. If you reach out to him he'll add your email in.

            7 days later