So last week Spark Social announced their Open Beta and with that their separated social graph.

There was feedback that users wanted to be able to follow separate people than they did on bluesky. We are working on adding an import feature.

This choice ended up starting a bunch of discussion about how we should be using the social graph in the ATmosphere. More specifically I remember these posts from and . Between the two posts, I definitely lean towards dame's post. And I hope this post explains my vision behind that reasoning.

“should my atproto app re-use Bluesky’s follow/profile lexicons?” my 2 cents: in your onboarding flow, let users choose to “connect” an existing social graph & set it as the default, or start fresh w/ a new social graph like feeds, users should be able to choose their social graph & use multiple

There was feedback that users wanted to be able to follow separate people than they did on bluesky. We are working on adding an import feature.
Eli Mallon's avatar
Eli Mallon
@iame.li

The social graph that stays consistent across apps is one of THE killer features of atproto. It's one of the first things I explain to people when I'm trying to sell them on the ecosystem. It'd be better if it were something other than "app.bsky.graph.follow" but it's what we got and it's fine.

This whole debacle sparked a lot of thoughts in my mind about how we do social graphs in the social internet, and how a shared account (your ATProto repository) that you use to login to multiple services (Bluesky, Tangled, Streamplace, Leaflet, etc.) should handle your social graph. One of the benefits we bring up for ATProto's superiority is that you own your social graph, but what happens when the apps decide how your social graph is used? I know this is kinda necroposting but I wanted this out of my mind and onto paper.

Old Social: Different venues, different music.

In old social land, my social graph is separated per account each with a different login. Instagram doesn't know about my YouTube followers, TikTok doesn't know who I'm following on Instagram, etc.

Anecdotally speaking, each of these apps have very different usage for most people. Most people use Instagram for connecting with personal friends and family and sharing moments of their life, they use YouTube for entertainment, and TikTok for short form quick entertainment.

If each of these apps knew about the other's social graph, my Instagram feed gets cluttered with public figures and entertainment, and my TikTok feed gets cluttered with people I know.

To some people that doesn't matter to them, but to me each app is specifically tailored to the content I want to see. If my Instagram social graph is also my YouTube social graph, the little control I have over the content I see starts slipping more and more. Like sure I love LTT videos but I don't need to see their Instagram content too.

New Social: We're all breathing the same air in the ATmosphere.

In old social land, none of these accounts are connected in any way. @mmatt on Twitter isn't connected to @mmattbtw on Twitch which isn't connected to @mmattbtw on YouTube.

In the new social world, your identity holds everything. My Bluesky content is posted by the same identity that posts my Leaflet blogs that is posted by the same identity which chats in Streamplace streams.

When you "Follow" someone on Twitter, you're following the Twitter account, not the person. In the new social world, when you follow someone on Bluesky, technically, you are following the person with the intent of keeping up with them specifically on Bluesky.

For all intensive purposes, these two mean the same thing to the user. But when thinking about it from outside of the apps itself, the relationship made is more interesting.

This person your account is following on Bluesky might also use other apps on that identity, but your "follow" is only intended for Bluesky via the app.bsky.graph.follow lexicon. Your relationship is also visible to these other apps, whether these apps choose to look at this relationship is up to the developer.

So where should the control go? In my eyes, lexicons are intent based, and should be scoped towards the applications they are intended for. This is why lexicon.community never really stuck to me, applications and lexicons to me should be heavily opinionated with how they want their applications shaped.

ON THE OTHER HAND: BLOGS, WRITING, AND OTHER LONG WRITING MEDIUMS.

Something in my brain clicked when standard.site launched however. And I think thats because the writing medium is so standardized. Text on screen with formatting and authors, everything else is on the side. Why shouldn't my WhiteWind posts and Leaflet posts be able to be read in the same place?

Matter of fact, they can! On mmatt.net/writing, this post (on Leaflet), my WhiteWind posts, my Teal Notes post are all viewable in one location. Each of these pieces come from different contexts, so for outside posts not meant for the exact context of publishing onto my site have a little disclaimer saying "this was written over here, view the original." Of course you can still view the post in its entirety on mmatt.net, everything still works just like it would over here on Leaflet.pub.

So, when it comes to writing, I actually flip on the whole social graph take. Being able to "follow" an individual author that might post on one publication via Leaflet, or make a guest post on another publication via Offprint, I should be able to follow my author across the ATmosphere and be able to see all their writing in one place.

What if, site.standard.graph.author.follow, let me follow an individual author across all of their standard.site publications. Writing usually doesn't have the explicit context shifts of long form / short form video, or microblogging, or live streaming, etc. A lot of people consume blogs, news, and other forms of long writing through RSS readers which ultimately eliminates the context of whatever site or platform the piece was written for. And I think this works perfectly for writing.

In the same sense, what if site.standard.graph.publication.follow. Similar to an RSS feed just let me keep up with an entire publication on any reading platform. (I think this is already a thing?)

For some reason, only in this context do shared social graphs make sense to me. When you're all using a standardized lexicon and interop is the default, this just makes sense to do.

The case for "genre based" following instead of global following.

I think the example above with following an author for their writing is a great case for a genre based social graph system instead of a global social graph.

Eli Mallon's avatar
Eli Mallon
@iame.li

Maybe I’m so far to one side on this follow stuff ‘cause I’m always thinking about livestreaming? Surely there’s no scenario where you’re like… I LOVE this user’s livestreams on App A, send me a push notification every time they stream Oh gross they’re live on App B, don’t show me that shit 🤮

I think this post from perfectly frames how I view this. If there are multiple streaming services, let me follow once and view that streamer on all the platforms. If there is an artist I find on plyr.fm, why not be able to keep that relationship to another music platform?

Global following on the other hand still doesn't sit right with me. I appreciate getting updates on some brands on Bluesky, but do I need their livestreams or short videos in their respective apps? Not in my mind.

I think in either situation (genre or global) user control is still key. The UX of that would take some time to plan out, and out of scope for this post (because I want this out asap lol).


AT THE END OF THE DAY, ITS JUST SOCIAL MEDIA RIGHT?

I think I derailed at the end here, but feel free to ask questions about anything in the post, would be more than happy to clarify!

thanks for reading >_>