Let's talk about ActivityPub

FWIW I note that Bonfire, a newer AP project, has adopted concepts of “circles and boundaries”, similar to those used in Diaspora (and the late G+).

1 Like

It is now the middle of 2024, and I believe that enough things have changed that it is worth bringing up this discussion again.

Diaspora is…not the healthiest, and hasn’t been in a while. I still have much love for the project, but every now and then, I look at how things are going, and feel sad.

While I don’t see ActivityPub itself happening anytime soon, it behooves me to ask this simple question: if someone dedicated themselves to a large-scale refactor of Diaspora, cleaned up the backend and frontend, and incorporated ActivityPub endpoints and schemas within the Federation gem…would the people currently running the project accept those pull requests?

I’m not anticipating overnight magic to happen. I think the platform needs a lot of love and care to get to a state where such a thing is even feasible. But, we’re at a point where development on user migration, an API, and basic quality of life stuff drags on for years and years and years. There’s a lot of technical debt, and Diaspora’s community has shrunk to a portion of what was once there.

There’s a lot of innovative development happening in the ActivityPub space to overcome a lot of what @denschub is describing. I wrote about some of it here: https://wedistribute.org/2024/03/extending-activitypub/

The biggest improvement has been a large-scale coordination between platforms on standardization. Groups, for example, now largely depends on a singular specification shared by many different projects that can all interfederate now: fep/fep/1b12/fep-1b12.md at main - fediverse/fep - Codeberg.org

I’m not saying that it’s a perfect situation…but, with coordination and time, there’s a very real possibility that Diaspora could natively support all of the conventions that other Fediverse platforms offer.

What’s your basis for that claim?

The last time I checked with our userbase (which was 14 days ago in the form of reading comments under a release announcement post), the majority of people are happy with the project, and they’re fine with a project that’s moving very slowly, as opposed to projects that go the “move fast and break things” way, or the “let’s have everything talk to everything” way. I even see a small flow of people explicitly coming back to diaspora* from AP-“enabled” services for all sorts of reasons.

Yes, diaspora*s absolute user numbers are small compared to Mastodon et al, but… who cares? diaspora* has a userbase of people who really appreciate the way we do things, and if someone is not happy with that, they’re free to pick a project that does things the way they want. That’s the whole point of FOSS, no?

I still fundamentally don’t understand the mentality of “you have to do things a certain way, or else you’re ‘unhealthy’ or committing mistakes”.

Mostly the significant decrease in users, contributors, feature development, changes or improvements to the UI and backend, over the course of a decade. The fact that the API branch was a multi-person handoff that took years to merge, and somehow still isn’t available in a stable release for people to take advantage of. The fact that you’re still stuck running JoinDiaspora to facilitate user migration, which at this point probably won’t happen until 2034 at this rate.

You’ve even stated yourself, in the past, that a lot of people working on this thing are burnt out. There’s dysfunction and technical debt, how is that healthy for any open source project?

Anyway, that is a tangent and besides the point. The root of what I’m asking is: if a dedicated person or group came in and wanted to contribute the effort to connect Diaspora to the rest of the Fediverse, by cleaning up the backend and adding ActivityPub capability to the Federation gem, would those pull requests have a non-zero chance of getting merged by the project? Or, would they be rejected on a merely ideological basis?

Okay Sean, I’ll be honest. I cut a lot of people a lot of slack - but not you. I expected you to know better, and to be better. You’re somewhat getting on my nerves, and once again, I would really appreciate if you could at least take the time to re-read the entire backstory and at least get up to speed with the current state of the project before you - or anyone else on the ActivityPub Evangelism Strike Force - feel a need to ask “ActivityPub when???”.

I already responded to that point before you even brought it up. Sure, acknowledging that a project like diaspora* have a place and a fanbase would hurt your whole “diaspora* is dying” argument, but I’m not sure why that’s so hard to understand.

If you don’t like diaspora* then don’t use it and don’t interact with it. It’s literally that simple. Nobody is forcing you to. Just stop.

And again, nobody currently working or actively using the project minds that we’re not “the big fancy project”. It’s fine. We like it that way. There’s no need and no will to change that.

This is complete nonsense. We release a major version exactly 14 days ago, and that release includes the API. That information is not hard to find - the release announcement is the latest blog post, it was the latest public post on this Discourse before your post, and it’s also the latest post from the diaspora* HQ account. Heck, we even xeeted about it. There’s even a mobile app for Android and iOS that some people are using and seem to like.

It’s really not hard to figure that out. I even mentioned a release announcement in my first reply to you.

