Blacksky: Expressing the Black Everyday in a New Digital Space (Part 2)
A sophisticated exercise in Blackness.
This post is the second in a series of posts about Blacksky. Be sure to check out the previous post to get up to speed.
Just because Black folk create it, doesn't mean Black folk love it ... If you put a Black soul food restaurant in the neighborhood, Black folk are not gonna immediately flock to it. Because they're like, "Well, who's cooking? And how's their potato salad?"
- André Brock, Jr. discussing the Blackbird web browser on an episode of "Left of Black"
Bluesky Social and its underlying protocol are still in closed beta. The company's developers like to remind us of this fact from time-to-time. As a technologist and an ex-startup employee myself, the word "beta" is simply a CYA to me (cover your ass). It may speak to the stability of a platform but doesn't speak to its longevity or impact on the real world. Look no further than Google's Graveyard to see that products don't need a beta label to die off unexpectedly. Even the "closed" part of "closed beta" doesn't mean all that much because not only is everything on Bluesky extremely public, it's also loud about it! At every second of every day, Bluesky is broadcasting thousands of likes, follows, and posts to the entire internet for anyone listening (Bluesky account or not). At some point, someone even downloaded every post on Bluesky to do data analysis against.
People bring up Bluesky's beta status and relative obscurity to play down its importance, but to me none of that matters. Bluesky could vanish tomorrow (which would suck) but I'd still enjoy and find meaning and value in the time I've spent working on Blacksky. Both quantitatively and qualitatively, the Blacksky feeds are the most popular things I've ever built.
The original feed was launched in May, but from the beginning of July to the end of September, Blacksky was viewed over 2.5 million times by 23,000 unique users. The original feed is currently sitting at 2,291 likes and is the 6th most liked feed (down from its #1 spot back in July). As one of the first available custom feeds, my overpriced Heroku servers immediately saw a spike in traffic when custom feeds were finally supported by the official Bluesky client.
Ten minutes after launching publicly and Blacksky was already a success for me. I had built a thing I wanted for myself and a few other people checked it out. Traffic could have went back to zero and I would've still been satisfied. But thankfully it didn't! And surprisingly, people started thanking me for what I'd built! And then they started telling other people about it! And then journalists were reaching out asking me about what I'd built!
Looking back on that last linked post hits so differently 4 months later. Because as you'll see, for a group of 1807 users out of 1,296,164 on a site that has only existed for 6 months, many of whom don't always know I've added them to the Blacksky feed, we've received a clear and disproportionate amount of harassment on Bluesky. And as I see it, the platform and broader ecosystem have been able to benefit from us overcoming that harassment.
A rose from the concrete, and a thorn in your side
Playing defense for Blacksky
I thought long and hard about this section. I thought about how much time and attention I should continue to give to people who showed a clear lack of compassion and empathy and in some cases downright anti-blackness and overt hate towards Black people. After reflecting on it, I decided it was important to give this topic at least one section. Not to rehash past issues on Bluesky for further validation, but instead to highlight the clear connections from problem -> solution and how those solutions ultimately made Bluesky a much better place for many.
Anglosphere Alice and the beginnings of Blacksky
If you've read the TechCrunch article on Bluesky's early moderation issues, you've already heard about Alice. She's perhaps most well-known for her comments made toward Aveta but my issue is with the following post:
Astute readers will notice that the original Blacksky feed was launched the same day as the above post. There's a lot to unpack with the post and I won't even get into the much discussed usage of "Anglosphere".
... they're welcome to create their own instances
This just wasn't true at the time and it still isn't. As previously mentioned, custom feeds which were the first example of federation, didn't even launch publicly until a few days later. Federated Bluesky instances didn't exist in any capacity back in May and as of September are still in sandbox. Alice may be happy to know that I do have a federated instance hosted at blacksky.app but she may not have understood an important detail of how federation works on Bluesky. Which leads me to my next point.
If black people ... do not wish to be someplace that reflects the demographics of the Anglosphere ...
What's funny about this is that we do. The Y Combinator and Peter Thiel school of startup thought is that startups should be founded on some contrarian idea. In other words, what do most people seem to believe that you would disagree with? I've always disagreed with the idea that Black people want to be segregated away from white people in online spaces. Many people have tried that idea and many have failed, because that's not what most Black people actually want!
Black folk in particular had a really kind of divided approach to it. They were like ... "I don't wanna be segregated off from the wider internet." If you just create a space ... where it's only Black folk talking about Black stuff, that means I'm missing out.
- André Brock, Jr. discussing the Blackbird web browser on an episode of "Left of Black"
His award-winning book, "Distributed Blackness: African American Cybercultures" can be read online or downloaded for free in an Open Access edition, here.
I was excited by Bluesky's version of "big world social networking" because it meant I could host an instance of Bluesky tailored to Black users, curate custom feeds tailored to Black users, and moderate content that would be harmful to Black users without any of those users missing out on the content and context of the broader Bluesky ecosystem. This detail alone makes Bluesky radically different than other social networks.
The Green List
One of the downsides of the Blacksky feed being so visible and custom feeds not being well understood is that it started to be seen as an in-group consisting of a particular subset of Black people. Some days we were the "dramatic" Black people complaining about silly things like racism. Other days we were "orbiters" of an alleged serial harasser who none of us knew. A little over a month after launching the Blacksky feed (6 months in Bluesky time) I noticed that many Black users including myself were getting blocked left and right from some of the biggest accounts on the platform at the time. As I mentioned earlier, lots of information on Bluesky is public, including who blocks who.
Although there was a lot of denial about it at the time, I suspected that Black people were being targeted in some kind of blocking campaign which by the admission of the people who were blocking random Black people turned out to be true.
On Bluesky, you can't make generic lists of users, you can only make "mute lists" which allows other users to subscribe to your list and hide the posts of all the people you put on the list. Mute list information is also public on Bluesky.
On June 30th, I ran an analysis of every account and all the people they've blocked then compiled a public mute list of the users who disproportionately blocked Black people. I named it "The Green List" after "The Negro Motorist Green Book" which, among other things, warned Black people of sundown towns and areas hostile to Black people.
Many of the users I put on the original Green List apologized and/or acknowledged that they had become overzealous in their attempts at protecting themselves from an alleged serial harasser. I'm even mutual follows of some of them now. After some apologies came in, I deleted the original Green List but recently revived it as "Orbiter" allegations continue. The Green List also exposed the public nature of blocks, which people haven't shut up about since.
Banned From TV
The Green List episode showed me that as hard as I work to find and add Black people to the Blacksky feed, there are other people out there willing to take that work and use it to ostracize us. Because there's no way white people were finding that many Black people to block when those same Black people were struggling to find Black people to follow. They obviously had to have some help. I only needed to wait 3 days for confirmation that the Blacksky feed could be weaponized to harm people.
On the morning of July 4th I woke up at around 8 AM to check on the feed. In between jokes about how much food everyone was gonna eat at their respective cookouts later was a new addition to the Blacksky feed. Someone had used #AddToBlackSky to add themselves to the feed, but attached to the post was an obviously transphobic joke about the United States Assistant Secretary for Health, Rachel Levine. That was enough to warrant removal from the feed but I did some digging on their profile since at the time I was especially paranoid about the feed being used to promote harm.
Sure enough, I saw multiple transphobic comments made to Black trans women who were recently posting to the Blacksky feed. That user was not only removed from the feed along with their post and reported to Bluesky's moderation team, they were also banned from viewing the feed entirely.
The functionality itself is pretty interesting and received a lot of praise from Bluesky overall. It inspired other feeds like Jewsky to implement similar protection mechanisms. With the ban feature, I was leveraging Bluesky's authentication mechanics which many were using to personalize a feed (show you posts from users you follow) instead to track visitor metrics and ban certain viewers from seeing any content in the feed. To display a ban message (you can see in the above linked post) I copied a trick retr0.id was using to display error messages when his feeds broke.
Blacksky would go on to face other well documented issues such as a protocol-level bug that allowed Bluesky users to register racist username handles, and a George Floyd impersonation account that tried to add themselves to Blacksky in order to troll and promote hateful content.
A sophisticated exercise in Blackness
(This is a Nerd Flex Zone. Feel free to skip to the end, I won't be mad)
Besides being referred to as "the Blacksky feed guy", the other really common thing that grinds my gears is Blacksky being reduced to something as simple as "a list of Black people and everything they post." While it may just seem like a list, it is necessarily more complex than that.
select * from black_community;
It is of course necessary in the creation of a feed such as Blacksky for there to be a list of Black people somewhere. An important design decision of mine was for that list to not be public or otherwise easily enumerable for reasons previously covered. The list was at one point hardcoded in the source code but I've since moved on to storing it as a list in the database away from prying eyes.
That list of "members" is used to determine what data gets stored from the firehose which currently includes posts, image references, likes, and follows that reference or relate to members of Blacksky. Anyone (yes, even white people) can and should use #Blacksky to get an individual post on the feed, but using #AddToBlackSky will add you as a "member" so that all of your posts, likes, and follows are automatically included in the Blacksky DB.
This was an important design decision as well. While I want to moderate Blacksky and hope that people trust my decision making, I don't want to be seen as a gatekeeper or spokesperson for all Black people (a "Head N***a in Charge" if you will) as we are not a monolith.
Who is these Black folk? How do they know what kind of Black folk I am? How dare they curate information and resources not recognizing the heterogenity of Blackness and that they don't know me like that?
- André Brock, Jr. discussing the Blackbird web browser on an episode of "Left of Black"
Updating the NegrOS; Jit push origin main
Since launching the original feed, I've launched a few others that further slice the Blacksky DB in different ways. Blacksky Only Posts filters out replies from the feed which can get quite noisy. There are French and Portuguese versions of Blacksky that filter for posts made specifically in those languages. And then there's the Trending feed which shows posts from Blacksky getting a bunch of likes, sorted by when the post received its 12th like (similar to What's Hot Classic and the Up-and-Up feeds).
One of the more recent feeds I built that I think really demonstrates the power of laying a foundation and building further is the Blacksky: Uncut feed. This feed started originally as a request:
This was interesting/important to me for a few reasons:
- Black SWers on Bluesky have said for the longest that they have a hard time finding each other and that their content isn't amplified
- Bluesky has yet to federate moderation; The current centralized moderation service done via Hive AI has clear biases that will label a woman in a bikini as suggestive content but completely misses out on man bulge
- Because of gaps in Bluesky's content filter strategy, many have thought about implementing more effective filters, but few people have considered amplifying such content (both the kinds that end up behind the filter and the stuff that's missed)
Screenshot of the Blacksky: Uncut Feed (identifying info blurred)
If you click to show the above image, you can see how Bluesky's AI misses things (man bulge not labeled as suggestive content but cleavage is). Blacksky: Uncut has perhaps the opposite problem but for the purposes of creating a feed, false-positives are fine for this use case. The NSFW feed doesn't get a ton of traffic, so I can just pop into it once a day and update the database if something shouldn't be in there.
Some may say, "well Bluesky's labeler is good enough. Why not just leverage that?" Unfortunately, Bluesky's labeling service works similar to mine and by that I mean it listens to the firehose then applies labels to the images and posts. Because of this, Bluesky's labels aren't immediately available (image classification can be somewhat slow). From a technical perspective, that already means I have to set up a new program to fetch the labels some point in the future. I figure if I'm doing that, I might as well classify these images myself.
The NSFW labeling script is the first part of Blacksky to be done in Python and at the time of writing is located on the same living room server as the blog you're currently reading. The script runs every 30 mins. and queries recently created image references using the content identifier to get the actual image from Bluesky's servers. It then uses two models which I found were fine on their own but a lot more accurate together:
- The first is OpenAI's CLIP-ViT-L-14 which supports comparing an image to a sentence or phrase. This could be used to implement image search for example, but is in this case used to classify NSFW images
- The second is an open source neural network that was trained on ~250K images to create a PyTorch model for NSFW image classification
When combined, I find that I can slide the threshold for NSFW classification to capture anything from thirst trap selfies on the low end to graphic content on the higher end.
Computers 'putin
Like I mentioned earlier, Blacksky has been very meaningful to me to work on. I am on a daily basis happy with the solutions I've built and the community that's formed around Blacksky. People have offered to help with moderation, updating the code, and very importantly offering financial support. These computers aren't free! Incidentally, Blacksky is one of the first AT Protocol projects to receive nonprofit support in addition to community funding.
But custom feeds are just the start. Blacksky is also one of the first PDSs in the federated sandbox. When composable moderation is ready, I should be able to convert the labeler script behind Blacksky: Uncut into a filter service that works better than The Hive's.
Assuming Bluesky doesn't just up and vanish beforehand, there's a lot to look forward to in the future for Blacksky.
Stay tuned for the follow-up to this post where I talk about why I'm still so optimistic about Bluesky and AT Protocol.
Wanna hear more about Blacksky and some of my other work? I talk about that and more in this week's episode of Unapologetic Tawk.
Be sure to subscribe to the newsletter and if you haven't, consider donating to keep the lights on for Blacksky.