The AT Protocol ( Authenticated Transfer Protocol , pronounced " at -protocol" and commonly shortened to ATProto ) is a protocol and open standard for decentralized social networking services . It is under development by Bluesky Social PBC , a public benefit corporation originally created as an independent research group within Twitter to investigate the possibility of decentralizing the service.
56-508: The AT Protocol aims to address perceived issues with other decentralized protocols, such as user experience , platform interoperability , discoverability , network scalability , and portability of user data and social graphs . It employs a modular microservice architecture and a federated , server- agnostic user identity to enable seamless movement between protocol services, with the goal of providing an integrated online experience. Platforms can access and serve any user content within
112-438: A cryptographic commitment scheme , in which the root of the tree is seen as a commitment and leaf nodes may be revealed and proven to be part of the original commitment. The concept of a hash tree is named after Ralph Merkle , who patented it in 1979. Hash trees can be used to verify any kind of data stored, handled and transferred in and between computers. They can help ensure that data blocks received from other peers in
168-409: A cryptographic hash function such as SHA-2 is used for the hashing. If the hash tree only needs to protect against unintentional damage, unsecured checksums such as CRCs can be used. In the top of a hash tree there is a top hash (or root hash or master hash ). Before downloading a file on a P2P network , in most cases the top hash is acquired from a trusted source, for instance a friend or
224-399: A domain authority in reverse domain-name order , followed by an arbitrary name segment. For example, com.appview.foo is a valid NSID, where com.appview is the domain authority, and foo is the name segment. The most popular lexicon in the protocol, app.bsky , defines Bluesky's microblogging schema. Opinionated services are services within the protocol that process data from
280-452: A peer-to-peer network are received undamaged and unaltered, and even to check that the other peers do not lie and send fake blocks. Hash trees are used in: Suggestions have been made to use hash trees in trusted computing systems. The initial Bitcoin implementation of Merkle trees by Satoshi Nakamoto applies the compression step of the hash function to an excessive degree, which is mitigated by using Fast Merkle Trees. A hash tree
336-460: A "userβs perceptions and responses that result from the use and/or anticipated use of a system, product or service". According to the ISO definition, user experience includes all the users' emotions, beliefs, preferences, perceptions, physical and psychological responses, behaviors and accomplishments that occur before, during, and after use. The ISO also lists three factors that influence user experience:
392-431: A custom domain or subdomain as their handle (e.g. @username.com or @username.wikipedia.org ) by adding a TXT record to the domain's records or by responding a HTTP requests to a specific .well-known URL, associating the domain or subdomain to the user's DID. The protocol's dual identifier system provides both user-friendly identifiers for use in end-user services and consistent cryptographic identities within
448-490: A dual identifier system: a mutable domain name handle and an immutable decentralized identifier (DID) . Handles serve as user-end identifiers and are verified by querying a domain's resource records . DIDs resolve to DID documents, which contain references to key user metadata , such as the user's handle, public keys , and data repository. Services can assign handles to new users upon signup using subdomains (e.g. @username.bsky.social ). Alternatively, users can set
504-404: A hash list or hash chain becomes fairly big. But if it is a tree, one small branch can be downloaded quickly, the integrity of the branch can be checked, and then the downloading of data blocks can start. The Merkle hash root does not indicate the tree depth, enabling a second-preimage attack in which an attacker creates a document other than the original that has the same Merkle hash root. For
560-489: A main objective often conflicts with ethical user experience objectives and even causes harm. User experience is subjective . However, the attributes that make up the user experience are objective . According to Nielsen Norman Group , 'user experience' includes all the aspects of the interaction between the end-user with the company, its services, and its products. The international standard on ergonomics of human-system interaction , ISO 9241 , defines user experience as
616-440: A moderation service, they can also serve informational or entertainment purposes, such as labeling post topics, user pronouns, or adding positive or playful labels to user profiles and posts. Feed generators process posts within the firehose for inclusion in custom feeds. After a PDS query, they return a list of post IDs to the user's App View, which can then be used to create curated feeds. The protocol's reference implementation
SECTION 10
#1732801230549672-483: A monolithic server that hosts both user data and the application, it splits up these elements into smaller microservices , which can be used as needed. AT Protocol clients and services interoperate through an HTTP API called XRPC that primarily uses JSON for data serialization. Additionally, all data within the protocol that must be authenticated , referenced , or stored is encoded in CBOR . The AT Protocol utilizes
728-607: A standards body such as the Internet Engineering Task Force (IETF) in the near future. The AT Protocol aims to create a decentralized, interoperable, and scalable online ecosystem where users can retain, manage, and customize a single federated online identity across various online platforms and services. Bluesky Social describes the protocol as being "modeled after the open web itself". Compared to other protocols for social networking such as ActivityPub , where implementations are typically designed as
784-410: A task done) and user experience focusing on users' feelings stemming both from pragmatic and hedonic aspects of the system. Many practitioners use the terms interchangeably. The term "usability" pre-dates the term "user experience". Part of the reason the terms are often used interchangeably is that, as a practical matter, a user will, at a minimum, require sufficient usability to accomplish a task while
840-436: A type of unstructured binary data , in the user's host server. This allows network agents to access and process arbitrary media files regardless of their original schema or upload context. Personal Data Servers (PDSes) host user repositories and their associated media. They also serve as the network access point for users, facilitating repository updates, backups, data queries, and user requests. Platform clients access
896-453: A web site that is known to have good recommendations of files to download. When the top hash is available, the hash tree can be received from any non-trusted source, like any peer in the P2P network. Then, the received hash tree is checked against the trusted top hash, and if the hash tree is damaged or fake, another hash tree from another source will be tried until the program finds one that matches
952-708: A website is usually measured by a number of methods, including questionnaires, focus groups, observed usability tests, user journey mapping and other methods. A freely available questionnaire (available in several languages) is the User Experience Questionnaire (UEQ). The development and validation of this questionnaire is described in a computer science essay published in 2008. Higher levels of user experience have been linked to increased effectiveness of digital health interventions targeting improvements in physical activity, nutrition, mental health and smoking. Google Ngram Viewer shows wide use of
1008-600: Is a tree of hashes in which the leaves (i.e., leaf nodes, sometimes also called "leafs") are hashes of data blocks in, for instance, a file or set of files. Nodes farther up in the tree are the hashes of their respective children. For example, in the above picture hash 0 is the result of hashing the concatenation of hash 0-0 and hash 0-1 . That is, hash 0 = hash ( hash 0-0 + hash 0-1 ) where "+" denotes concatenation. Most hash tree implementations are binary (two child nodes under each node) but they can just as well use many more child nodes under each node. Usually,
1064-445: Is a key differentiator in the market. Merkle tree In cryptography and computer science , a hash tree or Merkle tree is a tree in which every "leaf" node is labelled with the cryptographic hash of a data block, and every node that is not a leaf (called a branch , inner node , or inode ) is labelled with the cryptographic hash of the labels of its child nodes. A hash tree allows efficient and secure verification of
1120-453: Is a prerequisite of some formal security proofs , and helps in making some proofs tighter. Some implementations limit the tree depth using hash tree depth prefixes before hashes, so any extracted hash chain is defined to be valid only if the prefix decreases at each step and is still positive when the leaf is reached. The Tiger tree hash is a widely used form of hash tree. It uses a binary hash tree (two child nodes under each node), usually has
1176-406: Is a user experience from a developer's point of view. It is defined by the tools, processes, and software that a developer uses when interacting with a product or system while in the process of production of another one, such as in software development . DX has had increased attention paid to it especially in businesses who primarily offer software as a service to other businesses where ease of use
SECTION 20
#17328012305491232-444: Is how a user interacts with and experiences a product , system or service . It includes a person's perceptions of utility , ease of use , and efficiency . Improving user experience is important to most companies, designers, and creators when creating and refining products because negative user experience can diminish the use of the product and, therefore, any desired positive impacts. Conversely, designing toward profitability as
1288-460: Is interested in understanding the long-term relation between user experience and product appreciation. The industry sees good overall user experience with a company's products as critical for securing brand loyalty and enhancing the growth of the customer base. All temporal levels of user experience (momentary, episodic, and long-term) are important, but the methods to design and evaluate these levels can be very different. Developer experience (DX)
1344-524: The ActivityPub protocol and of an early internal proposal for an architecture eventually not adopted by Bluesky Social, "Bluesky is not meaningfully decentralized and that it is certainly not federated according to any technical definition of federation we have had in a decentralized social network context previously. However, 'credible exit' is a reasonable term to describe what Bluesky is aiming for". User experience User experience ( UX )
1400-516: The ISO standard, there exist several other definitions for user experience. Some of them have been studied by various researchers. Early developments in user experience can be traced back to the Machine Age that includes the 19th and early 20th centuries. Inspired by the machine age intellectual framework, a quest for improving assembly processes to increase production efficiency and output led to
1456-598: The AT Protocol is a separate protocol with no major technical similarities to other protocols, there have been services developed that can bridge content across protocols. An example is the Bridgy Fed software, which can crosspost content between ActivityPub and the AT Protocol. Posts from Nostr can also be "double-bridged" to the AT Protocol via another bridge that can crosspost notes from Nostr to ActivityPub. According to Christine Lemmer-Webber , co-author of
1512-611: The ability to federate with other servers not run by Bluesky Social. Additionally, the news aggregator Flipboard allows users to login with their Bluesky account to view and interact with posts from the service. To aid adoption, Bluesky Social funds various projects that use the AT Protocol for federating and/or creating content via grants. A notable application funded by the grants is a proxy server known as SkyBridge, which can convert API calls from Mastodon apps to their equivalent AT Protocol/Bluesky APIs, allowing users to have access to both networks even without official support. While
1568-477: The ability to subscribe and unsubscribe to these services at any time through their client app (unless they are hard-coded into the user's current App View.) The modularity of these services allows for a customizable, stackable , user-centric approach to content curation and moderation within the protocol. Labelers produce judgements about user-generated content, such as identifying spam or inappropriate material. These labels can be applied to various aspects of
1624-671: The content was originally posted elsewhere in the network. For example, a new microblogging App View could choose to serve previously posted content using the lexicon defined by an established competitor, enabling them to provide novel features and services while maintaining compatibility with existing content. This schema design is intended to eliminate user lock-in and foster user-centric innovation by forcing App Views to differentiate themselves through unique user experiences and additional functionality, rather than relying on exclusive access to content. Lexicons are referenced within records using Namespaced Identifiers (NSIDs), which consist of
1680-435: The contents of a large data structure . A hash tree is a generalization of a hash list and a hash chain . Demonstrating that a leaf node is a part of a given binary hash tree requires computing a number of hashes proportional to the logarithm of the number of leaf nodes in the tree. Conversely, in a hash list, the number is proportional to the number of leaf nodes itself. A Merkle tree is therefore an efficient example of
1736-407: The development of major technological advancements, such as mass production of high-volume goods on moving assembly lines, high-speed printing press, large hydroelectric power production plants, and radio technology, to name a few. Frederick Winslow Taylor and Henry Ford were in the forefront of exploring new ways to make human labor more efficient and productive. Taylor's pioneering research into
AT Protocol - Misplaced Pages Continue
1792-408: The efficiency of interactions between workers and their tools is the earliest example that resembles today's user experience fundamentals. The term user experience was brought to wider knowledge by Donald Norman in the mid-1990s. He never intended the term "user experience" to be applied only to the affective aspects of usage. A review of his earlier work suggests that the term "user experience"
1848-475: The example above, an attacker can create a new document containing two data blocks, where the first is hash 0-0 + hash 0-1 , and the second is hash 1-0 + hash 1-1 . One simple fix is defined in Certificate Transparency : when computing leaf node hashes, a 0x00 byte is prepended to the hash data, while 0x01 is prepended when computing internal node hashes. Limiting the hash tree size
1904-571: The experience of text messaging affects the overall user experience with the phone. The overall user experience is not simply a sum of smaller interaction experiences, because some experiences are more salient than others. Overall user experience is also influenced by factors outside the actual interaction episode: brand , pricing, friends' opinions, reports in media, etc. One branch in user experience research focuses on emotions. This includes momentary experiences during interaction: designing effective interaction and evaluating emotions . Another branch
1960-552: The explicit request of the user. Each record within a repository's collection is assigned a unique record key , which is used by network agents to reference records within a user's repository. The current implementation of record keys is the timestamp identifier (TID), derived from the record's creation time. Repositories store collections in a Merkle search tree , which sorts records chronologically based on their TID. Media files, along with their metadata , size, and media type , are stored separately from repositories as blobs ,
2016-448: The feelings of the user may be less important, even to the user themselves. Since usability is about getting a task done, aspects of user experience like information architecture and user interface can help or hinder a user's experience. If a website has "bad" information architecture and a user has a difficult time finding what they are looking for, then a user will not have an effective, efficient, and satisfying search. In addition to
2072-407: The firehose to provide subjective judgements on network data for the purposes of content moderation and curation . These services contrast with the intended "unopinionated" nature of relays and App Views. Opinionated services enable users to customize their content consumption and moderation preferences within the protocol while maintaining the neutrality of the protocol's core components. Users have
2128-496: The network and a lack of clear incentives for running a relay. App Views , analogous to current-day social networking services , are end-user platforms and services within the protocol that consume, process, and deliver data from the relay to user clients in response to queries from users' PDSes. They utilize network-wide information from the firehose, such as posts, likes, follows, and replies, to create customized user experiences within their clients. The design of App Views within
2184-536: The network by fetching content formatted as predefined data schemas from federated network-wide data streams . The AT Protocol powers the Bluesky social network, which was created as a proof of concept for the protocol, and is the main service in an ecosystem of platforms and services built on the AT Protocol referred to as the ATmosphere . Bluesky Social has pledged to transfer the protocol's development to
2240-417: The network, including posts, images, or accounts. The output of labelers is consumed by App Views and PDSes, which can then provide various strategies to users for handling labeled content, such as hiding, labeling, or blurring. Bluesky Social has open-sourced its internal labeler moderation service "Ozone", allowing users to create custom moderation services for the network. Although labelers can be used as
2296-439: The network. Relays are a key component of the protocol's indexing infrastructure, serving as the core indexers within the network. Relays crawl the network by continuously fetching repository updates from PDSes before aggregating , indexing, and forwarding these updates into network-wide data streams , collectively called the firehose . The firehose is available to all network agents, and can be consumed by any service within
AT Protocol - Misplaced Pages Continue
2352-408: The network. Relays can choose to index all or part of the network. By eliminating the need to crawl or store user data and providing a unified data stream, relays simplify the development of applications and services in the protocol and reduce their operational costs. Relays have been criticized as being the most centralized component in the protocol's design, given their near-indispensable role in
2408-577: The protocol allows for significant variation in implementation. App Views can implement invite systems , custom algorithms , alternative clients , varying monetization and content moderation strategies, and off-protocol services. Despite these differences, all App Views operate from the same data sourced from the firehose. This architecture reduces the computational load and storage requirements of App Views, and prevents user lock-in by enabling users to easily switch between App Views while retaining their posts, follows, likes, etc. The largest App View on
2464-578: The protocol have the flexibility to define their own unique lexicons, or utilize existing ones. This approach allows App Views to create custom lexicons that are tailored to their specific use case while maintaining compatibility with the broader network. As an example, records displayed in an App View focused on microblogging would likely use a different lexicon than one focused on video-sharing , as their content types require different sets of attributes . However, App Views can also choose to serve content using lexicons defined by other App Views, even if
2520-429: The protocol is currently Bluesky , although other App Views, such as WhiteWind (a long-form blogging platform), Frontpage (a Hacker News -style social news website ) and Smoke Signal (an RSVP management service) are also available within the protocol. All posts within the AT Protocol follow a specific global schema language called a lexicon to support different service and platform modalities . App Views within
2576-406: The protocol on the user's behalf by querying their PDS, which, in turn, fetches the requested data from other services within the network. This design differs from ActivityPub , where protocol interactions and services are handled by monolithic host servers. Since network events are resolved through the protocol's network-wide indexing infrastructure, PDSes are, by design, largely inconsequential to
2632-486: The protocol, while also providing a robust TCP/IP -based account verification mechanism at the protocol level. User data within the protocol is stored in dedicated data repositories , or "repos". Each user is associated with a single repository, over which they have exclusive management rights. Repositories contain mutable collections of user records , which log actions such as posts, likes, follows, and blocks. Records are persistent and can only be added or removed at
2688-403: The result with hash 0-0 and then hash 1 and finally comparing the result with the top hash . Similarly, the integrity of data block L3 can be verified if the tree already has hash 1-1 and hash 0 . This can be an advantage since it is efficient to split files up in very small data blocks so that only small blocks have to be re-downloaded if they get damaged. If the hashed file is big, such
2744-403: The system, the user, and the context of use. Note 3 of the standard hints that usability addresses aspects of user experience, e.g. "usability criteria can be used to assess aspects of user experience". The standard does not go further in clarifying the relation between user experience and usability. Clearly, the two are overlapping concepts, with usability including pragmatic aspects (getting
2800-524: The term starting in the 1930s. "He suggested that more follow-up in the field would be welcomed by the user, and would be a means of incorporating the results of user's experience into the design of new machines." Use of the term in relation to computer software also pre-dates Norman . Many factors can influence a user's experience with a system. To address the variety, factors influencing user experience have been classified into three main categories: user's state and previous experience, system properties, and
2856-424: The top hash. The main difference from a hash list is that one branch of the hash tree can be downloaded at a time and the integrity of each branch can be checked immediately, even though the whole tree is not available yet. For example, in the picture, the integrity of data block L2 can be verified immediately if the tree already contains hash 0-0 and hash 1 by hashing the data block and iteratively combining
SECTION 50
#17328012305492912-409: The usage context (situation). Understanding representative users, working environments, interactions and emotional reactions help in designing the system during User experience design . Single experiences influence the overall user experience: the experience of a key click affects the experience of typing a text message, the experience of typing a message affects the experience of text messaging, and
2968-576: The user experience. The AT Protocol prioritizes data portability , enabling users to back up and migrate repositories and associated media without data loss, even in the event of an adversarial PDS. The design of PDSes within the protocol results in low computational requirements for operation, allowing individuals or groups to run their own PDSes without the need for significant computational resources. Although most users' repositories reside in PDSes run by Bluesky Social, many independent PDSes exist within
3024-550: The widespread use of the term "user experience" and its imprecise meaning as a consequence thereof. Several developments affected the rise of interest in the user experience: The field of user experience represents an expansion and extension of the field of usability, to include the holistic perspective of how a person feels about using a system. The focus is on pleasure and value as well as on performance. The exact definition, framework, and elements of user experience are still evolving. User experience of an interactive product or
3080-591: Was first released to GitHub on May 4, 2022 under the name Authenticated Data Experiment (ADX), and is licensed under both the MIT and Apache licenses. It rebranded to the AT Protocol in October 2022. The AT Protocol has been adopted for use by the Bluesky social network (also developed by Bluesky Social PBC), and is its most popular implementation. The social network itself opened federation with other Personal Data Servers in late February 2024, as it had launched without
3136-418: Was used to signal a shift to include affective factors, along with the pre-requisite behavioral concerns, which had been traditionally considered in the field. Many usability practitioners continue to research and attend to affective factors associated with end-users, and have been doing so for years, long before the term "user experience" was introduced in the mid-1990s. In an interview in 2007, Norman discusses
#548451