{"id":757,"date":"2023-09-07T18:00:21","date_gmt":"2023-09-07T18:00:21","guid":{"rendered":"https:\/\/fde.cat\/index.php\/2023\/09\/07\/threads-the-inside-story-of-metas-newest-social-app\/"},"modified":"2023-09-07T18:00:21","modified_gmt":"2023-09-07T18:00:21","slug":"threads-the-inside-story-of-metas-newest-social-app","status":"publish","type":"post","link":"https:\/\/fde.cat\/index.php\/2023\/09\/07\/threads-the-inside-story-of-metas-newest-social-app\/","title":{"rendered":"Threads: The inside story of Meta\u2019s newest social app"},"content":{"rendered":"<p><span>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 content across multiple platforms. We wanted to build a decentralized (or federated) app that would enable people to post content that is viewable by anyone on other social apps, and vice versa.<\/span><\/p>\n<p><span>On July 5, people were greeted with a surprise when they logged into Instagram \u2013 an invitation to try a brand new app for sharing text and joining public conversations \u2013 <\/span><a href=\"https:\/\/about.fb.com\/news\/2023\/07\/introducing-threads-new-app-text-sharing\/\" target=\"_blank\" rel=\"noopener\"><span>Threads<\/span><\/a><span>.\u00a0<\/span><\/p>\n<p><span>Five days later, over 100 million people had joined Threads, making it the most successful app launch of all time.\u00a0<\/span><\/p>\n<p><span>It took a small, nimble engineering team working alongside Meta\u2019s infrastructure teams to take Threads from zero to 100 million people in record time with no major downtime. The story of its development and initial launch is the story of Meta\u2019s ability to scale with speed and impact. But Threads is still evolving. We are working toward making Threads compatible with the open, interoperable social networks that we believe can shape the future of the internet \u2013 where peoples\u2019 content exists in the fediverse and is platform-agnostic.<\/span><\/p>\n<h2><span>Planning and developing Threads<\/span><\/h2>\n<p><span>Threads was developed in an environment more akin to a startup. Creating a new app with such a small team meant assembling a group with a high level of trust \u2013 where everyone was aligned toward a singular goal and there was close alignment with our leadership, like the Head of Instagram, Adam Mosseri. People had to move fast and work independently, even as the team grew to roughly 60 engineers over the course of a few months. Daily burndown syncs, where we met to prioritize tasks, and setting monthly milestones were crucial.\u00a0<\/span><\/p>\n<p><span>Instagram uses <\/span><a href=\"https:\/\/engineering.fb.com\/2023\/08\/15\/developer-tools\/immortal-objects-for-python-instagram-meta\/\" target=\"_blank\" rel=\"noopener\"><span>Python (Django)<\/span><\/a><span> for its backend. By using the same backend for Threads, we could leverage a lot of the existing tech stack for Threads and reuse most of our existing data models, business logic, security features, and server infrastructure. This also meant users could sign in to the app with their existing Instagram account, making it super simple to onboard and set up your Threads app.\u00a0\u00a0<\/span><\/p>\n<p><span>The Threads mobile apps themselves were built primarily with Swift on iOS, and Jetpack Compose on Android. But building an app that needed to be ready to launch at any time, and moving on such a strict timeline, meant we had to be very intentional in determining the core set of minimum viable features the app could realistically roll out with. Features like keyword search, <a href=\"https:\/\/www.threads.net\/@zuck\/post\/Cw5YM82BzBF\/?igshid=MzRlODBiNWFlZA%3D%3D\" target=\"_blank\" rel=\"noopener\">which rolled out to more countries today<\/a>, and private messaging were put on hold for later updates, as were the decentralized features.<\/span><\/p>\n<p><span>You also can\u2019t go from zero to 100 million users without having an infrastructure in place that can handle that level of growth with efficiency and reliability. Threads scaled successfully to 100 million users without any major downtime thanks to <\/span><a href=\"https:\/\/engineering.fb.com\/2020\/12\/09\/data-center-engineering\/how-facebook-keeps-its-large-scale-infrastructure-hardware-up-and-running\/\" target=\"_blank\" rel=\"noopener\"><span>Meta\u2019s underlying infrastructure<\/span><\/a><span> and engineering foundations, which were critical to the successful launch.\u00a0<\/span><\/p>\n<p><span>Over the years, Meta\u2019s larger infrastructure, foundation, production, and engineering teams have already done a lot of the heavy lifting to build the infrastructure that has allowed us to scale Threads. Without this level of close collaboration we wouldn\u2019t have been able to support scaling the app to so many people so quickly.<\/span><\/p>\n<h2><span>The Threads launch<\/span><\/h2>\n<p><span>With everything moving ahead at full speed toward a July launch, our team saw and took an opportunity to release the app early. On the upside, this meant Meta would be able to offer a new social app at a time when people were eager for a new experience. But the earlier rollout also meant challenges around reduced time to dark test and ensure distribution channels were properly configured.<\/span><\/p>\n<p><span>Once the decision was made to launch, we set up launch rooms with teams across San Francisco, Menlo Park, New York, and London. Engineers from all parts of the Infrastructure team, the product teams, as well as on-call engineers were pulled in. At Meta, we have internal monitoring tools like <\/span><a href=\"https:\/\/engineering.fb.com\/2017\/02\/03\/core-data\/beringei-a-high-performance-time-series-storage-engine\/\" target=\"_blank\" rel=\"noopener\"><span>ODS<\/span><\/a><span> and <\/span><a href=\"https:\/\/research.facebook.com\/publications\/scuba-diving-into-data-at-facebook\/\" target=\"_blank\" rel=\"noopener\"><span>Scuba<\/span><\/a><span> that help us track important metrics that were displayed on dashboards throughout launch to monitor app health. Having tools like these in place was an important part of addressing scaling challenges that arose with the launch.\u00a0<\/span><\/p>\n<p><span>Some of the engineers on the Threads team had worked on a launch of this capacity previously, while others had not. But for the infra engineers this was just another day at the office. On the day of the launch, we had engineers, especially production engineers, that were incredible throughout the process \u2013 herding us all together and coordinating what we needed to do.\u00a0<\/span><\/p>\n<h2><span>The future is decentralized<\/span><\/h2>\n<p><span>Shortly after launch, we signaled that we are taking open standards seriously with Threads by allowing people to <\/span><a href=\"https:\/\/www.threads.net\/@mosseri\/post\/Cvu2fDiLZve\" target=\"_blank\" rel=\"noopener\"><span>use their Threads profile to verify their identity<\/span><\/a><span> on supported platforms like Mastodon.\u00a0<\/span><\/p>\n<p><span>Some people aren\u2019t familiar with the idea of the fediverse (federated universe), but, for me, the easiest analogy is to think of it like email. Let\u2019s say someone uses Gmail and another person uses Yahoo Mail. We don\u2019t think twice that they can send and receive emails to each other, even though one is on a Google platform and the other is on Yahoo. That\u2019s because email is interoperable and these two companies both conform to the SMTP protocol for delivering emails. But you can\u2019t do that today on social media. People on Instagram can\u2019t follow other creators on Tumblr, for example.<\/span><\/p>\n<p><span>Our goal with Threads is to make social content as interoperable as email. We are working on the ability for Threads to integrate with <\/span><a href=\"https:\/\/www.w3.org\/TR\/activitypub\/\" target=\"_blank\" rel=\"noopener\"><span>ActivityPub<\/span><\/a><span>, the open, decentralized social networking protocol. Once that happens people will be able to enjoy the best features of Threads across platforms. More importantly, they\u2019ll be able to have more control over their online social presence, regardless of any app or platform. They\u2019ll have the ability to distribute their posts to other social media apps, and consume content from creators on other apps on Threads.<\/span><\/p>\n<p><span>It\u2019s all about connecting with more people and helping the world be more open<\/span><span>.<\/span><\/p>\n<h2><span>Code wins arguments<\/span><\/h2>\n<p><span>Now that Threads is out in the world, we\u2019ve shifted our focus to improving the product, continuing to build new features and closing the feature gaps that people expect from an app like Threads. We recently launched <\/span><a href=\"https:\/\/about.fb.com\/news\/2023\/07\/introducing-threads-new-app-text-sharing\/\"><span>Threads on Web<\/span><\/a><span> and other new feature updates have already been rolled out, including Following feed, the ability to edit alt-text, and the ability to share a Thread to Instagram DMs.\u00a0<\/span><\/p>\n<p><span>Last week, Meta announced that we began testing keyword search, which allows people to search specific keywords they\u2019re interested in. <a href=\"https:\/\/www.threads.net\/@zuck\/post\/Cw5YM82BzBF\/?igshid=MzRlODBiNWFlZA%3D%3D\" target=\"_blank\" rel=\"noopener\">Today, we announced<\/a> we\u2019ll start rolling out the feature in English and Spanish, in countries where most people post in these languages \u2013 such as Argentina, India, Mexico, the United Kingdom and the United States \u2013 on both mobile and web.<\/span><\/p>\n<p><span>We could have built and designed the Threads app a million different ways. But we were able to complete the technical work for a new app in five months because we were given the freedom to operate in a completely greenfield space, where we could prototype things, test our ideas, and get internal feedback very quickly.\u00a0<\/span><\/p>\n<p><span>Code wins arguments. If we tested a feature and didn\u2019t like it, we rebuilt it until we landed on the best version. For some surfaces, like the activity feed, we rewrote it three times before we finally landed on an implementation that felt good enough.\u00a0\u00a0<\/span><\/p>\n<p><span>My ultimate hope for Threads is that it becomes the zeitgeist of the internet. It\u2019ll be the place you go to where you want to have positive conversations about the latest cultural events. It\u2019ll be where you want to go to see the latest conversations between creators, or between other people that you\u2019re interested in. I really hope to see that happen over the next few months as we continue to improve the product for you all.\u00a0 <\/span><\/p>\n<p>The post <a href=\"https:\/\/engineering.fb.com\/2023\/09\/07\/culture\/threads-inside-story-metas-newest-social-app\/\">Threads: The inside story of Meta\u2019s newest social app<\/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>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 content across multiple platforms. We&hellip; <a class=\"more-link\" href=\"https:\/\/fde.cat\/index.php\/2023\/09\/07\/threads-the-inside-story-of-metas-newest-social-app\/\">Continue reading <span class=\"screen-reader-text\">Threads: The inside story of Meta\u2019s newest social app<\/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-757","post","type-post","status-publish","format-standard","hentry","category-technology","entry"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":782,"url":"https:\/\/fde.cat\/index.php\/2023\/11\/06\/how-meta-built-threads-in-5-months\/","url_meta":{"origin":757,"position":0},"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":843,"url":"https:\/\/fde.cat\/index.php\/2024\/03\/21\/threads-has-entered-the-fediverse\/","url_meta":{"origin":757,"position":1},"title":"Threads has entered the fediverse","date":"March 21, 2024","format":false,"excerpt":"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\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":757,"position":2},"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":757,"position":3},"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":757,"position":4},"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":898,"url":"https:\/\/fde.cat\/index.php\/2024\/07\/18\/meet-caddy-metas-next-gen-mixed-reality-cad-software\/","url_meta":{"origin":757,"position":5},"title":"Meet Caddy \u2013 Meta\u2019s next-gen mixed reality CAD software","date":"July 18, 2024","format":false,"excerpt":"What happens when a team of mechanical engineers get tired of looking at flat images of 3D models over Zoom? Meet the team behind Caddy, a new CAD app for mixed reality. They join Pascal Hartig (@passy) on the Meta Tech Podcast to talk about teaching themselves to code, disrupting\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/posts\/757","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=757"}],"version-history":[{"count":0,"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/posts\/757\/revisions"}],"wp:attachment":[{"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/media?parent=757"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/categories?post=757"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/tags?post=757"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}