Again, it would have taken you 10 seconds to go to https://joindiaspora.com, read the text there, to figure out that we’re not, in fact, “running JoinDiaspora”. We did so for a while, but after we figured out that people are no longer actively deleting accounts and/or requesting account data downloads, and realizing that the traffic on embedded media is essentially zero, we turned off the server - which turned our expenses and maintenance effort down to zero. The page visible on that domain is a completely static page that’s not even running on our severs, but on Cloudflare Pages.

If the account migration is ever done, we can spin up a server and restore the data from backups we have. Aat the moment, nobody is stuck doing anything.

It’s just as unhealthy as having to have the same discussions over and over again, and having to repeat the same arguments over and over again.

The solution to that is simple: The Fediverse people need to finally stop acting like diaspora* is, has been, will be, or wants to be part of “the Fediverse”. We pointed out multiple times how incredibly flawed that term is, but if you insist to use that term, then please finally start excluding diaspora*. We fundamentally do not want to be part of that, whatever it is, and except for links to the Fediverse Observer (a tool I’d be very happy to replace in a weekend if they exclude our pods), you won’t see us use that term. Not on our wiki, not on our website, and not in our code.

Yes of course, because there is nothing between “diaspora* supports AP” and “diaspora* is rejecting things on a merely ideological basis”. Since you don’t seem to be interested in honest and factual discussions: yes, diaspora* would reject that PR! Please go around and tell everyone that diaspora* is making decisions “on a merely ideological basis”, and don’t forget to highlight how horribly ignorant specifically I am.

As opposed to some folks, I am actually capable of understanding that different tools exist for different use-cases and different audiences. And because of that, not only am I using an ActivityPub-based thing, I’m even self-hosting Mastodon. And I use it exactly for what it was deigned for: microblogging, primarily shitposting that I previously did on Twitter. And to absolutely nobody’s surprise, I didn’t stop using diaspora* or felt a need to stop using diaspora*, as a result of that. There are a few things that Mastodon does better than diaspora* (mainly microblogging), and there are also things that absolutely suck on Mastodon. That’s why there are multiple tools, and why there are tools focusing on different things. At some point in the past, having different tools that do different things used to be a big idea in the world of FOSS, but apparently we lost that.

My original blog post series talks a lot about interoperability issues - and not only from a “does it even work” technical point of view, but also from a User Experience point of view. Using Mastodon for a while now not only failed to make me reconsider my opinion, but it made it even stronger. Every week, I see people being confused about the highly inconsistent interoperability in the “it’s complicated” love triangle of Mastodon, Lemmy, and Kbin. Every week, I see people being confused why they have wall of texts in their stream on Mastodon while they can only post 500 characters. And at least once a month, I see someone being confused why they need a Mastodon account and a Pixelfed account with different identities when AP was somehow meant to “do everything with one thing”. There’s people who actively get turned off by small confusion points like this, and those are the few people who come back to and stick with diaspora*. It’s not your place to tell those people that they’re somehow wrong for picking a tool you don’t like.

It’s clear that the ActivityPub fancrowd doesn’t really mind about the wide range of inconveniences and interop papercuts. And… that’s totally fine. You won’t see me in the Mastodon bugtracker asking if they’d accept my “customizable post length” PR, of if they’ll reject it “on a merely ideological basis”. You also won’t see me school Lemmy on how they should design their protocol implementation.

I understand that different projects have different goals and different audiences, and I’m totally cool with that. It’s time that you get the same understanding. Stop telling other projects what they should do. It’s disrespectful, annoying, and patronizing.

Listen, dude, all I was really asking (not telling) is whether the work would be accepted if someone were to do it, and submit it for review. This would assume a considerable amount of work in cleaning up the backend and bringing years of technical debt up to current standards, to ensure that this works in the first place.

You derived a lot of hostility from some pretty innocuous insights, and effectively stated that you’re somehow the sole decision-maker in an ostensibly community-run project. You’ve stated your perspective and your policy, but done so in such a way as though you speak for everyone in the project. There’s no way to appeal such a decision constructively. I can see why a number of contributors have left over the years.

Your negative biases about ActivityPub are from things you wrote years ago, without a hint of curiosity or insight on how to solve any of those issues, or how things have changed over time. People are out there actually doing the work, even if there are shortcomings, because the collaborative effort could fundamentally change the landscape of the Web, and provide a shift in how social networks operate.

