Reddit alternative on ATProto #1199
Replies: 3 comments 4 replies
-
We will need to follow up with more substance, but just want to say quickly that we think this is great and would like to support it. There is some work in flight right now on splitting the Bluesky AppView out from the PDS, which will involve proxying requests and be relevant to that part of the request: #1191 We have longer-term auth ideas to work through, but might be able to whip up something shorter term. Pretty sure we can/should open up to additional Lexicons sooner than later. |
Beta Was this translation helpful? Give feedback.
-
Yup as @bnewbold said, the good news is that both of the required changes seem likely to land here soon! I don't think anything is stopping us from opening up to additional lexicons shortly. We just need to sand off a couple of rough edges with blob processing & validation before we allow it. We're currently working on splitting the Bluesky AppView out from the PDS, and I think that's a great time to get this in. I would hope to land it within the next 2 weeks or so. As far as proxying XRPC requests, that is also something we're interested in getting in soon, but is a bit more of a lift - maintaining routing tables etc 🤔 One option in the mean time could be to add a new route that lets a client request a short term service auth token (lasts for 30-60s). I'll coordinate with the team on deciding what the best path forward is for that A note on the datamodel: I think I would avoid trying to do something smart with rkey overlap. Seems like a spot that could possibly backfire. One option that I think fits the problem pretty well is:
This should allow a board to still determine what exactly is contained on the board, apply moderation, migrate to a new server, etc. While giving the user ultimate authority over the post & its existence. As @bnewbold said, we're interested in supporting in whatever way we can. So feel free to contact us with any questions, advice for data modeling, and or limits of our services that you're running into. We don't have the bandwidth to dedicate to fleshing this out, so I'm absolutely stoked that some folks are excited to hack on it & we wanna help you along as much as we can |
Beta Was this translation helpful? Give feedback.
-
Dumb question, with the way things are set up now, would only people who are off the bluesky waitlist be able to join, or is that a bluesky-specific constraint that doesn't apply to AT Proto in general? Looking around / trying to answer this myself at a glance -- I guess AT Proto hasn't "launched" yet, maybe once it has then there would also be no bluesky waitlist anymore? |
Beta Was this translation helpful? Give feedback.
-
There's great interest in a decentralized Reddit alternative, especially surrounding the current API controversy. ATProto would be a great base layer for this.
So I created a concept and recently updated it with some valuable feedback from @dholms and @ericvolp12: https://github.com/redsolver/atproto
The next step would be to build it, and that depends on ATProto allowing creating custom records in new collections/lexicons. When trying to create a new record it fails with
Lexicon not found
and when disabling validation it fails withUnvalidated writes are not yet supported.
. I could temporarily fork ATProto and run a public test instance, but that would be a high barrier to entry if users want to try/test the new features. The UI for creating these new record would be provided by third-party clients.A challenge for the "board" (that's how subreddits are called in the concept) architecture is that the board needs to store most user actions like upvotes to be efficient, but this would require them to be signed by both the user and the board which adds a lot of complexity. I think a simple and elegant solution would be that both the user AND the board publish a record in their repos with exactly the same rkey and cid. So for example if a user submits something (like a link) to a board, it's first stored in the board repo and then copied to the user repo. The integrity can be verified by checking both repos. All records have a field for the user and the board DID to prevent other users or boards from abusing this signature system. An interesting concept could also be the feature to fork repos and keep all data, but replace the admin team/moderators if the previous ones abused their power.
Boards will be services hosted somewhere and very similar to how feed generators work, except that they have a more complex API and a full repo. A requirement for this to work would be that XRPC calls to these board services are proxied by the users PDS and an auth header added which authenticates the user securely (important for moderation actions and more). A board publishes a profile record (like bluesky) which contains metadata about it and a list of HTTPS
serviceEndpoints
. They provide all relevant XRPC APIs for the board.So this issue asks for the following changes in ATProto:
Beta Was this translation helpful? Give feedback.
All reactions