Next version of Pelago is digging into the oldest part of the code: Networks.
I started this process by taking the ION allowlist and allowlists of other public networks and adding a public dataset for their accept-based FIRES allowlist. (Private networks hide their dataset and need basic auth to access, much like the current allowlist model).
But then I started working with federation and ActivityPub. What if @ion@pelago.1sland.social was the fediverse actor that represented the ION network, and what if, you're on the allowlist for that network, you could just send a DM to that handle, and start a private, 'followers-only' sort of thread, federated across the fediverse?
There are already multiple network types: Council, Agreement, Network, and of course Archipelago, the whole reason I created Pelago to begin with--to facilitate creating subscribeable allowlists for island networks, and confirm mutual opt-in federation is working between all participants in that network. Archipelago is special in that only islands can join it, whereas any instance can be part of the other networks.
You follow the group, you see all of its followers-only content. You unfollow the group, it goes away. As followers-only content, it's not on the web, it's not part of the RSS feed.
I started adding other things. Like, what if you created the top-post in a thread, like you start the thread. What if I give you moderation permissions, where you can lock the entire thread or unlock it or you can force-delete someone's post in the thread, or you can even ban someone from being part of your group.
And I just kept coding over nights and weekends, going down the rabbit hole on this. To the point where I have weeks of review to do on everything before I'm comfortable releasing it, but it is (at least to me) a game-changer.
I did a lot of digging into ActivityPub, deciding that networks should identify themselves as a Group. This is actually how Lemmy and Mbin and Piefed and others organize things now. The fediverse actor is a Group that encapsulates @pandas@pelago.1sland.social or whatever, but in Lemmy it's not making posts. Instead, you do a Create(Page) as a top-level entry, and then a bunch of Create(Notes) under that, to represent the 'comments' on the original page or post.
The problem: Mastodon has no clue what a Create(Page) is and just drops it. This is reason number one for why Mastodon and Lemmy don't really talk to each other very well. There's a fundamental incompatibility here. In Mastodon and most microblog software, you post a Create(Note) as the 'top' and then people reply to that. There's no top level 'page'.
So I had to decide if I wanted to support Lemmy/Piefed with this and the answer is: not currently but it's possible at least in Piefed to search for a network and follow it (add it to the 'remote' instances).
The problem, however, is that the top-level element created in Pelago's thread structure will be a Note.
This is so mastodon, GoToSocial, Akkoma, whatever, will properly be able to render these threads.
Additionally, I'm not even sure if I got the Create(Page) happening for Lemmy compatibility if it would even accept all of the 'followers only' posts or treat them the same way. From what I've seen, Lemmy espects everything to be public.
So I've reached towards compatibility there, but someone (perhaps Piefed, they seem to prize interop with the rest of the fediverse more) will have to essentially see what I'm doing here and go, "We can treat a top level Note as a Page for the purpose of compatibility" but ultimately, if you want to use lemmy, mbin, whatever, there's already options for that.
However, there's a real dearth of options in the Fediverse for you to join some kind of 'members-only' discussion group, have that discussion federated but without being shared with the whole damned server, boostable, quotable.....
There's also a dearth of ability to retract content. For the time being, followers-only content solves that, so long as the group is the author.
I'm not even sure how I'm going to go about organizing and communicating this, except once it's live I'll create a few test groups and let you all try it yourselves.