Exploring Bluesky, one constellation at a time
SkyGraph shows the potential for custom algorithms on Bluesky
Editor's Note: SkyGraph's custom feeds are no longer available as of September 6, 2024. The code is available on GitHub for anyone interested in hosting their own version. The original article continues below.
The explosion of text-based social networks that occurred after Elon Musk’s takeover of Twitter (and its subsequent rebranding to X) has mostly quieted down. Instagram has Threads, a brand-safe, sanitized playground full of engagement bait. Mastodon is still Mastodon, no more prepared for mainstream adoption than it was a year ago. A few other also-rans have lost steam and died unceremoniously.
Out of all of them, I have the highest hopes for Bluesky, which has been steadily improving over the last year with frequent updates and thoughtful additions to its vision of decentralized social networking. It dropped the invite system in February and now has almost 6 million users, with 1.4 million active every month.
I find Bluesky particularly interesting for its attempts to meld the benefits of decentralized and centralized social networks—they’re introducing choice at every level of the experience, but if you don’t care about that, you don’t have to. You can use Bluesky out of the box, with a satisfactory default experience, similar to the way you'd use Twitter.
If you do want to customize your experience, you can do so in a targeted way. You can go as far as to move all of your data to your own server. Or you can choose your own moderation services. But perhaps the most exciting—and accessible—feature is custom feeds.
I wrote about Bluesky’s custom feeds earlier this year and how they’ve introduced the idea of algorithmic choice to the platform:
Algorithms get a bad rap, but that’s usually because we don’t understand them—or we understand all too well that the companies behind those algorithms are designing them to keep us scrolling by any means necessary. Bluesky aims to pull back the curtain a bit and put you in control of the algorithms so that they serve you, not the interests of the platform.
Custom feeds give you a powerful way to customize your experience on the network in a way that no other social media platform allows you to do. These feeds can be incredibly simple—one of my favorites is “Quiet Posters,” which shows posts from people you follow who don’t post very often. But they can also be complex tools for discovery.
Recently, I’ve been using two new experimental feeds by SkyGraph, My Nebula+ and My Galaxy+, that use community detection as part of their algorithmic recommendations. I wanted to know more about the work that went into building complex algorithmic feeds for Bluesky, so I talked to @witch.monster, the developer behind SkyGraph, to find out the origins of the project.
@witch.monster has been a developer for over a decade and previously worked in financial fraud detection—“connecting the dots, connecting different people, different accounts through various data” and looking at the graph to assign a risk score based on those connections.
About six months ago, they started working on SkyGraph—using @jaz.bsky.social’s Atlas visualization code as a base—to get a bird’s eye view of the entire Bluesky network. Here’s an example of one such view:
These nodes represent groups of users, and, as you can probably guess, the difference between them is size. At one end, you have “gigaclusters”—massive groups of people, such as all English speakers or all Japanese speakers. There are five more levels that get increasingly granular, with “constellations” as the smallest, most specific groups.
The community detection algorithm splits users into these groups based on the number of interactions within a bubble. Essentially, those users interact with each other (by liking and replying to posts) more than they interact with users outside the group. Different thresholds—where the algorithm decides to split off groups—are how you get gigaclusters versus constellations.
@witch.monster says a constellation is best thought of as “friends plus friends of friends, a little social circle, like a country club.” You may not know everyone in your constellation, but you likely have a shared level of agreed-upon social norms. Two levels up, you have a “galaxy”—that’s more like a big city, where many different social groups interact and there’s a higher chance for both discovery and conflict.
Getting discovery right is important. Many users advocate for the “Following” feed on Bluesky—a simple, algorithm-free, reverse chronological display of posts from accounts you’re following. They don’t want anything shuffling around posts or injecting content from accounts they don’t follow. But if you’re just starting out on the platform and don’t know who to follow, “Following” will feel empty and boring. And how are you supposed to know who to follow unless you’re introduced to new accounts?
“Having a good home-like feed where you can discover content, it basically makes the whole social network feel alive,” @witch.monster told me. “It’s essential for the success of this network.”
The algorithm that actually runs My Galaxy+ and My Nebula+ is relatively straightforward. Each feed starts with the top fifteen constellations you interact with the most. The top ten form your "home" source and the next five fuel your "discover" source.
My Galaxy+ mixes in more posts from those lower-ranked constellations—six for every four posts from your top ten. It's great for discovery—with the understanding that you'll get plenty of irrelevant posts, too. My Nebula+, on the other hand, only mixes in one "discover" post for every nine "home" posts. “Some people want more relevant, homey, cozy stuff, and My Nebula works best for them.” As you interact with more accounts on Bluesky, both feeds will adjust to reflect updated community rankings.
The SkyGraph feeds were intended as a “proof of concept” for community detection—@witch.monster didn’t expect people to actually start using them. But they hope the project provides some ideas to the Bluesky developers for performing community detection at scale and improving their own algorithmic feed, “Discover,” which Bluesky users have criticized as straying too far from their interests. “My suspicion is that Discover has a problem of granularity,” @witch.monster told me (though a Bluesky developer reached out after publication to say they're working to improve “Discover” with similar community detection work).
Bluesky’s custom feeds are a unique perk for users and provide a remarkable playground for developers, but there is a flip side to the openness and decentralization: you need a third-party server to run the feed. This can be a challenge for independent developers looking to reach as many users as possible with their feeds.
The SkyGraph feeds run on an old gaming PC—@witch.monster says that it handles the current load just fine for now, but anything more and it would quickly become too expensive to operate the feeds. They’ve been in discussions with SkyFeed, a Bluesky web client with a built-in visual feed builder, to help keep the feeds running on more robust infrastructure. SkyGraph is also entirely open source, so if @witch.monster decides to unplug the gaming PC, anyone can pick up the code, refine it, and create new experiences from it.
In the future, hosting custom feeds could become a business opportunity both for Bluesky and sites like SkyFeed and Bluesky Feed Creator. You could also imagine a paid marketplace of custom feeds—if Bluesky built in a paywall functionality—for professional users like journalists, researchers, and marketers looking to sort through the Bluesky network with a mix of algorithmic and human curation.
Meanwhile, @witch.monster hopes that their community detection algorithms inspire other curious people who like to analyze data. They see a lot of potential for researchers to study social interactions across the network: “You can see that when there’s some major discourse on the network, it’s almost never within the same cluster. It’s different clusters with different social consensuses, different understandings of what’s good or bad.” Community detection algorithms can help you graph and visualize those conflicts. “Also, you can build some feeds.”
Correction: The original post referred to “Following” as the default feed for new users—this is no longer the case. The post has also been updated with a comment from a Bluesky developer on ongoing improvements to the “Discover” feed.