Who owns the graph?

Bluesky is the talk of the Internet, and for good reason. It’s a great product, carefully designed, well implemented, with some fascinating architecture choices. It’s basically an early Twitter clone with some important new features, like custom feeds and labelers that anyone can make.

Bluesky is built on the open AT protocol, so users have a “credible exit,” meaning if Bluesky the company goes belly up or evil, users should still control their data and be able to “exit” to another app.

There are some great discussions about the exact nature of decentralized social networks, notably:

Ultimately, I think the interesting and very tricky question is: who owns the graph?

Because of course it’s not just perfectly insulated silos of Alice data and Bob data. The whole point is that Alice might follow Bob, and Bob might quote Alice, and Carol might respond to Bob, and David might block Carol. It’s clear who owns the nodes of the graph. But who owns those edges, those connections, between the nodes? Who decides who can quote-tweet and who can reply?

In a centralized setup like Twitter, the graph is owned and fully controlled by Twitter, of course. And their complete ownership of the graph means they can make subtle decisions about what permission you need for various kinds of cross-user interactions. For example, Twitter decides what exactly happens when Bob blocks Alice, in particular it means that (a) Alice doesn’t get notified, and (b) Alice no longer follows Bob. It leads to interesting emergent features like the “soft block,” where Bob blocks and then immediately unblocks Alice, which has the effect of Alice no longer following Bob and likely not noticing, a useful maneuver to quietly stop mild harassment.

So in a decentralized world where Alice owns her data and Bob owns his data, who owns the follows, the blocks, the quotes, the responses, etc? Is it entirely up to Alice who she follows? Or do the followees have a say? And what does that all even mean if everyone’s data is public anyways?

This is the challenge of decentralized solutions, and it’s a hard challenge because, once you decide on ownership structure of the graph, it’s really hard to change things. Twitter can (and did) unilaterally decide that likes should become private this year. Mastodon and Bluesky could never do that overnight. So these decisions have to be made explicitly, and they matter a lot.

And they’re really not obvious!

So far, on Mastodon / ActivityPub, a follow relationship requires bilateral consent. By default, consent is automatically granted by the person being followed, but any user could easily decide not to approve every follow. Now technically, access to the content is almost never tightly controlled by users. But compliant implementations of the ActivityPub protocol will not get notified of new posts from Alice and will not scrape them – and that latter part is really just a norm.

Meanwhile, on Bluesky / AT, a follow relationship is entirely owned by the follower. Alice decides to follow Bob, and Bob has no say, because Bob’s data is entirely public, and Alice choosing to follow Bob just means that Alice’s app regularly checks Bob’s public content (technically through a relay and an app view but that doesn’t matter for this discussion.)

You might find Bluesky’s decision weird, but it’s entirely consistent with the Open Web – for example, on the Web, you don’t get to decide who links to your web page. You can password protect it, but if it’s public, incoming links to you are owned by the pages where they live, not by you.

Who’s right? I don’t think there’s a right answer. My preference is the Open Web approach, simply because I think it matches the reality of what having public content means – but of course I understand folks who disagree.

So now we come to blocks. Those are much, much harder. Surely if Bob blocks Alice, Bob owns that block but… what does it mean in a world where Bob’s content is public? A block depends on all implementations being conformant with the block specification.

Different views of the graph

What’s going to be particularly interesting over time is whether different views of the graph emerge with competing implementations, and what those competing implementations will do if they strongly disagree with the other’s choices. There are, of course, already different views of the data within the realm of the protocol – block lists, custom feeds, etc. all contribute to different people having different different views of the data. But different views of the graph, that’s something else altogether.

You can imagine, for example, a Redsky app that uses the existing Bluesky network and ignores all blocks. Folks using the Bluesky app would not notice this. But there would exist an extra layer of interactions for people using the Redsky app, where abusers can quote-tweet their targets to their heart’s content, and everyone on Redsky can see it even if others on Bluesky can’t. What happens in that case? Does the Bluesky app start not just ignoring non-compliant content, but also banning accounts that have non-compliant content? Do Redsky datastores start delivering different content to Bluesky relays so they don’t get detected as non-compliant?

All of this can also technically be done on Mastodon, with non-compliant, scraping implementations of ActivityPub nodes. This can’t technically be stopped unless users go fully private.

Will this be stopped at the norm / Terms Of Service level? I’m dubious they will.

I don’t know where this all goes. But I do think it’s fascinating and interesting and far from obvious. The subtlety of how we want to represent human relationships is actually a lot easier when one organization fully controls the graph and can evolve its model based on evolving threats and norms. It’s dramatically more complicated when the graph is diffuse, owned by no single entity, and ultimately written down as a protocol. Protocol decisions will matter a ton. And folks will get around the protocol, too, especially when content is effectively public.

Maybe this is just the messiness of human relationships, in protocol form.

[The banner image is Creative-Commons licensed by: https://www.flickr.com/photos/notbrucelee/7219422352/]


Posted

in

, , , , ,

by