Honestly, it makes me sad to see the project in this state, to have squandered so much momentum in providing a positive change to social networking on the Web. At this point, it’s a niche hobbyist project on the backwaters of the Internet, with fewer features than even Libertree. It’s like you don’t even want people to use it, let alone try to move its development forward in any meaningful way.

We’re at a point where Meta is closer to embracing ActivityPub than Diaspora ever will, which is hilarious and sad.

Anyway, I’m done, and will show myself out. Thank you for everything.

No, Sean, this isn’t how this works. You don’t get to show that you have zero respect for the project by not even bothering to fact-check claims you made before posting them, and then somehow demand that people treat you with the highest of respect. If you want to have a respectful discussion, then it’s on you to make sure your factual claims have a basis in reality. Don’t expect people to be nice to them if you’re actively distributing falsehoods about project they care about.

I left our several things that I found disrespectful, like for example using the federation layer as an example of “dysfunction and technical debt”, even though @supertux88 spend impressive amounts of time rewriting the entire implementation. I left those things out because I figured pointing out you completely ignoring a major release is enough. There’s no need to dig even deeper.

Again, you’re making the claim based on what? On me posting here?

No, I’m writing my opinion about this topic in this way because I have talked to everyone who is actively working on diaspora about this - and I’ve talked about this a lot. I know that they agree with me on this. And I did respond because I knew that other’s wouldn’t respond - because they’re even more tired about “feedback” like this than I am, and I figured your original post deserves an answer. My life would be a whole lot easier if I just ignored you and leave your post without a response forever. Which, in hindsight, would probably have been better.

While it’s a interesting claim, it’s quite easy to disprove the suggestion that I’m somehow the evil dictator. I have opposed quite a lot of things, both features and structural changes, and yet, diaspora* is still shipping them somehow. I was very outspoken about polls and maps, for example - and yet, they both exist and haven’t been removed. Likewise, I absolutely do not like “like on comments”, and yet, we’re still shipping them in the latest release. And you’ll find a lot of discussions, here and on GitHub, where people actively disagree with me and end up “winning” the discussion because they had the better arguments. It’s weird how that goes.

Yeah, exactly, this is why I said what I said. You are completely ignoring the whole part where I said that I am actively using ActivityPub right now, and that me and other people are observing those shortcomings right now. And also that these “shortcomings” are driving a minority away from the projects, and that I’m happy that they have something they like using. I mean, it’s fine if you want to hate me and don’t want to listen to me, but why can’t you even listen to the users on the platform you’re supposedly supporting? Is it really this hard to just accept that opposing viewpoints might exist, and have a solid reasoning behind them?

The first sentence is 100% correct. Not sure why needed to append the second sentence though, as I already explained that people like what diaspora* is doing. And hey, it’s totally fine if you don’t believe me - this is very easy to fact-check. You’ll find a few of those comments below the release announcement post I’ve now linked twice. You’ll also be very easily able to find other posts saying the same.

I have been approached via private message and asked to address one more point. Specifically,

And I like that! I specifically mentioned XMPP Extensions Protocols (aka XEPs) in my second blog post about ActivityPub as one potential approach to have a stricter set of standards on top of a way-too-relaxed spec. Fediverse Enhancement Proposals (aka FEPs) are clearly based on that model, and it’s a good effort.

But Sean is overstating the novelty and the reach here quite a bit. FEPs aren’t new, the idea came up in 2019 and people have been working on them ever since. There seems to be a lot more activity since November 2022, which is good to see. At this point, it looks like it’s the effort of one very engaged person, and three to four less intense contributors, in addition to a bunch of one-offs. That’s far less than I’d hope for.

One very fundamental thing FEPs are missing are a XEP thing I explicitly highlighted in my blog: Compliance Suites. XEP has those yearly updating XEPs that describe which set of XEPs clients and servers need to implement. These compliance suite XEPs have big buy-in from pretty much all active XMPP server and client projects, and they provide a very good baseline of things you can expect. FEPs lack any attempt at compliance suites, let alone ones with large support.

A lot of the early FEPs are focussed around adding new “features” to AP, instead of focusing on fundamental interop issues, like the FEP-dc88: Formatting Mathematics for example. That feels a bit like “protocol for the sake of protocol”, and it looks like nobody is implementing it and nobody has any interest in it - so it shouldn’t be an FEP. But there’s also some really good stuff in there, like FEP-5624: Per-object reply control policies, i.e. the ability to turn off replies under your posts. Sadly, again, I could not find any implementation of that. Some of the FEPs want to iron out some of the ugliness that Mastodon has invented, like FEP-fb2a: Actor metadata, which tries to standardize the “profile fields” that Mastodon added. Again, no implementations AFAICT.

