bluesky-social / atproto

Social networking technology created by Bluesky
Other
5.77k stars 407 forks source link

Feature to migrate custom feeds between accounts #2200

Open rudyfraser opened 4 months ago

rudyfraser commented 4 months ago

Is your feature request related to a problem? Please describe.

The Blacksky feeds are currently under my personal account but I've started to create a brand around Blacksky with an official account, official website, etc. I'm now unable to move the Blacksky feeds over without breaking links to the feed and losing likes on the feed.

Describe the solution you'd like

An API endpoint that would allow moving app.bsky.feed.generator records to other repos/accounts. Doesn't seem like putRecord as is would allow for this. Ideally, old links would redirect.

Describe alternatives you've considered

There isn't an alternative besides recreating the feed on a new account, breaking existing links, and losing likes.

Additional context

Spoke with Newbold about this and seems like Jaz is needing to do something similar with their feeds.

bnewbold commented 4 months ago

A couple thoughts on migrating feedgen records specifically:

We don't have any plan to have a generic record redirect or migration flow in atproto, but we might be able to create workarounds for specific record types, like feed generators, and mod service records in the future.

One path would be to add a special pointer field in the old record, which reference the new record. The client would be updated to detect this field for subscribed feeds, and re-write private subscription metadata (and public like record) to match. It would probably be a bit delicate piece of code, we'd want to avoid getting in a loop or nested redirects/rewrites and things like that. This would only work for folks using our client, but that is still a pretty large fraction of the ecosystem.

Another approach would be trying to do backend surgery on private metadata to re-write subscriptions.

Both of these approaches might become easier in the near future, when we refactor the preferences / private-state system to look a bit more like records in the repository; i'm not sure.