What does a PDS implementation entail? #2350
Replies: 4 comments 5 replies
-
Are there any clients (even if it's just a dev branch) that implement the client half of the OAuth proposal yet? |
Beta Was this translation helpful? Give feedback.
-
What does this look like? Is there a spec for it anywhere? (I assume this is how |
Beta Was this translation helpful? Give feedback.
-
Could you elaborate on this? Is this like delegating another service to be able to takedown accounts on your PDS? Is that already included somewhere in the canonical TS impl? |
Beta Was this translation helpful? Give feedback.
-
Currently, when the client makes requests to, say, |
Beta Was this translation helpful? Give feedback.
-
This is an informal overview of what a PDS does and what a "full" implementation covers.
A few folks are working on independent PDS implementations, either as earnest real-world infrastructure, or as learning projects. There are still a few roles and pieces of protocol that haven't stabilized, but those are increasingly "known unknowns" that can be pointed out.
Account and Identity
PDS instances host accounts for users, which require account management and lifecycle controls similar to any network server. While atproto identities (DIDs and handles) can in theory be entirely separate from the PDS, in practice the PDS is expected to help manage the user’s identity.
#identity
and#account
(coming soon) events on repo event streamIn terms of specifications:
Public Repositories
The defining feature of a PDS is hosting and managing public atproto repositories for accounts.
Optionally, PDS implementations can support “read-after-write” semantics. This requires application-specific awareness of Lexicons.
In terms of specifications:
Blobs
Public media files (like images, audio, and video) are referenced from records, though not stored directly in the repository data structure. The PDS is responsible for managing blobs and serving up original files, though it is recommended for applications to serve up content to end users and clients via a CDN. Blobs are generally stored and managed per-account.
Client Authn/Authz and Service Proxy
In the current network architecture, almost all client requests go to the account’s PDS instance and are proxied on to other services as needed.
It is possible this will change at some point, with requests going directly from clients to other atproto services, but are not sure whether that would be an overall improvement, and have no specific plans to change that aspect of the architecture for now.
In the near future, the PDS will be full-fledged OAuth Authorization server, and will track any registered client software, will provide a web interface for individual accounts to approve (or reject) client or integration privileges, and will enforce scope limitations to API and repository access.
atproto-proxy
header)In terms of specifications:
Preferences and Private State
PDS instances store arbitrary Lexicon-defined private preferences and configuration. This aids synchronization across multiple devices and clients, and ensures that this data can be exported and re-imported during PDS account migration.
Anti-Abuse
While we hope and expect labelers and product features to address most forms of content moderation and interpersonal disputes, there are some specific forms of harmful content and network abuse that need to be addressed at the PDS level.
Future Work
Beta Was this translation helpful? Give feedback.
All reactions