TNS
VOXPOP
What’s Slowing You Down?
What is your biggest inhibitor to shipping software faster?
Complicated codebase and technical debt.
0%
QA, writing tests, and debugging.
0%
Waiting for PR review or stakeholder approval.
0%
I'm always waiting due to long build times.
0%
Rework due to unclear or incomplete specifications.
0%
Inadequate tooling or infrastructure.
0%
Other.
0%
Frontend Development / Open Source

Threads Adopting ActivityPub Makes Sense, but Won’t Be Easy

Threads will soon connect its 100 million users to the fediverse via ActivityPub. But Meta faces a number of technical and social challenges.
Jul 12th, 2023 7:21am by
Featued image for: Threads Adopting ActivityPub Makes Sense, but Won’t Be Easy

From a developer point of view, the fact that Meta’s Threads app has quickly gone over 100 million sign-ups isn’t the most interesting part of this latest Twitter clone. More intriguing is Meta’s promise to make Threads a part of the fediverse, by adding support for the World Wide Web Consortium (W3C) ActivityPub specification.

The fediverse is a collection of decentralized social media services that interconnect via ActivityPub. The most prominent member of the fediverse is Mastodon, a microblogging network that launched in 2017. But many other Web 2.0-style apps have been built on ActivityPub — including Bookwyrm (Goodreads), Lemmy (Reddit), PeerTube (YouTube), and PixelFed (Flickr).

I reached out to Meta for further comment on its proposed ActivityPub support. I was told that Meta has more to share about this, but not right now. Regardless, we know enough to do some early analysis on how Threads might support ActivityPub and what it will mean for current fediverse applications (especially microblogging ones, like Mastodon).

What Is Threads and How Will It Join the Fediverse

First, let’s clarify what Threads is. It looks and feels a lot like Twitter — “posts can be up to 500 characters long and include links, photos, and videos up to 5 minutes in length.” But it is also noticeably influenced by Instagram. First and foremost, Threads inherits Instagram’s social graph — you’re invited to log in to Threads using your Instagram account, and with one click you can choose to follow the same people you already follow on Instagram.

The algorithm driving the home feed is also very similar to Instagram — it’s not a straight chronological feed, but a “‘black box” that delivers you a mix of content from people you follow along with trending content from celebrities and influencers. The lack of a straight chronological feed has been one of the main criticisms so far of Threads; in response, Instagram boss Adam Mosseri has said that a feed of just the people you follow is being worked on.

Threads also inherits the slick UI of Instagram.

Threads was built by the Instagram team (under Meta’s banner), and so Instagram’s help page on Threads is useful context about its plans to join the fediverse. Instagram states:

“Our vision is that Threads will enable you to communicate with people on other fediverse platforms we don’t own or control. This means that your Threads profile can follow and be followed by people using different servers on the fediverse.”

Mastodon creator Eugen Rochko was cautiously optimistic about Threads on the day of its release. In a blog post, Rochko said that it was “validation of the movement towards decentralised social media” and “a clear victory for our cause.”

Incidentally, Meta’s announcement stated that “Threads is Meta’s first app envisioned to be compatible with an open social networking protocol.” So Meta might end up supporting more than just ActivityPub — but it’s too early to speculate about that.

Why Meta Chose to Support ActivityPub

It’s no coincidence that Meta chose ActivityPub and not an alternative decentralized protocol for its Threads product. Certainly, ActivityPub is the most mature “fediverse” protocol, but there are others out there — such as Tim Berners-Lee’s Solid and Bluesky’s AT Protocol. But ActivityPub perfectly suits Meta’s goals, I suspect, and here’s why:

With ActivityPub, the server manages your identity and data. So when you join Mastodon, for example, you are essentially entrusting management of your data to the server (“instance”) you join. As fediverse developer Ryan Barrett put it in a post this week, your ActivityPub “identity, data, and administration are all tied to your instance, for both technical and cultural reasons.” Among other things, this architecture enables your instance to make moderation decisions on your behalf. You’re still free to move to another instance, at any time and for whatever reason, but you can’t port your data (your posts and media) from one instance to another.

I mention all this because it plays right into Meta’s strengths. Meta will still control the identity layer even when it integrates with ActivityPub — and that’s immensely valuable when you’re the owner of Instagram’s social graph. Since Threads is also hosted on Meta’s servers, all your data is managed by Meta too.

There’s no way Meta would’ve wanted to join the AT Protocol or Solid, because in both cases they would potentially be handing over control of identity and at least some data to their users. As Barrett put it in a separate post: “One core difference between the fediverse and the AT Protocol seems to be that AT decouples many key building blocks — identity, moderation, ranking algorithms, even your own data to some degree — from your server.”

Challenges for Meta and Threads

This week a representative from Meta, a software engineer named Ben Savage, joined the ActivityPub working group in the W3C. Savage is based in Singapore and has worked at Meta/Facebook for over ten years. He says he’s represented Facebook in W3C forums like the Private Advertising Technology Community Group and the Privacy Community Group, and he seems genuinely keen to help Threads adopt ActivityPub. “I’m really excited for the moment when ActivityPub integration is launched and I can start following my friends on Mastodon,” he wrote in a LinkedIn post about his assignment.

Evan Prodromou, one of the creators of ActivityPub and who runs a weekly “issue triage live session” for the ActivityPub working group, gave Savage a warm welcome.

But unsurprisingly, others gave him a less than warm welcome (“The company you work for does disgusting things,” wrote one member, citing as an example that Meta “builds walls and lures people into them”). There’s also a small group of Mastodon instances that are threatening to “defederate” from Threads if it joins the fediverse — meaning they won’t include Threads users in their extended networks. This doesn’t seem to be a widespread feeling among Mastodon maintainers, but it does illustrate the social pressure that Meta will face as it moves forward with its plan to adopt ActivityPub.

There are, of course, also technical challenges that will need to be overcome. As another W3C working group member, Johannes Ernst, put it, “I think one of the things we are all very interested in learning is just what exact stack of protocols Meta is implementing, and then the higher-level policies not prescribed in the standard.” Ernst pointed out that “merely implementing ActivityPub in itself is not sufficient to produce interoperable software nor make what’s happening comprehensible to users.” For example, which of the activity types will Threads implement? Will it allow hyperlinks and HTML markup? These are the specific kinds of technical questions that Threads will need to address in the coming months.

Conclusion

It’s early days, but in my humble experience Threads feels like a text-based version of Instagram: the content is a mix of aspirational and motivational, and the current algorithmic timeline is peppered with celebrities and influencers peddling their memes. Perhaps the biggest challenge integrating with fediverse apps like Mastodon will be the cultural differences between the two communities.

That said, there will always be at least a few people you want to connect with on alternative networks — and that’s the beauty of ActivityPub. So, if nothing else, I hope Meta does successfully adopt the protocol so that Mastodon users like me can add a few Threads users to their feeds. The ideal outcome would be a bunch of new apps getting built that tap into the social graphs of both Mastodon and Threads, but I think that’s too pie-in-the-sky right now. Let’s just get the two networks connected first.

Group Created with Sketch.
TNS DAILY NEWSLETTER Receive a free roundup of the most recent TNS articles in your inbox each day.