Some of the more recent FEPs look somewhat interesting. FEP-7458: Using the replies collection tries to solve another one of my merely ideological fantasies actual gripes with ActivityPub: the fact that post interactions aren’t distributed to everyone who received that post. That is, if you host or use a small Mastodon node, for example, and you see a popular post and click on it, you won’t actually see all replies (or any replies at all, in a lot of cases). This is in stark contrast to diaspora*, where comments and likes are something we call a Relayable - where, to oversimplify a bit - the “originating node” makes sure that all post interactions are sent to every node that got a copy of that post. That’s a big deal for everyone: as a respondent, you don’t have to first check on the author’s own node to see all the replies to get an overview over the conversation, and as an author, you won’t get flooded with the same replies over and over again because nobody saw each other’s posts. So having a wide implementation base of that FEP would be great. But again, it doesn’t look like it. The post on the SocialHub Discourse has pretty much no activity, and I can’t even find a tracking issue on Mastodon’s side, so it looks like they’re not interested as well. This is sad.

Sean mentioned FEP-1b12: Group federation as an example, and while I still don’t understand why a microblogging/mediumblogging social network needs groups, I’m happy to see that it’s implemented by “Lemmy, Friendica, Hubzilla, Lotide and Peertube”. Sadly, the FEP doesn’t describe what happens if an implementation doesn’t understand it, which is why this leads to very weird states for users that I already talked so much about.

Ultimately, while Sean claimed that FEPs are a “large-scale coordination between platforms on standardization”, I see no good evidence of that. A few FEPs have good implementation coverage, but that seems mere accident. According to fediverse.observer, ~89% of all “Fediverse” monthly active users are on Mastodon, so claiming that FEPs are “large-scale” is a bit like Safari shipping a feature that only works in Safari and not in Firefox or Chrome: a good start, but absolutely not interoperable or “large-scale” whatsoever. The fact that it’s been five years since the idea came up and they’re still not there does not fill me with optimism.

Nonetheless, I wish the folks working on FEPs good luck, and I hope this post ages like milk. I’d love to see very good implementation coverage of FEPs in two years or so, and I’d happily applaud them for their work. The internet would certainly be better off if they succeed.

Okay, I’m back. I realize that the conversation got heated earlier, and I apologize to @denschub for factual errors and an emotional response that really talked more about how I felt, rather than how things were. For that, I am sorry.

Nevertheless, I think Dennis added some interesting comments and insights worth responding to.

Firstly - it’s obvious that I still have emotional baggage about Diaspora and my time working for the project. I made a lot of dumb mistakes, partially due to being overly optimistic and lacking in both knowledge and experience. It is evident that I was probably the wrong person for the job at the time. I do not claim to be smarter than anybody else.

The path Diaspora’s old core team went down with Makr.io was legitimately upsetting for me. It almost killed Diaspora completely. Despite my incompetence and stupidity, I tried my best to help get the project to a place where the community could sustain its development, and guide it to a healthier direction than it was in 2013.

As I continued to learn about the space and the different efforts going on in it, it was my hope that Diaspora might take part in the emerging collaboration, and take the best ideas for itself. A lot of incredible things have been built since then, some of which moved at a clip faster than Diaspora ever did. This is not a failing of the community or its developers, but the lack of wanting to have anything to do with other projects in the space was legitimately hard to stomach. Dennis, some of your criticisms and replies have been legitimately volatile over the years, even though I agreed with many of your points. It makes having a serious conversation with you about any part of it that much more difficult.

Yes, I may have missed the fact that a new point release came out two weeks ago. But, when my Diaspora timeline has felt like a ghost town for years on end, it’s not exactly a surprise that I eventually stopped using Diaspora, and missed out on this news. It does not change the fact that seven years have elapsed since the last major release, which is still concerning to hear about. When I first wrote about the API getting merged, that was four years ago.

My personal belief is that the best way for Diaspora to move forward in its feature development is to look to existing Fediverse platforms for examples. You don’t have to copy Mastodon to a T - in fact, many more contemporary platforms don’t. I’ll readily admit that Mastodon legitimately impedes progress sometimes, and we’re forced to work around it.

In spite of that, the modern Fediverse has platforms capable of:

  • Full-Text Search
  • Comprehensive moderation tooling
  • Trust & Safety infrastructure to fight CSAM and block “worst of the worst” infrastructure
  • Feed Customization
  • Trending algorithms
  • Custom user onboarding for pods
  • Discovery mechanisms
  • User account migration
  • Rich media (video, audio) that federates
  • Capabilities and permission systems
  • Groups
  • Events
  • Long-Form publishing with subscriptions

