3 ms·
> ActivityPub is such a horrible protocol, and Mastodon has butchered it so much, it’s impossible to make an interoperable implementation without man-months of
by ratww 6y ago
> ActivityPub is such a horrible protocol, and Mastodon has butchered it so much, it’s impossible to make an interoperable implementation without man-months of work
The interesting thing is that ActivityPub's predecessor, ActivityStreams/OStatus was already butchered by Diaspora back in 2010. The other two implementations (StatusNet and Friendica) couldn't interoperate with it correctly. According to a person on their team, they never got it to work with the regular protocol so they rolled their own changes.
The other implementations were terrible as well, including the reference implementations. I believe one of the working implementation had even rolled their own crypto, making it impossible to use OpenSSL or any common library if you were writing a competitor. I only got it to interoperate with it after rolling MY own crypto, which of course was impossible to release.
- detaro 6y agoActivityPub didn't exist in 2010, and wasn't used by Diaspora, StatusNet nor Friendica.
- ratww 6y agoI'm talking about the predecessor that has a similar name and originated ActivityPub. I clarified it in my edit.
- detaro 6y agoI could be wrong, but I think Diaspora went for their own thing from the start (and then later considered adding OStatus support for compatibility, and then fizzled out). And then there was the pump.io initiative, which IMHO is the more direct predecessor of ActivityPub (e.g. one of the spec editors came from maintaining pump.io) Mastodon was luckily with being in the right place at the right time with what people wanted (or thought they wanted), both for user interest and for adoption of ActivityPub, which was being finished at the same time, and cemented a "flavor" of ActivityPub. (ActivityPub somewhat suffers from leaving too many details open, because people can't agree what's the best way of doing them)
- ratww 6y agoDiaspora did use OStatus back in the early 2010s, at the height of its popularity, and it's easy to find the code in their git repository [1][2][3]. It never interoperated, of course, because it was borderline impossible to do it. Some of the OStatus code is still there after almost 10 years. Mastodon also used OStatus before ActivityPub existed too, and this is why I'm mentioning OStatus/ActivityStreams: [4][5] ActivityPub was an evolution of ActivityStreams/OStatus, and was started by the same people that wrote StatusNet/Identi.ca/GnuSocial and did the OStatus work in the late 2000s. It's a small group. [1] https://github.com/diaspora/diaspora/blob/e100032244fec9de9cd143bead7a3e36bc8b30f3/lib/salmon/salmon.rb https://github.com/diaspora/diaspora/blob/e100032244fec9de9c... [2] https://github.com/diaspora/diaspora/blob/e100032244fec9de9cd143bead7a3e36bc8b30f3/lib/pubsubhubbub.rb https://github.com/diaspora/diaspora/blob/e100032244fec9de9c... [3] https://github.com/diaspora/diaspora/blob/e100032244fec9de9cd143bead7a3e36bc8b30f3/app/models/post.rb https://github.com/diaspora/diaspora/blob/e100032244fec9de9c... [4] https://github.com/tootsuite/mastodon/blob/8d93f0ca563322764ee4b5395598af542eb678e7/app/controllers/api/salmon_controller.rb https://github.com/tootsuite/mastodon/blob/8d93f0ca563322764... [5] https://github.com/tootsuite/mastodon/blob/8d93f0ca563322764ee4b5395598af542eb678e7/app/workers/pubsubhubbub/delivery_worker.rb https://github.com/tootsuite/mastodon/blob/8d93f0ca563322764...