Very honest and important post-mortem. Key bits to me:
"You have to make T&S a priority early on. Bluesky got a bad reputation for the unseemly content that got posted early on, and the vibes of Bluesky being an unsafe place have continued..."
Also:
"The Fediverse...Joining ActivityPub would have been a big engineering effort, but federation could have brought in enough interesting content to make sticking around be worth it."
@tchambers
> Joining ActivityPub would have been a big engineering effort
Genuine and naive question: Is engineering against ActivityPub too hard?
Any time I hear about the task, it’s difficult and often not worth it. Is this an impediment to the ecosystem? Could generic AP software be viably made and shift this, by perhaps at least covering a decent subset of the spec?
From my perspective, major challenges are:
1. You cannot implement the spec as written and interoperate with mastodon (or any other major fediverse solutions)
2. There isn't an official test suite or a reference implementation. This situation is improving, but it still haunts new implementers
3. Interoperating with anyone is "whackamole driven development" because of the way extensions are handled and what is/is not implemented.
4. There's almost no incremental path.
@hrefna
I feel like people don't really grasp how long the ramp up is, and how completely impossible it is to implement federation incrementally. Maybe a visual will help some people?
I've been at this for 4 months, and only just now approaching the "federated" starting line when I can work on app features instead of activity pub & friends.
@jenniferplusplus @hrefna @maegul @tchambers that's why in my case (app.agorakit.org) I 'll wait for a very high level, working, laravel / packagist library. One can hope
@philippe
Honestly, that's reasonable. My best advise to someone else who wants to start this journey: choose a language that already has decent support for these protocols. Weirdly enough, Golang is probably top tier right now, despite AP being almost tailor made as a bad fit for parsing in Go.
@jenniferplusplus @philippe @hrefna @maegul Are there any good libraries written to do some of the activitypub heavy lifting?
@tchambers
Very few that I'm aware of. Gofed looks like the gold standard. (correct link)
https://github.com/go-fed/activity
I'm working in csharp, and my own libarary is coming along, but still early days.
https://github.com/Letterbook/Letterbook.ActivityPub
@hazel is contributing, and also working a more ambitious set of libs and tooling. We'd like converge on a single effort in the future.
Lemmy published a rust crate that looks like it's gained some maturity.
https://github.com/LemmyNet/activitypub-federation-rust
@tchambers
It seems like the trend in dynamically typed languages is to just let dynamic typing do the hardest parts.
And I'm sure there are some projects actually using JSON-LD processing. I explored doing that, but I find it's more trouble than it's worth, and processing AP messages as linked data takes hundreds of times longer than not.