And the list goes on and on and on. I’m not trying to say that it’s perfect and utopic (it’s not), but that Diaspora could legitimately reap a lot of benefits by being at the forefront of this space. A lot of the old criticisms that Dennis has held are not exactly the case anymore… it’s just that, people have had to come up with solutions to fill in the gaps, and work together. Many have realized that simply copying what Mastodon does is not the answer.

Again, my point was not “you guys should drop everything and do this”, it was an offer: if I or someone else wanted to take the excruciating amount of time to get this right, and submit a PR to the project proper, would it even fall under the consideration of being merged, or would the devs simply shrug, say “no”, and not accept it? Because to me, that behavior is the ideological part. Not the disagreement on specifics, or highlighting aspects of the protocol that falls short, but instead dismissing the possibility outright instead of exploring it.

Anyway. I think part of your response has some hyperbole that isn’t true. I am not part of a task force or even someone who necessarily is drinking the Kool-Aid. I’ll readily admit that there are flaws to figure out, and that Mastodon’s own lack of participation in the process is probably our biggest Achilles Heel at the moment. Regardless, there are a whole bunch of projects trying to work around that with FEPs, and even Mike Macgirvin is working to figure out how to bring Nomadic Identity to the rest of the network. The progress is extremely promising.

You state that Diaspora is not part of the Fediverse, but I’m not so sure that’s the case. Just because Diaspora itself did little to be a part of it doesn’t mean that it didn’t end up federating with half a dozen platforms anyway. With the advent of multi-protocol platforms and bridging technologies, an increasing number of things can be considered to be part of the network, even if they’re simply adjacent to it, speaking through a bridge somewhere.

You state that I hate Diaspora, but nothing could be further from the truth. I dedicated my life to it for so long. Some part of me desperately wanted to see it succeed, and become a part of something bigger. To me, I feel great sorrow at seeing the project languish for so long, and become isolationist towards just about every other project in the space. I can only conclude that my efforts were largely a failure.

1 Like

I was one of those tried diaspora* and “went back to what was easier” (perhaps “more familiar” is a better way to put it, because d* is definitely not “harder to use” than Fakebook), but again got fed up and back to diaspora* again.

It is far and away the simplest UI and the easiest to learn of all the federated platforms. I tried Hubzilla when my pod was “replaced” with a Hubzilla instance, and found it to be a maze of mystery and confusion, with features I would never use anyway. To a much lesser degree Friendica offers the same experience. Features I would never care to use and a steep learning curve.

I have no technical expertise to offer, but I brag often in my Wordpress blog about diaspora* as the best of the federated platforms and why decentralized forums and “social media” are far superior to the big data farms.

My experience is exactly as @denschub describes:

Mastodon, Friendica, and diaspora* are very different projects, and I would not say either one is “better”. Mastodon had perfect timing and is catering a lot to the nerds who want something that feels like twitter but is not. Friendica caters a lot to the small group of people who want a tool that “can do everything” and are willing to spend weeks with learning Friendica. diaspora* caters to people who don’t want to spend weeks on learning how things work, and people who appreciate a simpler UX and are fine with the reduced set of features.

If making diaspora* “compatible” with all the others turns it’s wonderful, simple UI into a puzzling, bewildering interface with a steep learning curve, I would relocate to a pod that uses the current software (0.9).

If there’s any other way I can help besides bragging on my blog, I’d love to do it.

1 Like

Hello Sean, I have been following diaspora since the beginning, giving high hopes in it too. And I understand a bit how you might feel. Felt the same to a lesser degree though since I did not spent as much energy and time than you.

I’m happy that diaspora is still evolving, even if it so slowly and separate from the other federated networks, the fediverse. Maybe activitypub could be an opt-in-or-out at the user or pod level, keeping the simple UX so that everybody would be happy, but I guess it is a lot of work-time to code, and test, and maintain.

Here In France the “coup de grâce” occured when framasoft decided to close framasphere, the biggest and most active diaspora pod. Before migration was even possible, and I know @flaburgan try his best before and afterward to make migration feature happen but with no luck. And so diaspora, who was a bit known in France (even if it missed the “group” feature to replace facebook) disappeared from people’s mind. This is sad indeed.

But thanks anyway to all of those here who still work on diaspora, be it now a small niche project, and those of you who host and administrate a pod.