6 ms·
> The only two relevant pieces of Fedi software are Pleroma and Mastodon. ActivityPub is such a horrible protocol, and Mastodon has butchered it so much, it’s i
by panic 6y ago
> The only two relevant pieces of Fedi software are Pleroma and Mastodon. 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. To reimplement Mastodon from the ground up would be a nightmare.
Interoperability through simple protocols is such an underrated property of a social network. Despite being a proprietary service, AIM's TOC protocol could be implemented from scratch in just a few hundred lines of code -- remember how many third party AIM clients there were? Even implementing the ActivityStreams system that ActivityPub is built on top of takes more code than that. From what I've seen, IPFS has the same problem -- an exciting decentralized model locked behind a nightmarishly overengineered protocol. Who is working on simpler alternatives to these systems?
- danlugo92 6y agowww.gun.eco Decentralized and dead-simple interface (but not protocol sadly).
- 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...
- julius 6y agoStupid question: Why not RSS? User publishes a text, image, video. The feed gets updated. There are already a lot of services that can make you a newsfeed from following a bunch of RSS Feeds. PeerTube already allows me to follow a channel using RSS: https://tilvids.com/videos/watch/d8bf70c8-4de4-4110-a375-217a4621f541 https://tilvids.com/videos/watch/d8bf70c8-4de4-4110-a375-217... (Click on Subscribe -> RSS Feed) What feature does ActivityPub have that is essential for building something like Mastodon?
- Arnt 6y agoThe article mentions a server in Japan that has a million users. Assume they each follow 15 users, half on their own instance, half elsewhere, and that off-instance followees are followed by an average of three users. If it used RSS, that server would issue 2.5m HTTP GET requests every few minutes in order to update the feeds, even the feeds where nothing has changed. Of course it could/would use per-feed adaptive fetch frequency and use HTTP if-modified-since, but all that's only damage limitation. This happens because RSS network activity is mostly O(users × time), not O(activity).
- robjan 6y agoJust throwing ideas out there but each instance could have its "firehose" feed and ping discovery services / followed instances when there is a relevant update. Not sure if there is any benefit over just sending the update and part of the ping payload.
- ratww 6y agoActivityPub "evolved" out of ActivityStreams, which were an extension of plain Atom feeds. Basically it was an Atom feed with some extra fields. The way we got it to work efficiently was by not using polling, but rather by using a push protocol called PubSubHubbub/WebSub that was championed by Google. PubSubHubbub/WebSub is compatible with RSS, so it's entirely possible to do what GP is proposing.
- Arnt 6y agoOh, I see. I thought the pushing was more tightly integrated than that. Anyway, gluing PubSubHubbub to RSS doesn't seem like a meaningful improvement over gluing it to Atom. Not a simplification either.