snarfed / bridgy-fed

🌉 A bridge between decentralized social network protocols
https://fed.brid.gy/
Creative Commons Zero v1.0 Universal
500 stars 28 forks source link

AP => ATproto: Support custom handle domains for bridged accounts on the AT side #826

Open jfietkau opened 5 months ago

jfietkau commented 5 months ago

Suppose I have an ActivityPub account @alice@example.com that I intend to use to interact with Bluesky users via Bridgy Fed. I gather that if I do nothing in particular, my AT/Bluesky handle will be alice.example.com.ap.brid.gy.

Suppose further that I have administrative control over example.com. I can add DNS records, set up selective resource proxying, etc. What are my options for using a custom domain for the account handle?

Going by the Bluesky documentation on custom domain handles, I should be able to use @example.com as my handle by adding a DNS record containing my DID. Is this the case for accounts bridged by Bridgy Fed as well? I assume that my account's DID will be created automatically by Bridgy Fed whenever I first interact with a Bluesky account through it. Is there a way to find the Bridgy Fed DID corresponding to my AP account early or do I need to wait until Bluesky enables federation?

The Bridgy Fed documentation states that I have the option to use @alice.example.com as my AT/Bluesky handle if I proxy selected /.well-known requests to Bridgy Fed. Are the precise requirements for this process documented anywhere yet?

For either solution: is there a way to test it, or generally see what my bridged AT profile would look like before Bluesky launches federation, or should I just wait?

snarfed commented 5 months ago

Thank you for filing! Really great sleuthing and thinking here. You're a bit ahead of me!

I expect/hope to make custom handles like this possible on accounts bridged to Bluesky. I don't know if that will ship on day one of Bluesky support, and it's not my top priority right now, since I can add it and not change those bridged accounts' identities, but if/when it does, it will work largely as you've described.

(The link to the BF docs you mentioned is more developer design doc than user-facing feature documentation, hence including some...that aren't launched here, or even fully implemented or thought through yet, and Green parts have been implemented and running here for years, the rest are still in the early design phase.)

I'm currently prioritizing the fediverse equivalent a bit more because I can't add it after the fact transparently. If someone starts out as @example.com@bsky.brid.gy, and then later I change them to @example.com@example.com, that's a whole new fediverse actor and account.

snarfed commented 5 months ago

The one key issue with custom handles I'm still not sure about is identifying which bridged account for a given domain to use. For example, if someone has a web site on example.com and a native Bluesky account with handle example.com, and they redirect Webfinger to Bridgy Fed, which of those two should it bridge into the @example.com@example.com fediverse account?

Fortunately, this isn't a problem for all networks. For Bluesky, each bridged account would have a different DID, and if you validate your handle with DNS, you'd put the DID you want in the DNS record. It might still be a problem if I let people redirect /.well-known/atproto to BF and have it do HTTPS handle validation instead, but I haven't gotten that far into the design yet.

jfietkau commented 5 months ago

Thank you for the clarification! Sounds like for now all I need to do is wait. 🙂 My understanding of AT is very superficial, so I'm glad to hear I was on the right track.

For example, if someone has a web site on example.com and a native Bluesky account with handle example.com, and they redirect Webfinger to Bridgy Fed, which of those two should it bridge into the @example.com@example.com fediverse account?

That's a good question, especially given that people with only a website or only a Bluesky account with a custom domain handle might add the other one at any later date. Off the top of my head, I can't think of a better solution than picking an arbitrary priority and giving the second account in line a suffix.

snarfed commented 2 months ago

Related: #821

elfprince13 commented 2 weeks ago

Following up on this with a closely related scenario (originally posed in a Bluesky post).

I currently control:

Even a single-user Mastodon instance does not run particularly well on a small AWS instance, and it requires more attention than I want to allocate for it to constantly switch apps for posting, so I have been thinking of sunsetting the Mastodon account in favor of the Bluesky account; however, I would like to:

snarfed commented 2 weeks ago

Thanks @elfprince13! Sounds like you're hoping for this issue (custom domain handles for Bluesky bridged accounts), plus custom ActivityPub usernames (already supported for web sites), plus #330.

jfietkau commented 2 weeks ago

Taking the liberty to rewrite this issue's title to clarify that I'm talking about ActivityPub accounts bridged into ATproto. I don't know to what extent @snarfed will want to work on custom handles for both directions at the same time, but the AT => AP use case might warrant a separate issue.

snarfed commented 2 weeks ago

Thanks @jfietkau! Yeah Bluesky => AP is https://github.com/snarfed/bridgy-fed/issues/1150.

elfprince13 commented 2 weeks ago

Yes sorry - my brain was apparently in mirror world when reading this thread first time through. -- ~Thomas

Fauli1221 commented 2 weeks ago

I personally am interested in this I have a AP account @twitchtrot@hooves.social and a AT twitchtrot.horse and I want to migrate twitchtrot.horse into a mirror of @twitchtrot@hooves.social while keeping all the followers and the handle Will that be possible at some point?

snarfed commented 2 weeks ago

@Fauli1221 it's a great idea! We've discussed it in eg https://github.com/snarfed/bridgy-fed/issues/330#issuecomment-2176216675 . It's arguably outside Bridgy Fed's scope, but it could be a good idea for a new service that uses a lot of BF's (and its libraries') guts under the hood, since it's all open source.