home.social

#socialmediaalgorithms — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #socialmediaalgorithms, aggregated by home.social.

  1. Commonwealth Beacon: Your teenager is still figuring out who they are. Big Tech’s algorithms act like they already know.. “Progressives worried about algorithms pulling teenage boys toward increasingly rigid ideas about masculinity and conservatives concerned about the growing list of identity categories may be seeing different manifestations of the same underlying system. We don’t have to […]

    https://rbfirehose.com/2026/09/02/commonwealth-beacon-your-teenager-is-still-figuring-out-who-they-are-big-techs-algorithms-act-like-they-already-know/
  2. ABC News (Australia): The manosphere continues to suck young men in as study reveals troubling findings. “Flynn Martin is one who says he was radicalised by the manosphere. He was 20 years old. A uni student. A self-professed doomscroller. But once the anti-women algorithm infiltrated his social media, it took just months for the hobby content creator to become another online prophet of […]

    https://rbfirehose.com/2026/08/21/abc-news-australia-the-manosphere-continues-to-suck-young-men-in-as-study-reveals-troubling-findings/
  3. @cloudskater wrote:

    Some instances are run by bad people. Hell, a few projects like Lemmy and Matrix are DEVELOPED by assholes, but the FLOSS and federated nature of these platforms allows us to bypass/fork them and create healthy spaces outside their reach.

    Nope, that is actually what is killing the fediverse. I just explained here:

    The issue is the divergence in semantic interpretation that emerges at the interpretation layer. ActivityPub standardizes message delivery and defines common activity types. However, it leaves extension semantics and application-layer policy decisions to individual implementations. Servers may introduce custom JSON-LD namespaces and enforce local behaviors, such as reply restrictions, while remaining protocol-compliant. But, the noise created by divergences are problematic, because it creates unexpected, unintended, and unpredictable behavior.

    Divergence appears when implementations rely on non-normative metadata and assume reciprocal handling to preserve a consistent user experience. Behavioral alignment then varies. Syntactic exchange succeeds, but behavioral consistency is not guaranteed. Though instances continue to federate at the transport level, policy semantics and processing logic differ across deployments. Those differences produce inconsistent experiences and results between implementations.

    That leads to fragmentation, specifically semantic or behavioral fragmentation and an inconsistent user experiences. ActivityPub ensures syntactic interoperability, but semantic interoperability (everyone interprets and enforces rules the same way) varies. This creates a system that is federated at the transport level yet fragmented in behavior and expectations across implementations. It is funny how the thing that the fediverse touted has made the entire thing very brittle. ActivityPub technically federates correctly, but semantically falls apart once servers start adding their own behavioral rules.

    https://neon-blue-demon-wyrm.x10.network/archives/16932

    FYI, I’m not doing culture wars or political debates. I’m just saying this idea of “forking away” from them is literally breaking the fediverse’s distributed network and creating all kinds of issues with semantic interoperability. Yes, federation is still happening at the delivery level, but the semantic issues are out of fucking control. You are a federation by the very sheer skin of your teeth.

    The reason why developers are leaving the fediverse is because you folks don’t take criticism. You respond to criticism with — I’m being so serious right now — political manifestos and harassing developers. ActivityPub developers and authors oversold you folks on the capabilities of ActivityStreams. They flat-out lied to y’all.

    ↬bark.lgbt/@cloudskater/116080965694723006

  4. ActivityPub Server’s Custom Reply‑Control Extensions Undermine Federation

    It seems like Activitbypub developers are extending ActivityPub with optional metadata to fix a lot of its issues, but that is still problematic. Trying to add moderation tools and user control to threads seems to be the ongoing battle. I am fascinated by dumpster fires, so I’ve started looking at the ActivityPub protocol in detail. I tend to become fascinated with things that are going down in flames.

    As a brief recap of the problem:

    So, one of the very popular features on Bluesky—also popular on Twitter—is the ability to select who can reply to a post. A major issue in the Fediverse is the inability to decide who can reply, and once you block someone, their harassing reply is still there. I honestly thought it was simply a case of them choosing not to add or address it for cultural reasons. What is clear from that thread is that they were always aware that the ActivityPub protocol and most Fediverse implementations don’t provide a universal way to control reply visibility or enforce blocks across instances.

    An ActivityPub server that has reply control is GoToSocial. ActivityPub, as defined by the W3C specification, standardizes how servers federate activities. It defines actors, inboxes, outboxes, and activity types (Create, Follow, Like, Announce, etc.) expressed using ActivityStreams 2.0. It also specifies delivery mechanics (including how a Create activity reaches another server’s inbox) and how collections behave.

    The specification does not include interaction policy semantics such as “only followers may reply” or “replies require manual approval.” There is no field in the normative vocabulary requiring conforming servers to enforce reply permissions. That category of rule is outside the protocol’s defined contract.

    GoToSocial implements reply controls through what it calls interaction policies. These appear as additional properties on ActivityStreams objects using a custom JSON-LD namespace controlled by the GoToSocial project.

    JSON-LD permits additional namespaced terms. This means the document remains structurally valid ActivityStreams and federates normally. The meaning of those custom fields, however, comes from GoToSocial’s own documentation and implementation. Other servers can ignore them without violating ActivityPub because they are not part of the interoperable core vocabulary.

    Enforcement occurs locally. When a remote server sends a reply—a Create activity whose object references another via inReplyTo—ActivityPub governs delivery, not acceptance criteria. Whether the receiving server checks a reply policy, rejects the activity, queues it, or displays it is determined in the server’s inbox-processing code. The decision to accept, display, or require approval happens after successful protocol-level delivery. This behavior belongs to the application layer.

    These are server-side features layered on top of ActivityPub’s transport and data model that are not actually part of ActivityPub. The protocol ensures standardized delivery of activities; however, the server implementation defines additional constraints and user-facing behavior. Two GoToSocial instances may both recognize and act on the same extension fields. However, a different implementation, such as Mastodon, has no obligation under the specification to interpret or enforce GoToSocial’s interactionPolicy properties. These fields function as extension metadata rather than protocol requirements.

    The semantics of GoToSocial are not part of the specification’s defined vocabulary and processing rules for ActivityPub. They no longer operate purely at the protocol layer; it has become an application-layer contract implemented by specific servers.

    Let’s use the AT Protocol as an example. Bluesky’s direct messages (DMs) are not currently part of the AT Protocol (ATProto). The AT Protocol has nothing that specifies anything for DMs, so DMs are not part of the AT Protocol. The AT Protocol was designed to handle public social interactions, but it does not define private or encrypted messaging. Bluesky implemented DMs at the application level, outside of the core protocol. DMs are centralized and stored on Bluesky’s servers. What is happening with servers like GoToSocial is sort of like that. The difference is that the AT Protocol was designed for different app views; ActivityPub was not.

    The issue is the divergence in semantic interpretation that emerges at the interpretation layer. ActivityPub standardizes message delivery and defines common activity types. However, it leaves extension semantics and application-layer policy decisions to individual implementations. Servers may introduce custom JSON-LD namespaces and enforce local behaviors, such as reply restrictions, while remaining protocol-compliant. But, the noise created by divergences are problematic, because it creates unexpected, unintended, and unpredictable behavior.

    Divergence appears when implementations rely on non-normative metadata and assume reciprocal handling to preserve a consistent user experience. Behavioral alignment then varies. Syntactic exchange succeeds, but behavioral consistency is not guaranteed. Though instances continue to federate at the transport level, policy semantics and processing logic differ across deployments. Those differences produce inconsistent experiences and results between implementations.

    That leads to fragmentation, specifically semantic or behavioral fragmentation and an inconsistent user experiences. ActivityPub ensures syntactic interoperability, but semantic interoperability (everyone interprets and enforces rules the same way) varies. This creates a system that is federated at the transport level yet fragmented in behavior and expectations across implementations. It is funny how the thing that the fediverse touted has made the entire thing very brittle. ActivityPub technically federates correctly, but semantically falls apart once servers start adding their own behavioral rules.

  5. So, I am a Computational Biologist. Keep that in mind. I’m an actual scientist who works with ecological concepts, specifically the microbiome. One of the most insufferable reactions to the cyberpunk era we inhabit is the emergence of anti-science ideas from the left in response to techno-fascism. The strange part is that many people on the left do not even recognize them as anti-science, because they assume the left is aligned with science and the right opposed to it; ergo, if the left says it, it must be scientific. It is insane: washing your hands is technology. Medicine is technology.

    I think, because the Internet has hijacked people’s brains, many conflate technology with electronics or machines. Anthropologically, technology consists of material objects, techniques, and organized practices through which humans intentionally intervene in their environments. Technology is culture, and human culture is technology. When someone learns a skill or a discipline from someone else, that is an extension of technology.

    Technology encompasses craft traditions (blacksmithing), agriculture, and institutionalized processes of teaching and learning. Agriculture is one of the oldest forms of technology. Yes, farmers are tech workers. I write code, but I also spent a large amount of time on a farm, and I can tell you that many tech workers who pride themselves on writing code would not know what to do with farm equipment.

    So, from that broad perspective, we can sum technology up in one word: education. A basic heuristic for determining if something is cultural or not is: can it be taught and learned? These words? I was taught English, and I am using an invented language to transmit knowledge to you; ergo, I am using technology to transmit cultural knowledge to you. Reading a book is thus using a piece of human technology. So, being anti-tech connotes being anti-education.

    What got me thinking about this is a toot I read on Mastodon:

    The truth is that society needs to develop ethically and ecologically more than it does technologically. That’s not to say that we should shun technology, but our development along other lines lags far behind our technological capacity.

    ↬ecoevo.social/@benlockwood/116052113455871454

    Sounds valid, right? That is the distinct smell of bull shit.This is a clear example of what is called a platitude. Platitudes are memetically hijacking people’s brains. Memetics actually hijack your brain—they change it. It’s similar to how a retrovirus can alter the genome of its host. So, trying to have conversations with these people is pointless, which is why I avoid the chronically online Internet scene and arguing with them.

    It made me want to scream. As I mentioned earlier, technology is basically a set of things you learn from other humans—typically within a culture—that helps you do or make something. You know what else is learned within human society? A normative set of cultural values about how we ought to behave. So, both technology and culture emerge from the same thing simultaneously and mutually. You cannot have humans intervening in things to achieve ecological development, because that is technology, and you cannot educate humans on ethics without an invented language. It is literally an anti-education argument.

    Ethics and technology arise together from the same human conditions and social processes. It makes little sense to claim that technology is “outpacing” ethics. The two do not develop independently. We form ethical norms in response to new capacities and circumstances. There would be no cultural norms about how to use the Internet if the Internet did not exist. And, there would be no ethical debates about AI if AI did not exist. Ethical reflection emerges alongside technological change because both are products of human culture.

    As new problems create new technologies that create new problems, societies respond by negotiating norms, rules, and expectations appropriate to those contexts. The same pattern appears in politics. Politics concerns who gets what, when, and how—it is the negotiation of power, rights, and resources. Without resources or competing claims, there would be nothing to negotiate. Ethics and politics are not trailing behind technology because they are co-emergent responses to the same underlying realities.

    @benlockwood

  6. Your BlueSky Feed Is Porn You Didn’t Ask For Because Your Friends Are Gooners With a Severe Porn Addiction

    A common complaint I see people make on Bluesky is: why am I being served so much porn or things I am not interested in? They will incorrectly believe that the algorithm is broken. It’s not broken. You didn’t know the people you knew as well as you thought you did. Porn addiction is a thing, and porn addiction is especially common with weebs. You’re seeing deranged shit because people you follow have porn addictions and are into deranged shit. So, though you may not be consuming porn, people in your network are. That activity kicks into your feeds.

    The issue I have with that is that it essentially normalizes being sex pests in a space on the Internet. That sets the expectation that it is good—attractive, even—to act like that elsewhere. That expectation alienates relationships. Bluesky creates a cultural space that offers an unrealistic, bizarre representation of social relationships, which isolates and alienates the users who stay on there consuming erotica and porn like they do.

    So, user repos in Bluesky have a property for likes. Bluesky’s underlying AT Protocol stores likes as first-class structured records in each user’s AT Protocol repository. In the AT Protocol lexicon, a like is an app.bsky.feed.like record type. Unlike a simple boolean flag on a post, it is its own record with a creation timestamp and a subject field that holds a strong reference to the liked record.

    That strong reference is composed of an AT-URI and a CID. The AT-URI identifies the exact record in the network by DID, collection, and record key. The CID is a cryptographic content identifier that uniquely identifies the exact content of that liked record.

    These like records exist under the app.bsky.feed.like namespace in the user’s repo. Bluesky’s repo model is built so that these repos are hosted on a user’s Personal Data Server and are publicly readable through the AT Protocol APIs. Because of that, the like record and its fields can be fetched, indexed, and used by any client or service that can query the protocol.

    The protocol exposes operations like getLikes. This returns all of the like records tied to a particular subject’s AT-URI and CID. It also exposes getActorLikes. This returns all of the subject references a given actor has liked. Those API calls return structured like objects with timestamps and subject references directly from the public repository data.

    Various feeds hosted by different PDSs use the likes property to construct the feeds that you see. Since the likes of people you follow are included in your social graph, along with your own likes, you’re going to get served the porn they are consuming. Because likes are public and anyone can write an algorithm to see everyone’s likes, you can clearly see just how much porn people are consuming.

    Honestly, what started to turn my stomach about the people on Bluesky is how they behave across different contexts. If you look through the records of the posts they interact with, you’ll see them engaging with political posts in the replies like a normal person. Then, when you look through their AT Protocol records, you see hours and hours of them interacting with every kind of porn imaginable. I am not exaggerating. Hours of likes for porn posts within 1–10 minutes of each other. Am I sex-negative? A prude? No, this site is filled with furry, gay bara porn, lol. You can have a drink without being an alcoholic. The problem with these people is like people who can’t have one drink without drinking the whole fucking day; they can’t consume porn in healthy ways.

    I think people assume that their feed is customized for them and based on their likes. No—feeds are generalized based on what everyone likes and then served to your subgraph. It’s not just about who you follow; it’s about who they follow. So if you follow someone who follows a lot of people with porn addictions, you will see porn. Bluesky isn’t weighting the algorithm to do this. Basically, it’s the people in your social network with furry, hentai, or trans porn addictions who are driving it.

  7. BlueSky’s Solution To Moderating Is Moderating Without Moderating via Social Proximity

    I have noticed a lot of people are confused about why some posts don’t show up on threads, though they are not labeled by the moderation layer. Bluesky has begun using what it calls social neighborhoods (or network proximity) as a ranking signal for replies in threads. Replies from people who are closer to you in the social graph, accounts you follow, interact with, or share mutual connections with, are prioritized and shown more prominently. Replies from accounts that are farther away in that network are down-ranked. They are pushed far down the thread or placed behind “hidden replies.”

    Each person gets their own unique view of a thread based on their social graph. It creates the impression that replies from distant users simply don’t exist. This is true even though they’re still technically public and viewable if you expand the thread or adjust filters. Bluesky is explicitly using features of subgraphs to moderate without moderating. Their reasoning is that if you can’t see each other, you can’t harass each other. Ergo, there is nothing to moderate.

    Bluesky mentions that here:

    https://bsky.social/about/blog/10-31-2025-building-healthier-social-media-update

    As a digression, I’m not going to lie: I really enjoyed working on software built on the AT protocol, but their fucking users are so goddamn weird. It’s sort of like enjoying building houses, but hating every single person who moves into them. But, you don’t have to deal with them because you’re just the contractor. That is how I feel about Bluesky. I hate the people. I really like the protocol and infrastructure.

    I sort of am a sadist who does enjoy drama, so I do get schadenfreude from people with social media addictions and parasocial fixations who reply to random people on Bluesky, because they don’t realize their replies are disconnected from the author’s thread unless that person is within their network. They aren’t part of the conversation they think they are. They’re algorithmically isolated from everyone else. Their replies aren’t viewable from the author’s thread because of how Bluesky handles social neighborhoods.

    Bluesky’s idea of social neighborhoods is about grouping users into overlapping clusters based on real interaction patterns rather than just the follow graph. Unlike Twitter, it does not treat the network as one big public square. Instead, it models networks of “social neighborhoods” made up of people you follow, people who follow you, people you frequently interact with, and people who are closely connected to those groups. They’re soft, probabilistic groupings rather than strict labels.

    Everyone does not see the same replies. Bluesky is being a bit vague with “hidden.” Hidden means your reply is still anchored to the thread and can be expanded. There is another way Bluesky can handle this. Bluesky uses social neighborhoods to judge contextual relevance. Replies from people inside or near your social neighborhood are more likely to be shown inline with a thread, expanded by default, or served in feeds. Replies from outside your neighborhood are still public and still indexed, but they’re treated as lower-context contributions.

    Basically, if you reply to a thread, you will see it anchored to the conversation, and everyone will see it in search results, as a hashtag, or from your profile, but it will not be accessible via the thread of the person you were replying to. It is like shadow-banning people from threads unless they are strongly networked.

    Because people have not been working with the AT Protocol like I have, they assume they are shadow-banned across the entire Bluesky app view. No—everyone is automatically shadow-banned from everyone else unless they are within the same social neighborhood. In other words, you are not part of the conversation you think you are joining because you are not part of their social group.

    Your replies will appear in profiles, hashtag feeds, or search results without being visually anchored to the full thread. Discovery impressions are neighborhood-agnostic: they serve content because it matches a query, tag, or activity stream. Once the reply is shown, the app then decides whether it’s worth pulling in the rest of the conversation for you. If the original author and most participants fall outside your neighborhood, Bluesky often chooses not to expand that context automatically.

    Bluesky really is trying to avoid having to moderate, so this is their solution. Instead of banning or issuing takedown labels to DIDs, the system lets replies exist everywhere, but not in that particular instance of the thread.

    I find this ironic because a large reason why many people are staying on Bluesky and not moving to the fediverse—thank God, because I do not want them there—is discoverability, virality, and engagement.

    In case anyone is asking how I know so much about how these algorithms work: I was a consultant on a lot of these types of algorithms, so I certainly hope I’d know how they work, lol. No, you get no more details about the work I’ve done. I have no hand in the algorithm Bluesky is using, but I have proposed and implemented that type of algorithm before.

    I have an interest in noetics and the noosphere. A large amount of my ontological work is an extension of my attempts to model domains that have no spatial or temporal coordinates. The question is how do you generalize a metric space that has no physically, spatial properties. I went to school to try to formalize those ideas. Turns out they’re rather useful for digital social networks, too. The ontological analog to spatial distance, when you have no space, is a graph of similarities.