Idiomdrottning’s homepage

“Donkey”/“Zebra” style bridging

Okay so how about if it worked like this:

Let’s say I wanted to connect AT proto and ActivityPub from the ActivityPub side of things.

I’m gonna call this style of bridge “Donkey”.

Donkey would do three things for an ActivityPub user:

Maybe it also lets me log in with another AT proto client if I want to do more unusual stuff.

What Donkey never ever does is to try to create an ActivityPub presence for AT users. It’s not a puppeting bridge. It’s an AT presence with crossposting-from-ActivityPub and maybe a Fedi DM UI.

There might also be a corresponding version, Zebra, for AT proto users who want to bridge into ActivityPub.

And if they were to interact wih me through their own Zebra I’d see it as normal ActivityPub posts (and wouldn’t use Donkey for those posts) and if they were to reply with normal AT posts I’d see them through Donkey and could interact with them through Donkey.

This way we wouldn’t have to worry about multiple instances of bridges. I’d have one ActivityPub presence and one AT presence that I’d set up intentionally through using Donkey. No one gets automatically puppeted. AT fans can create an ActivityPub presence with Zebra, and ActivityPub fans can create an AT presence with Donkey. And they’re just normal clients that happen to be able to auto crosspost the main public posts.

And there’d be no need for opting since it’s just a normal client that doesn’t context-shift anyone else nor try to republish them or to puppet their presence nor expose them to a whole group of invisible people they’re not aware of. It only sends it to one person: the person you were already talking to.

Why not Bridgy Fed?

I can’t even begin to fathom the amount of workhours that have gone into Bridgy Fed which is an awesome feat of engineering.

I feel so guilty complaining about it.

But it doesn’t really do what I want.

The lead sheet

Here’s the problem: If I use Bridgy Fed to bridgy my ActivityPub account to AT proto, and unbridged people on there were to reply to my posts on there, I wouldn’t be able to interact with those post or even be aware of them. It’s like a whole lead sheet between me and them.

It’s that same issue that caused Libera Chat to shut down their Matrix bridge: people were kibbitzing on Libera messages (and mocking them) in a way that was invisible to the chatters on the libera side.

Bridgy Fed has this limitation because the original release crossposted a bunch of posts publicly in a way that context-shifted people who didn’t want that. And in a corrective response to that backlash, everything became opt-in.

Bridgy Fed is a double-puppeting bridge which, in a world where every human on earth would want to opt in, would be the most “natural”-looking bridge. On Fedi, every Bsky-user would look like a Fedi user, and vice versa.

That’s not something Donkey/Zebra attempts to do. Donkey is like your u-boat into the other realm. It reposts your posts, and lets you interact through it. You look like a normal citizen of the other realm to them and your own posts look normal. But you interact with the responses to that post through the periscope of Donkey, through messaging with Donkey.

The Needle’s Eye

That also fixes another issue Bridgy Fed had. With double-puppeting bridges, how could there ever be more than one instance? Each instance would create separate accounts and then maybe bridge back each others accounts in a crashing loop like in the 90s where two email vacation autoresponders started messaging each other before idempotence was invented. So it only works if there is exactly one instance; so we’re back to a centralized social network since everything in either bulb of the ourglass need to pass through this one chokepoint. I think the devs did come up with a fix based on id, but it’s a problem Donkey/Zebra doesn’t even have since you’re just bridging over your own posts.

Migration

A third problem with Bridgy Fed, and one that Donkey does not automatically fix, is how once you’ve used Bridgy Fed to create a AT proto presence, that can’t be “migrated” to any other kind of AT proto presence. I.e. if you get sick of the lead sheet effect and just want to switch to a normal account instead, you can’t.

Probably & hopefully there are ways to program in a fix for this whether we’re using Bridgy Fed or Donkey/Zebra but this is one issue that isn’t just automatically solved by Donkey architecture, that we still need to keep a look out for.

Privacy

Another shared issue is that ActivityPub has garbage privacy: your instance maint can see everything you do. So if you’re talking to Donkey through whispers / DM, your instance maintainer can still see that. Although arguably, Bridgy Fed adds an additional privacy concern since it’s a single centralized instance where you’d have to trust the bridge itself, unlike Donkey which could be self-hosted.

Since Donkey and Zebra doesn’t puppet anyone else, no one needs to opt in or out. A Donkey user is just another AT proto user who happens to have elected to be using it via ActivityPub, and a Zebra user is just another ActivityPub user who has elected to use it from AT proto. They’re only ever “puppeting” themselves.

Just like you can use an ActivityPub client from iPhone, from Android, from MS-DOS, from Emacs, from voicemail, from NNTP, and no-one else has legitimate complain, so could an AT proto fanatic use Zebra from inside their AT proto account and it’d be just like any other ActivityPub client for us.

None of this is to make light of the original backlash to Bridgy Fed. Yes, the opt-in demand makes Bridgy Fed a “lead sheet” that I personally don’t even want to use if it’s going to have that limitation, but without the opt-in, people’s posts were getting dragged across state lines into a world far beyond their ken.

Sort of how like Heisenbridge in “bouncer” mode is okay while Heisenbridge in “relay” mode is a gazillion times creepier and more abusive than the original Libera Chat / Matrix bridge ever was.

Janky Donkey quick start

While Donkey (which, uh, to clarify, doesn’t exist yet. All I’ve been doing is thinking out loud, not programming) does three things for an ActivityPub user like me:

  1. Be an AT proto presence
  2. Crosspost
  3. Is an AT proto client with an “whisper to Donkey over Fedi” UI

That first part can be replaced by instead of Donkey being an AT proto presence, it can connect to one you create normally on a normal server, and that third part can be replaced by just using another AT proto client to interact with the replies to your posts, participate in threads and so on.

Ergo a janky version 0.1 of Donkey would just be a crossposter. This might even have advantages over the full, all-three-features version of Donkey for mitigating the migration or privacy issues.

Crossposting apps was how many birdsite users boostrapped their Fedi presence in the early days. That’s not something I’ve ever had to worry about since I’ve never had Twitter.

Now, that “crossposter-only” approach can hardly qualify to be called a “bridge” and it loses out on the main benefit of using a bridge in the first place, which is to only have to check one place. Going to ActivityPub and getting replies from AT proto, even though it’s via whispers with Donkey, would save a lot of checking.

That said, I currently bridge my ActivityPub through email that way. Mentions on Fedi become email to me. I might as well set up an AT proto “replies to email” bridge in lieu of “Donkey-whispering” for the same benefit.

Bridgy Fed sans lead sheet effect is possible

For a “some of the advantages, some of the disadvantages” of both worlds approach, Bridgy Fed could be patched to use whispering for replies from non-opted-in users alongside its current puppeting of opted-in users. Maybe there’s too much bad blood for an approach like that to be welcomed, I dunno, and it doesn’t really fix the privacy and centralization issues.