Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reddit alternative on ATProto #1196

Closed
redsolver opened this issue Jun 12, 2023 · 0 comments
Closed

Reddit alternative on ATProto #1196

redsolver opened this issue Jun 12, 2023 · 0 comments

Comments

@redsolver
Copy link

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 with Unvalidated 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:

  • Allow custom lexicons/collections
  • Proxy XRPC API calls to a third-party API server with user auth
@bluesky-social bluesky-social locked and limited conversation to collaborators Jun 12, 2023
@bnewbold bnewbold converted this issue into discussion #1199 Jun 12, 2023

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant