{"id":843,"date":"2024-03-21T18:05:11","date_gmt":"2024-03-21T18:05:11","guid":{"rendered":"https:\/\/fde.cat\/index.php\/2024\/03\/21\/threads-has-entered-the-fediverse\/"},"modified":"2024-03-21T18:05:11","modified_gmt":"2024-03-21T18:05:11","slug":"threads-has-entered-the-fediverse","status":"publish","type":"post","link":"https:\/\/fde.cat\/index.php\/2024\/03\/21\/threads-has-entered-the-fediverse\/","title":{"rendered":"Threads has entered the fediverse"},"content":{"rendered":"<p><span>Threads has entered the fediverse! As part of our beta experience, now available in a few countries, Threads users aged 18+ with public profiles can now <\/span><a href=\"https:\/\/help.instagram.com\/760878905943039\" target=\"_blank\" rel=\"noopener\"><span>choose to share their Threads posts<\/span><\/a><span> to other ActivityPub-compliant servers.<\/span><br \/>\n<span>People on those servers can now follow federated Threads profiles and see, like, reply to, and repost posts from the fediverse.<\/span><br \/>\n<span>We\u2019re sharing how we\u2019re continuing to integrate Threads with the fediverse, the technical challenges, the solutions we\u2019ve come up with along the way, and what\u2019s next as we move toward making Threads fully interoperable.<\/span><\/p>\n<p><span>Threads\u2019 initial launch came together in<\/span><a href=\"https:\/\/engineering.fb.com\/2023\/09\/07\/culture\/threads-inside-story-metas-newest-social-app\/\" target=\"_blank\" rel=\"noopener\"> <span>only a few short months<\/span><\/a><span>. A nimble team of engineers, leveraging<\/span> <a href=\"https:\/\/engineering.fb.com\/2023\/12\/19\/core-infra\/how-meta-built-the-infrastructure-for-threads\/\" target=\"_blank\" rel=\"noopener\"><span>Meta\u2019s existing scalable infrastructure<\/span><\/a><span>, was able to make Threads Meta\u2019s most successful app launch of all time.<\/span><\/p>\n<p><span>Now, we\u2019re integrating Threads with the fediverse. With our beta experience, <\/span><a href=\"https:\/\/help.instagram.com\/760878905943039\" target=\"_blank\" rel=\"noopener\"><span>now available in a few countries, including the US,<\/span><\/a><span> Threads users aged 18+ with public profiles can now <\/span><a href=\"https:\/\/help.instagram.com\/760878905943039\" target=\"_blank\" rel=\"noopener\"><span>choose to federate their profiles<\/span><\/a><span> \u2013 allowing them to share their Threads posts to other <\/span><span>ActivityPub-compliant<\/span><span> servers, and enabling people on those servers to follow them, and like, reply to, and repost their posts.<\/span><\/p>\n<p><span>Building a federated platform \u2013 Meta\u2019s first app for open social networking \u2013 has meant new engineering challenges and opportunities. Designing for the fediverse comes with unique interoperability considerations and hurdles to overcome on the server side.\u00a0<\/span><\/p>\n<h2><span>What is the fediverse?<\/span><\/h2>\n<p><span>When we set out to build Threads our goal was always to build a decentralized social networking app within the fediverse, where federated networking gives people greater control over their online identity and the content they see, regardless of their chosen platform.<\/span><\/p>\n<p><span>One way to think about the fediverse is to compare it to email. You can send an email from a Gmail account to a Yahoo account, for example, because those services support the same protocols. Similarly, in the fediverse you can connect with people who use different social networking services that are built on the same protocol, removing the silos that confine people and their followers to any single platform. But unlike email, your fediverse conversations and profile are public and can be shared across servers.<\/span><\/p>\n<p><span>Building Threads on an open social networking protocol gives people more freedom and choice in the online communities they inhabit. <\/span><span>Every fediverse server can set its own community standards and content moderation policies, meaning people have the freedom to choose spaces that align with their values.<\/span><\/p>\n<p><span>We believe this decentralized approach, similar to the protocols governing email and the web itself, will play an important role in the future of online platforms. The fediverse promotes innovation and competition by fostering a more diverse and vibrant ecosystem of social media platforms that can easily connect with a wider audience.<\/span><\/p>\n<h2><span>What is ActivityPub?<\/span><\/h2>\n<p><span>Threads leverages <\/span><a href=\"https:\/\/www.w3.org\/TR\/activitypub\/\" target=\"_blank\" rel=\"noopener\"><span>ActivityPub<\/span><\/a><span> \u2013 a decentralized, open social networking protocol built by the <\/span><a href=\"https:\/\/www.w3.org\/\" target=\"_blank\" rel=\"noopener\"><span>World Wide Web Consortium(W3C)<\/span><\/a><span> \u2013 that is premised on a straightforward, fundamental idea: creating a social networking structure based on open protocols that allow people to communicate and network with each other regardless of the server they choose.\u00a0<\/span><\/p>\n<p><span>ActivityPub acts as a server-to-server protocol where the API allows decentralized servers to communicate with one another to deliver content and activities.\u00a0<\/span><\/p>\n<p><span>The protocol plays a key role in allowing Threads to be interoperable with other servers that also use it. Eventually, people on Threads will be able to interact with people on platforms like Mastodon and WordPress without having to sign up for accounts on those apps.<\/span><\/p>\n<h2><span>The current state of fediverse integration in Threads<\/span><\/h2>\n<p><span>With our beta experience, Threads users aged 18+ with public profiles can now <\/span><a href=\"https:\/\/help.instagram.com\/760878905943039\" target=\"_blank\" rel=\"noopener\"><span>choose to enable sharing to the fediverse<\/span><\/a><span>. If they do, they\u2019ll be able to publish posts on Threads that will be viewable on other ActivityPub-compliant servers. Threads users will also be able to see aggregated like counts on their posts from other fediverse servers directly from the Threads app. If people on other fediverse servers follow federated Threads profiles they\u2019ll be able to see, reply to, and repost Threads posts (if their server allows it).<\/span><\/p>\n\n<h3><span>What types of content are federated?<\/span><\/h3>\n<p><span>In this initial phase federated Threads users will not be able to see who liked their posts or any replies from people in the fediverse on Threads. For now, people who want to see replies on their posts on other fediverse servers will have to visit those servers directly.<\/span><\/p>\n<p><span>Certain types of posts and content are also not federated, including:<\/span><\/p>\n<p><span>Posts with restricted replies.<\/span><br \/>\n<span>Replies to non-federated posts.<\/span><br \/>\n<span>Post with polls (until future updates).<\/span><br \/>\n<span>Reposts of non-federated posts.<\/span><\/p>\n<p><span>For posts that contain links, a link attachment will be appended as a link at the end of the post if it is not already included in the post.\u00a0<\/span><\/p>\n<h2><span>Building more federated features for Threads<\/span><\/h2>\n<p><span>More federated features for Threads will come once we have addressed other technical hurdles in a way that we feel is safest and offers the best possible user experience. Within all of this, it\u2019s also important to us that, as we build these solutions, we do so alongside the open and decentralized fediverse developer community.\u00a0<\/span><\/p>\n<p><span>As we federate new features in Threads, we have to look at how to address the disparity in the availability and implementation of these features across servers.<\/span><\/p>\n<h3><span>Federating quote posts<\/span><\/h3>\n<p><span>Take quote posts as an example. They\u2019re a popular feature across all social media, but ActivityPub does not have a formal specification for how to handle them yet. Thus, fediverse servers have come up with their own methods of integrating and handling quote posts. Some servers allow for creating and viewing quote posts; others don\u2019t support the function at all.<\/span><\/p>\n<p><span>There are a handful of unofficial methods for handling quote posts in ActivityPub. One fediverse enhancement proposal (FEP),<\/span> <a href=\"https:\/\/codeberg.org\/fediverse\/fep\/src\/branch\/main\/fep\/e232\/fep-e232.md\" target=\"_blank\" rel=\"noopener\"><span>FEP-e232<\/span><\/a><span>, proposes a way to represent inline quotes and other text-based links to ActivityPub in a manner similar to mentions on other social media platforms. Another method would be to use the <\/span><span><span>quoteURL<\/span> <\/span><span>property within ActivityPub, which would assign posts an ID that could then be pulled into other posts that want to quote them.<\/span> <a href=\"https:\/\/misskey-hub.net\/ns\/\" target=\"_blank\" rel=\"noopener\"><span>Misskey created its own solution<\/span><\/a><span> with its <\/span><span>_misskey_quote<\/span><span> property, which builds on FEP-e232.<\/span><\/p>\n<p><span>Many fediverse servers also append extra syntax (<\/span><span>RE:&lt;quoted post URL&gt;<\/span><span>) to post content to make it compatible with servers that haven\u2019t implemented any of the structured methods for handling quote posts.<\/span><\/p>\n<p><span>After exploring different options pursued by the fediverse community, we chose to implement both FEP-e232 and<\/span><span> <span>_misskey_quote<\/span><\/span><span> to federate quote posts on Threads. As of now, none of these methods are official keys in the ActivityPub namespace. We chose <span>_misskey_quote<\/span><\/span><span> because its naming makes it clear that it\u2019s not an official ActivityPub method, and because we know that it\u2019s supported by Misskey, Firefish, and potentially other servers that use quote posts.<\/span><\/p>\n<p><span>In our current implementation, if a Threads user creates a quote post from a federated post, the quote post will contain a permalink URL (e.g. \u201c<\/span><span>RE: &lt;URL to permalink&gt;<\/span><span>\u201c) to the post along with a structured representation of the post. Platforms outside of Threads can display the quote post similar to how it\u2019s displayed on Threads by using the structured representation to fetch the post and display it within the quote post.<\/span><\/p>\n<p><span>If the post being quoted is not federated, the quote post\u2019s content will only contain the permalink URL and not the structured representation.\u00a0<\/span><\/p>\n<h3><span>Federated and non-federated interactions<\/span><\/h3>\n<p><span>If a federated Threads user is replying to, quoting, or reposting a post from another federated Threads user it makes perfect sense to federate that reply, quote, or repost (which we do).<\/span><\/p>\n<p><span>However, we had to take a careful look at the complexities that arise since not every Threads user will opt in to turn on sharing to the fediverse. Prioritizing the user experience for both those who federate and those who choose not to is important to us. Which also means federated and non-federated users on Threads should still be able to interact with one another seamlessly.\u00a0<\/span><\/p>\n<p><span>Unlike other federated platforms, Threads doesn\u2019t simply federate every post. Given that features like replies may or may not be federated, we had to build UI\/UX treatments and notices to help people understand what is happening and what to expect when posting.\u00a0<\/span><\/p>\n<h2><span>Our phased approach to the fediverse<\/span><\/h2>\n<p><span>We\u2019re taking a phased approach to Threads\u2019 fediverse integration to ensure we can continue to build responsibly and get valuable feedback from our users and the fediverse community.\u00a0<\/span><\/p>\n<p><span>In the future, we expect content to flow from the fediverse into Threads. Federated Threads users will be able to see and engage with replies to their posts coming from other servers, or follow people on other fediverse servers and engage with their content directly in Threads. Our plan is for fediverse-enabled Threads profiles to ultimately have one consolidated number of followers that combines users that followed them from Threads and users from other servers.\u00a0<\/span><\/p>\n<p><span>Building a federated social networking app is a complex and delicate process if it is to be done safely. While we don\u2019t have exact dates or details on our milestones just yet, we\u2019re committed to a fully interoperable experience, and we\u2019ll take the time to get this right and grow the fediverse responsibly.<\/span><\/p>\n<p><span>This is another step in our journey to make Threads fully interoperable. We will continue to collaborate with developers and policy makers so that people across services have the opportunity to experience the benefits the fediverse offers via a fully interoperable experience, including reaching new audiences and fostering their community. <\/span><\/p>\n<p>The post <a href=\"https:\/\/engineering.fb.com\/2024\/03\/21\/networking-traffic\/threads-has-entered-the-fediverse\/\">Threads has entered the fediverse<\/a> appeared first on <a href=\"https:\/\/engineering.fb.com\/\">Engineering at Meta<\/a>.<\/p>\n<p>Engineering at Meta<\/p>","protected":false},"excerpt":{"rendered":"<p>Threads has entered the fediverse! As part of our beta experience, now available in a few countries, Threads users aged 18+ with public profiles can now choose to share their Threads posts to other ActivityPub-compliant servers. People on those servers can now follow federated Threads profiles and see, like, reply to, and repost posts from&hellip; <a class=\"more-link\" href=\"https:\/\/fde.cat\/index.php\/2024\/03\/21\/threads-has-entered-the-fediverse\/\">Continue reading <span class=\"screen-reader-text\">Threads has entered the fediverse<\/span><\/a><\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","footnotes":""},"categories":[7],"tags":[],"class_list":["post-843","post","type-post","status-publish","format-standard","hentry","category-technology","entry"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":757,"url":"https:\/\/fde.cat\/index.php\/2023\/09\/07\/threads-the-inside-story-of-metas-newest-social-app\/","url_meta":{"origin":843,"position":0},"title":"Threads: The inside story of Meta\u2019s newest social app","date":"September 7, 2023","format":false,"excerpt":"Earlier this year, a small team of engineers at Meta started working on an idea for a new app. It would have all the features people expect from a text-based conversations app, but with one very key, distinctive goal \u2013 being an app that would allow people to share their\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":846,"url":"https:\/\/fde.cat\/index.php\/2024\/03\/26\/bringing-hdr-photo-support-to-instagram-and-threads\/","url_meta":{"origin":843,"position":1},"title":"Bringing HDR photo support to Instagram and Threads","date":"March 26, 2024","format":false,"excerpt":"Meta\u2019s family of apps serves trillions of image download requests every day. And if you\u2019re into high-quality images, you\u2019ve probably noticed that Instagram and Threads have added support for high dynamic range (HDR) photos. Now people on Threads and Instagram can upload and share images that are more true-to-life, with\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":865,"url":"https:\/\/fde.cat\/index.php\/2024\/05\/14\/behind-the-scenes-of-threads-for-web\/","url_meta":{"origin":843,"position":2},"title":"Behind the scenes of Threads for web","date":"May 14, 2024","format":false,"excerpt":"When Threads first launched one of the top feature requests was for a web client. In this episode of the Meta Tech Podcast, Pascal Hartig (@passy) sits down with Ally C. and Kevin C., two engineers on the Threads Web Team that delivered the basic version of Threads for web\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":805,"url":"https:\/\/fde.cat\/index.php\/2023\/12\/19\/how-meta-built-the-infrastructure-for-threads\/","url_meta":{"origin":843,"position":3},"title":"How Meta built the infrastructure for Threads","date":"December 19, 2023","format":false,"excerpt":"On July 5, 2023, Meta launched Threads, the newest product in our family of apps, to an unprecedented success that saw it garner over 100 million sign ups in its first five days. A small, nimble team of engineers built Threads over the course of only five months of technical\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":782,"url":"https:\/\/fde.cat\/index.php\/2023\/11\/06\/how-meta-built-threads-in-5-months\/","url_meta":{"origin":843,"position":4},"title":"How Meta built Threads in 5 months","date":"November 6, 2023","format":false,"excerpt":"In about five short months, a small team of engineers at Meta took Threads, the new text-based conversations app, from from an idea to the most successful app launch of all time, pulling in over 100M users in its first five days. But this achievement wouldn\u2019t have been possible without\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":809,"url":"https:\/\/fde.cat\/index.php\/2024\/01\/08\/sre-weekly-issue-406\/","url_meta":{"origin":843,"position":5},"title":"SRE Weekly Issue #406","date":"January 8, 2024","format":false,"excerpt":"View on sreweekly.com A message from our sponsor, FireHydrant: Signals is now available in beta. Sign up to experience alerting for modern DevOps teams: Page teams, not services. Ingest inputs from any source. Bucket pricing based on usage. And one platform \u2014 ring to retro \u2014 finally. https:\/\/firehydrant.com\/blog\/signals-beta-live\/ How to\u2026","rel":"","context":"In &quot;SRE&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/posts\/843","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/comments?post=843"}],"version-history":[{"count":0,"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/posts\/843\/revisions"}],"wp:attachment":[{"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/media?parent=843"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/categories?post=843"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/tags?post=843"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}