Open Indie

Writing about open & equitable product development

When you hook up your mind to a cloud-controlled Artificial Synthesizer (ASS), you plainly receive their fully digested discharge.

You don’t get to see what happened further up in the synthetic digestive tract of the all-knowing ASS, where copious amounts of data grub were initially ingested and processed by a divine black-box entity.

You don’t have any insight into where and who those morsels of data came from, and you certainly don’t get any say in which of them the entity should or should not consume for processing and output, delivered to you through the ASS-as-a-Service.

All you’re supposed to do is open your mind’s mouth wide and say “please” and “thank you” for the grossly diluted information bits you’re about to receive.

As Commune edges closer to an early-access release, I've been musing on the concept of the cozy web vibes that we intend to cultivate in our app.

'Cozy Place' by MLeth

Internet friends

My first foray into the cozyverse was IRC. Short for Internet Relay Chat, it's the precursor to the largely unchanged group chats we use today. And much like today's chatroom clients, IRC wasn't really part of the web, since it was accessed via the desktop app of your choice rather than the web browser. (Web clients did arrive towards the end of the IRC era). But it was an intrinsic part of web culture, and an exceedingly cozy one as such.

As a shy pre-teen looking for my place in a world I often found too loud and hectic for my gentle sensibilities, IRC presented a different way of being, with behavioral norms that were more forgiving of quirkiness. Cold-opening a conversation with “ASL?” (age, sex (gender), living (nationality)) was a socially acceptable way to start an interaction, though it was equally acceptable to decline to answer and maintain anonymity. Or just lie, and say you're a dog.

In a time when connectivity was at a premium, asynchronous communication was the norm. That was a blessing for someone like me who thought far too many group conversations in daily life resembled a blitz competition of who could get a word in before a topic had concluded, and the points for best quips and anecdotes would be tallied together to declare a Winner of Discourse. By the time a cogent thought had fully formed for the quiet ones, the conversation would have already moved on.

IRC made me fluent in conversational English at an early age, connecting me with a global network of geeks from all walks of life. It showed me how deep connections could be made with faceless human beings whom I only knew by their written word. It opened a window to new localities, where people were living radically different lives from the little bubble of privilege I knew. And the prevalence of 1:1 discussions encouraged common understanding as opposed to competitive debate. Figuring out who the person on the other end was – what they were like; the shape of their thinking – was the whole game.

In retrospect, IRC helped me understand how introversion vs extroversion is fundamentally contextual; coasting on the currents of the interwebs, I'm a social butterfly, striking up conversations with people in ways I can't even imagine in 'real life' without a severe spike in heart rate.

Retreating to the cozy web

In the words of Maggie Appleton, the cozy web is..

gatekeeper-protected enclave communities, comprised of like-minded folks around niche interests. Run through chat streams like WhatsApp, Slack, Discord, Snapchat etc.

The general thesis of Maggie's article and Venkatesh Rao's The Extended Internet Universe is that the cozy web offers a retreat away from the increasingly enshittified public web, overrun by marketing fluff, data scavengers, advertisements and divisive trolls.

Sadly, no mainstream space is safe from the trickle-down-turned-shitstorm effects of end times capitalism. Twitter and Reddit – where semblances of a cozy web appeared at the fringes – have long since begun their descent into rapid degredation, somehow failing to pay off their VC debts even after years of exploiting the free labor and data of their users.

Discord, carrying on the IRC legacy as a gargantuan network of group-chat safe havens, won't be safe for much longer; they've taken on a staggering $1 BILLION in VC funding. It's only a matter of time until they reach the user-hostile stage of the ruthless enshittification cycle that haunts every over-leveraged platform baron following the monopoly playbook. Not that it was ever that safe to begin with as far as your data is concerned.

Open source, community-owned software like Commune and friends offers a remedy to the deep rooted issues of opaqueness and stakeholder imbalance in closed-source software, but it is not innately cozy. That is an added quality resulting from an intentional design towards that specific end. My intention as a product thinker has been vaguely pointed in that direction ever since I digitally set foot in an IRC channel twenty years ago, but only recently has designing for coziness become my north star.

That journey has just begun, but I've arrived at some tentative answers that all seem to point to the same place of cozy communion where tea and low-fi tunes await.

Lofi Girl

Cozy community software is..

Safe – moderated; incremental

It's impossible to be in a state of coziness if you don't feel safe in your environment. Safe spaces require excellent moderation tooling that empowers its dwellers to self-govern through bottom-up advancements of responsibility.

Taking on moderation duties cannot be something you apply for like a job, it should be something you're organically entrusted by your peers to do more of over time, like an older sibling.

Safe spaces must also grow incrementally, without haste, lest they lose control of their innate culture. Growing by invitation is a time-tested way to scale up with care. Discord exemplifies this with its invite-only spaces, but an invitational community doesn't necessarily have to be quite that restricted. Invites can also be used as calls to action in working groups or topics as opposed to a grant to entry.

Accessible – discoverable; user-friendly

I'd like most of my collaborative spaces to be publicly viewable so that they're easily discoverable and openly available to vibe-checks. Lurkers can take their sweet time deciding whether to engage with us directly.

Coziness is also intrinsically linked to good UX. A deficient user experience feels cold and uninviting, like a poorly lit room in an unfamiliar place. Furthermore a baseline of usability is required to accommodate a true diversity of dwellers (i.e. regular folk who don't work with computers for a living). Monocultural, sterile places are the antithesis of cozy.

Casual – default asynchronous; at-your-leisure

Urgency is the cozy-killer. In most messaging software I’m frequently scared to mention someone at the wrong time, fearing they may not have a DND mode set and I’m gonna loudly ping them in the middle of the night.

This is one of Commune's key differentiators from Discord and the reigning status quo of comms tooling. Here's how we think it should work:

Upon sending a quiet-by-default mention, now the app may ask the mentioner if they want to boost this mention with additional forms of notification, to be sent now or later. Incremental Notifications.

Extol the virtues of fearless connectivity in a disruption-free environment.

Present – optionally synchronous; in-the-moment

While everything in a cozy place should be set up to work asynchronously, the option to connect with your peers in the present moment is an essential part of instilling a sense of belonging. Something special happens when we occupy both time and space together simultaneously.

I'm deeply fascinated by a new breed of cozy places being constructed in the fediverse with software like Mastodon and Lemmy. See for instance tech.lgbt and beehaw.org.

Running on community software modeled after Twitter and Reddit respectively, there's an inevitable tension to these places as they use broadcast-oriented machinery for the making safe spaces. They have to be extraordinarily judicious in choosing which communities they federate theirs together with.

How to square that circle is an open question, but a lot of it fell into place for me when I read an excellent article by Anil Dash about consent-based search on the fediverse.

With consent built mindfully into the content workflow, what starts as a private conversation between two individuals can be moved into a shared spaced when the window of vulnerability has passed, and within those confines its suitability for fully public broadcast can be gauged by trusted peers.

A version of this is exemplified by my Musings on death and loneliness. It started as a chat message meant only for my immediate project collaborators, but I've since elevated its visibility to a blog post (requiring only the consent of one: my own) when I needed to refer to it in a subsequent blogpost, Against Loneliness.

This worked out exactly as I'd hoped when my exercise in vulnerability inspired a friend and project-partner to share his own piece of lived experience.


In summary:

  • Safe – moderated; incremental
  • Accessible – discoverable; user-friendly
  • Casual – default asynchronous; at-your-leisure
  • Present – optionally synchronous; in-the-moment
  • Intimate – selectively private/public; closeness by consent
  • what did I miss?

Available soon in a Commune near you...

🏕️

Groups as both a formal ActivityPub spec and general concept deeply invigorate me. I previously wrote about group-to-group following (FEP-d36d) as the missing glue layer to successfully transition /r/rust to the threadiverse.

Today I wanna talk about what a common implementation of Groups as defined in FEP-1b12 can do for the fediverse at large.

Groups in a nutshell

I recently wrote this post to share my brother's math projects:

https://writing.exchange/@erlend/111000134865964310

A friendly fedizen told me that mathstodon.xyz would be a great place to share this. But how do I share this project specifically to Mathstodon? Except for using the #math hashtag and hoping someone in their midst will see my post and share it on their local feed, there's really no way to do that. That's what groups are for.

If I have the right read on how groups are being implemented in the microblog-paradigm, they're gonna give the local content of an instance's network more structure and discoverability, on an opt-in basis. Threadiverse apps on the other hand specialize in fedi-scale frontpages that aggregate these groups.

Lemmy as a flagship

By far the most popular implementation of ActivityPub Groups to date is Lemmy. It's also unique in its strictly group (boards) centric design.

There is a prior history of groups in the fediverse, existing for a long time in the likes of Hubzilla, Friendica and Streams, all paving the way for what is on track to becoming a default part of the fediverse experience:

Because of its mainstream adoption, I believe Lemmy should be looked to as the canonical interoperability test of any new groups implementation. I say that with the utmost respect for all antecedents of Lemmy-groups. There's a lot of history here that I'm not privvy to; names deserving of much credit. I leave it to the fediverse to patch those gaps in my knowledge as we go, but go we must, and Lemmy is where the action is at.

I'm a big believer in building around where the people are already congregating. Sure, you can always go ahead on your own terms and 'build it and [maybe] they will come'. But a guaranteed way of achieving technical adoption is to go where the people are already at, and ask them what they'd like to see built.

That's what inadvertently happened with Lemmy, which modeled itself after Reddit, a place where lots of people were congregating. As Reddit started imploding, Lemmy happened to be the best idea lying around for digital migrants in search of a more trustworthy alternative to the platform that had betrayed their decade-long loyalty.

While still at the grassroots stage, Lemmy is now very much a place in its own right that you can go visit and decide for yourself if it's somewhere you'd like to stick around in.

I for one am finding myself increasingly at home in the threadiverse. That said, it feels unnecessarily separated from the fediverse which undergirds it.

Talk to your neighbors

One of the most important topics raised on the threadiverse in the past two weeks was titled “Lemmy/Kbin Reinvestment Phase and Recruiting from Mastodon” with distinct discussions on lemmy.blahaj.zone, lemmy.ml and lemmy.world.

It argues that with the initial migration waves of Twitter and Reddit behind us, the next upswell in community growth could come from within, by means of greater cross-fediverse interoperability.

TL;DR: What I’d like to particularly emphasize here is the focus on Mastodon user recruitment. They are far more likely to both improve the quality of discourse here and contribute to community building than your average reddit user. Not to mention they can already be active from their existing accounts. The barrier for entry is nil. I think a valid strat to go about this is to advertise existing specialized instances to their existing equivalent communities on the microblogging fediverse. This solves both the problems of growing the specialized instances from 0 and making their discourse substantially different enough to warrant specialized instances in the first place. Things like:

#bookstodon to literature.cafe #monsterdon to lemmy.film #climateemergency to slrpnk.net #histodon to some equivalent of ask historians (This is probably the only way we’d get the experts needed) Any of the many art tags to lemmyloves.art

I fully support this growth strategy. However, the barrier to entry is quite a bit higher than nil.

There are pending integration issues on the side of Mastodon and Lemmy respectively. Especially on the Lemmy side there's an ongoing debate regarding the extent to which it should be Mastodon-compatible. I'm strongly in favor, because it strengthens the fediverse network as a whole when content can be doubly amplified. There's a big difference between being able to talk to Mastodon vs behaving like it.

Stubborn holdouts of the increasingly off-putting Twitter/X and Reddit commonly point out how their open source alternatives don't really offer any cool new features. You know what will never happen? Twitter and Reddit being in direct, seamless interaction with one another. Mastodon, Lemmy & friends are at the precipice of a brand new social networking experience defined by app symbiosis.

There's a lot more to be said about everything to be gained from group interop, but I won't belabor the point. I think the advent of groups in Mastodon & co. will inevitably push the status quo forward. In the meantime Kbin is doing an excellent job experimenting with possible interplay between the microblog and forum formats.

Unix-philosophy Everything-app

The ActivityPub protocol is uniquely well suited to realize the kind of “everything app” that WeChat popularized and Elon imagines his “X” to become. But unlike the monocultural borg-like approach of those identity proprietors, an ActivityPub-based everything-app will actually be made up of multiple apps operating in unison, joined together by Juicy Clients.

The convergence of groups across the fediverse is a monumental step closer to this next-gen reality of social network applications.

Friendship is the “killer feature” of the fediverse! 👯

Three months ago I submitted a post to the Rust sub-reddit called Building a better /r/rust together. It quickly rose to the top and garnered 230 comments before the sub went dark along with the bulk of mainline Reddit during the blackout protest.

My call-to-action hailed Lemmy as a fitting successor:

I really love the /r/rust community. As a community manager it's my main portal into the latest happenings of the Rust ecosystem from a high-level point of view primarily focused on project updates rather than technical discourse. This is the only Reddit community I engage directly with; my daily fix of the Reddit frontpage happens strictly via login-less browsing on Apollo, which will soon come to an abrupt end.

This moment in time presents a unique opportunity for this space to claim its independence as a wholly community-owned operation.

Soft-forking Lemmy (...) Given Lemmy's controversial culture, I think it's safest to approach it with a soft-fork mindset. But the degree to which any divergence will actually happen in the code comes down to how amenable the Lemmy team is to upstream changes. I'd love for this to be an exercise in building bridges rather than moats.

In the months since, Lemmy has grown immensely, both in scale and culture:

  • After Mastodon and Misskey, Lemmy has shot up to become the third most popular ActivityPub software in the fediverse: https://fedidb.org
  • The “threadiverse” (Lemmy + Kbin) counts 100k monthly active users.
  • lemmy.ml, the canonical instance run by the Lemmy core devs, has become more diverse and less extreme on the fringes.
  • lemmy.world is by far the biggest instance, providing a healthy counter-balance in the cultural melting pot of the global Lemmy community.
  • The Lemmy devs have welcomed many new contributors on GitHub, demonstrating a highly collaborative disposition.
  • In a recent AMA (sort by Top or read this summary) the pair of core devs lead with openness and alluded to a fairly hands-off approach with regards to the Lemmy/threadiverse community & network at large.
  • Lemmy frontend alternatives are popping off. The excellent Photon recently reached full feature-parity with the official lemmy-ui.

I'm happy to report that a soft-forking initiative seems completely unwarranted at this time. The Lemmy ecosystem is thriving 🌈

From Age of Coordination:

A month after the Reddit exodus, Gizmodo boldly claimed “Reddit won”, because Reddit is still left standing. Similar stories have been written about Twitter vs Mastodon.

This type of analysis repeatedly fails to recognize two crucial factors:

  1. Platforms die with a whimper, not a bang. Digg, the precursor to Reddit, is still around today, it's just not relevant. You can even visit MySpace right now if you'd like, but you won't. Twitter/X may still be operational, but its status as the internet's public square has long since been lost (not that it ever deserved it).

  2. Twitter and Reddit may have only lost a few million users to Mastodon and Lemmy so far, but these are nation-sized numbers, comparable to what Scandinavia is to the United States of America. The incumbents have allowed the fediverse to reach critical mass. It's only gonna get bigger, but it already works well enough that I've no need for any other social network. It's nicer here.

Charting a path for a federated /rust

During the Reddit blackout, a handful of different alternatives to /r/rust gained traction:

So which one should Reddit migrants move to? This is a common predicament and was the 2nd most upvoted question in the aforementioned AMA. Also discussed recently in We should have something like federated communities.

The problem that needs solving was succinctly put in a discussion on Community Grouping:

As a user, I recently wanted to post to AskLemmy. Almost every single instance has their own separate AskLemmy implementation. Naturally, I'd tend to post to the one with the most users. But inherently, I'm missing the majority of users by only being able to post to one. I.E., I posted to AskLemmy@lemmy.ml (which had 3k users), but by doing that, I'm missing out on the users from lemm.ee, behaw, lemmy.world which in total are far more than 3k.

No one wants to individually subscribe to 5 different versions of AskLemmy, nor do they want to cross post 5 separate times.

This problem will intensify once Groups are supported in Mastodon, Pixelfed and FireFish.

Community Grouping Redux

There are several feature discussions about different forms of community grouping on the Lemmy GitHub. The problem is each discussion has diverged into talking about several distinctly different implementations, making consensus impossible.

To my eye there are three key proposals in play. They are not in opposition to one another and solve different problems.

Client-side group collections

https://github.com/LemmyNet/lemmy/issues/818

This is the type of grouping Redditors will already be familiar with as 'multireddits'. It's simply a mashup of multiple subs into one stream, like so:

https://www.reddit.com/r/NoStupidQuestions+explainlikeimfive

Useful for people who want to curate their own stream-combos, but it doesn't solve for a fragmented Rust stream.

Server-side group syndicates

There's no canonical proposal for this yet, but the general idea is to build some type of consensus mechanism for several subs of a similar flavor to opt into a shared hub. There's a proposal to group by tags, reminiscent of repo tags on GitHub. Another is Sibling Communities.

These are novel ideas worth exploring, but they all present major coordination challenges. The absence of coordination is what brought us to the current state of multiple “competing” Rust subs.

I've talked to some Lemmy-Rust admins and they are in fact eager to coordinate more, but anything that involves advanced administrative procedures is a non-starter.

Group-to-Group following 🌟

At long last, we've arrived at what I firmly believe is the solution for decentralized common-purpose communities like a /rust, /AskFedi or /montreal:

Let ActivityPub groups (Lemmy 'community' or Kbin 'magazine') follow other groups.

The idea appears to have been around for years, but we never had a mainstream use case for it until the threadiverse became a thing. Now we do, and it feels like we're finally about to make use of the untapped superpowers of the ActivityPub protocol! A centralized app like Reddit just couldn't do this.

If groups can opt to effectively federate directly with other groups, they abide by the same network dynamics as the fediverse at large, I.e. cross-network self-moderation by means of (de)federation. No consensus management needed beyond what different instances on the fediverse are already used to, just on a more granular level.

This feature been explained in detail here.

It also exists as a spec draft: FEP-d36d: Sharing Content Across Federated Forums.

And with that, we have a new call-to-action for any fedi-curious Rust developer out there: Implement FEP-d36d for Lemmy. If anyone wants to step up, I recommend centering the discussion about this in the FEP discussion forum where there's less ambiguity about the job to be done, and it'll also be easier to coordinate with parallel implementations in the likes of Kbin.

I can be found on the SocialHub forum, on Mastodon, or on the Discord we originally set up to coordinate 'better /r/rust'. Hopefully there's someone out there who shares my excitement for what can be made possible here!

P.S. Other impactful but less clearly defined Lemmy enhancements include:

If you are running a new open source project that's ready to start its social media presence, I urge you to do it on Mastodon, the default entryway into the fediverse.

Joining the fediverse is a lot like installing your first Linux distro. Nothing is quite as easy as what you're used to; seemingly simple tweaks lead you down deep rabbit holes of community-curated knowledge spread across unofficial wikis and old-school bulletin boards.

But somehow it doesn't feel all that laborious. That's because you didn't install Linux to save time. You entered the world of Linux (or WordPress, Node, Python etc.) because you got the sense that something is happening over there. People who are as annoying as they are clever never seem to shut up about it. And with every obscure new hack you add to your toolbelt, there's a thrilling sense of mastery.

As with the Linux community, when you poke your head into the fediverse you will find the others; your fellow geeks and misfits. Sure, you'll also run into dogma and ignorance like anywhere else, but on the fediverse the cultural status quo isn't determined by a gated top-level management, it's an open ticket labeled 'help wanted'.

Permeating the whole experience is the deeply reassuring certainty that you are considerably more in control of your digital experience than you ever were before you took the leap.

The bird sings a different tune now

It used to be that you had to use Twitter because of its network power and consequent reach. Not so much anymore:

The majority of large open source projects today are still on Twitter/X, but that's because they've already got their audience there and the platform works very hard to keep them locked in.

That's ultimately what it all boils down to: The fediverse isn't a private prison exploiting its inmates for free labor, it's an open landscape of interconnected villages, wherein its inhabitants are free to come and go as they please. Your follows-list is yours to keep forever. You are in control, not that guy.

Shaky first steps

Mastodon is easy and fun except when it isn’t. Just like joining any other open source community for the first time, there's a trial-by-fire to overcome at the beginning as you're implicitly challenged to choose your own adventure.

So why make the effort? Because the fediverse, like open source, is a movement. It runs on the same interoperable internet protocols that enable you to view this HTML document in a standards-based web browser.

Concerning reach, I could point to how networks of (invariably) 100 million users like Tumblr and Threads are committed to federating with the fedi-net (at least the instances that'll allow them to), but I will argue that the 10+ million people already on the fediverse are actually the exact group of nerdy open culture enthusiasts you wanna be reaching out to. As the common startup advice goes (which I can attest also holds true for community building), this is where you'll find the first 10-100 people who love your project.

Twitter might have 20x as many total users, but the number of open software techies on either network feels increasingly even and will keep shifting in favor of Mastodon & friends as the prison-platforms continue to enshittify.

Ride the mammut

The hardest part about entering the fediverse is (1) joining an instance and (2) finding people to follow.

In spite of what some might tell you, which instance you choose does matter. Crucially you do always have the ability to move, even though it's not pain-free. Like the whole ecosystem it's a work-in-progress, and will get easier.

As an open source practitioner I trust you know how to do your own research, but if the prospect of that arduous first step is preventing you from jumping on, just go ahead and join hachyderm.io right now.

Operated by the Nivenly foundation, Hachyderm checks all the boxes most OSS folks should care about:

  • Strong track record of uptime and robust infrastructure.
  • Well-funded org with high degree of transparency (i.e. unlikely to go poof).
  • Diverse leadership and community.
  • Tech-leaning but open to all.
  • Highly safety-minded, as most recently evidenced by their Federation Safety Enhancement Project.

As for who to follow, there are a number of things you could do, but I will simply suggest the following: Browse through the #opensource tag and follow 50-100 people therein which you find remotely interesting. That should be enough to get you started. And by favoriting/boosting these people's posts, they'll be made aware of your existence as well. That's the empty timeline problem taken care of.

There's no time like the present; hop on!

§ Article Discussion

Preamble: This is a meandering piece! It's a mashup of ideas revolving around interoperability that will be a lot easier to understand if you've already read Web of the People and Assembling Community OS.


In his article “Memex is already here, it’s just not evenly distributed”, Filip Hráček writes:

Here’s the thing. If I’m being honest, most of my experiments with the different memex descendants mentioned above just kind of faded after a few weeks or months. And the reason is not just habit. If they were such a huge boon to my productivity, I’d change my habit the same way I changed it for better IDEs, better social media consumption strategies, or better terminal defaults.

No, the reason those shiny new apps don’t stick is interoperability.

This is where the Noosphere approach of being protocol-first is fundamentally different. Protocols are interoperability frameworks, and we are witnessing a sea-change in protocol convergence for the internet's communication infrastructure.

Stefan Lesser chimed in on this proclamation:

I’m glad that protocols are exciting again, which just means agreeing on stuff is exciting again.

But then agreeing on stuff comes with consequences. It means limiting your freedom. You can’t just do what you want. You can’t just try something new. You can’t just go it alone.

A lot of technology we still use today came from agreeing on stuff. But then agreeing on stuff fell out of favor and companies pushed hard to be first, best, or cheapest. And that brought us a lot of other technology, often deteriorating and short-lived.

I’m unconvinced that we suddenly changed our collective mind and worry that many people still only like agreeing on stuff as long as it means “others agree with me”.

We're now living in the mess of what everyone just doing whatever they want to do gets us. The past two decades have been the age of disruption; move fast and externalize the costs.

The Silicon Valley VC mindset doesn't understand collectivism. Rather than solving problems in the best way possible, the disrupters relentlessly race to be first to market with a minimum-viable solution that allows them to monopolize a problem space for their own enrichment. It's all about value capture for an elite few, instead of value creation for the global commons.

In the collective model of open source development, value creation/capture dynamics are fundamentally different:

Open software generates greater value overall, to the benefit of more stakeholders. Protocol development is a radical form of openness practice, concerning itself first and foremost with wide reaching coordination challenges as opposed to technical problem solving for narrow boundary goals.

Belly of the Beast

Software has indeed eaten the world, but we've been consumed by the wrong type of software leviathan. Instead of building our digital frontier on the back of a benevolent world turtle in a symbiotic co-existence, we're trapped in the belly of a domineering cloud-whale whose primary function is control rather than autonomy.

In the closed-cloud paradigm, it's only the rent-seeking infrastructure landlords who get to do what they want, while the rest of us have to build according to their strict specifications. That's not an environment conducive to emergent co-evolution.

According to Joseph Campbell's timeless monomyth of a Hero's journey, our current state of entrapment is merely the end of Act 1:

The belly of the whale represents the final separation from the hero's known world and self. By entering this stage, the person shows a willingness to undergo a metamorphosis.

“The idea that the passage of the magical threshold is a transit into a sphere of rebirth is symbolized in the worldwide womb image of the belly of the whale. The hero, instead of conquering or conciliating the power of the threshold, is swallowed into the unknown and would appear to have died. ... This popular motif gives emphasis to the lesson that the passage of the threshold is a form of self-annihilation. ... Instead of passing outward, beyond the confines of the visible world, the hero goes inward, to be born again”

Thus the stage is set for a reclamation of our digital selves. It's time for Act 2!

Federated Coordi-Nations

In his book The Network State, Balaji Srinivasan posits that a startup society – the initiating precursor of a network state – can begin with the formation of any online community, like a Facebook Group or a Discord server.

Balaji can be faulted for many things, but I can only commend him for trying to imagine what greenfield state building might look like in a status quo that considers this to be impossible.

By default I don’t trust Balaji's personal motivations, on account of his billionaire status. So when he invokes ideas like collective action, rather than trying to deconstruct what he actually means, I just make note of that fact that he felt compelled to make that invocation. Even if he doesn’t fully embody the idea, he acknowledges its power.

For an in-depth critique I recommend The Blockchain Socialist's 'Overthrowing The Network State' series. Their work has recently culminated in an alternative model of the network state concept: The Rise of Coordi-Nations.

Coordi-Nations are voluntary interwoven networks of communities, with aligned values and a shared identity. They mutualise resources to redistribute them within the network to engage in collective action, through participatory governance and interdependency between nodes.

This is a remarkably fitting description of the community-owned instances that make up the fediverse.

While legacy networks like Twitter, Facebook, Reddit and Discord are startup societies of the monolithic nation-state variety, Mastodon, Firefish, Lemmy and Commune represent the new world of borderless coordi-nations, i.e. protocol-derived platforms for cooperative network states. What they lack in size they make up for in the collective power of their interoperability and common purpose.

Playing co-op games

A month after the Reddit exodus, Gizmodo boldly claimed “Reddit won”, because Reddit is still left standing. Similar stories have been written about Twitter vs Mastodon.

This type of analysis repeatedly fails to recognize two crucial factors:

  1. Platforms die with a whimper, not a bang. Digg, the precursor to Reddit, is still around today, it's just not relevant. You can even visit MySpace right now if you'd like, but you won't. Twitter/X may still be operational, but its status as the internet's public square has long since been lost (not that it ever deserved it).

  2. Twitter and Reddit may have only lost a few million users to Mastodon and Lemmy so far, but these are nation-sized numbers, comparable to what Scandinavia is to the United States of America. The incumbents have allowed the fediverse to reach critical mass. It's only gonna get bigger, but it already works well enough that I've no need for any other social network. It's nicer here.

Like one Lemmy user commented:

The way I see it, all of us who migrated here won. Enshittification is eventually going to kill Reddit, the only question is when.

I really do think a brain drain is happening. Occasionally looking over the fence, it appears the people still active on Reddit are a tad more complacent and nihilistic. Gone are the early movers and enthusiastic pioneers who still (or once more) believe in a Web of the People.

Mastodon, Lemmy and their many peers are all uniquely part of the same interoperable network of loosely coordinated builders, intrinsically motivated by the daily experiencing of their self-made spaces. Far better than your regular social-engagement network, the fediverse is a movement. And unlike the walled silos whose only metrics are captive users & clicks, the success of a movement is measured in its ability to inspire change and drive coordinated action.

Generative AI (LLMs) hasn't worked for me yet, especially not as a digital assistant with a conversational interface.

But I can see such a thing working exceptionally well as a translation layer between me and the most prevalent algorithms of my daily life.

I'd love to have a conversation with my Spotify algorithm:

  • Chill it down by about 20%
  • Prioritize this artist higher
  • Create a new playlist with songs I've never heard before based on these two playlists
  • More oomph!

The DJ-assistant doesn't need to be perfect, it just needs to make a change, and explain basically how that was done. As long as you can continuously tweak your sorting algorithms in a non-destructive (i.e. fearless) manner, your 'algorithmic literacy' will keep improving.

Conversational AI gives the general public a plain language way to understand and interface with algorithms that are otherwise only understandable to <1% of the population.

Of course, Spotify won't open up their algorithms to make this possible to do with anything outside of their self-biased control. Nor will Twitter or Reddit, but thankfully we've got open alternatives like Mastodon or Lemmy to freely tinker with, and at least the latter is starting to embrace more advanced sorting algorithms that could be worth re-tweaking for fun and (knowledge-) profit.

Another good candidate for prototyping this thing might be Tumblr, which recently open sourced the majority of their algorithms.

I dunno, maybe there's something there. If you see it, please feel free to make this idea your own!

Oh, and I'd only trust an open source and local-first AI assistant to insert itself between me and my most used applications, obviously.

Online community platforms are assembly-kits for large, communal bonfires, designed to draw people towards the light and into the warm togetherness of community. I think the primary function of bonfire software is to create space for group-scale discourse.

campfire_by_nozomi_m_db62vkk-fullview 'Campfire' by nozomi-M

Riffing on thoughts about healthy information consumption, Tom Critchlow described his personal campfire thusly:

https://tomcritchlow.com/2018/10/10/of-gardens-and-wikis/

Campfires – mostly blogging for me, though I know some folks gather around private slack groups too. My blog functions as a digital campfire (or a series of campfires) that are slower burn but fade relatively quickly over the timeframe of years. Connection forming, thinking out loud and self referencing. This builds muscle, helps me articulate my thinking and is the connective tissue between ideas, people and more. While I’m not a daily blogger I’ve been blogging on and off for 10+ years.

Blogs however are only good bonfires insofar as a blog has a chatty audience. Even when they're talkative, blogs are a one-to-many medium, as opposed to the many-to-many connectivity you can easily imagine if you draw lines between five or more people gathered around a central flame.

Group chat is the epitome of this dynamic. Get five people with a shared interest into a chat room together and you've just started a community!

aside: Discord, the reigning king of group chat, was apparently even going to be named 'Bonfire' in its nascent stages. Gotta say I'm very happy to still have bonfire as a term belonging to the public commons.

Chat has its limits though. For information to be synthesized into knowledge, the rate of messaging needs to be slowed down to make room for less reactive, more deliberate, long-form expression.

Forums, with their boards and threaded messages, serve this function. The bonfire's contribution to the digital garden happens through threads, aka topics. Specifically, threads with hyperlinks, so they can point to one another. That’s the essence of it.

Notes [aka threads] are conversations across time Thought Legos (threads as cards)

Today the book is already (…) an outdated mediation between two different filing systems. For everything that matters is to be found in the card box of the researcher who wrote it, and the scholar studying it assimilates it into his own card index. – Walter Benjamin

Making a garden-minded community platform

Five years at Discourse taught me a lot about the interplay between 'chatrooms' and 'forums' as two different modes of conversation.

While chat is immediate and primarily synchronous, communication in Discourse is gradual and asynchronous. We've seen far too many community managers treat these two modes of communication as competitors. Quite on the contrary, chat and forum communities can complement one another beautifully

Group chat is great for..

  • Minimum-viable community building
  • Real-time or same-day resolutions
  • Urgent notifications
  • Socialising in the moment
  • Surface-area problem solving

Forum discussion is great for..

  • All-inclusive dialogue The asynchronous nature of a forum community effectively lowers the bar about as far down as it can go. You’ll get a much greater diversity of input if you solicit feedback from anyone who’s available some time in the next 24, 72 or 168 hours as opposed to right now.

  • Communities of scale Similar to what version control did for code and wikis did for encyclopaedias, forums have long since solved the “too many chefs” problem for discussion at scale. Hundreds or even thousands of people can discuss an equal amount of topics simultaneously on a forum because (1) discussions are broken up into logical topic blobs and (2) long-form input is strongly encouraged over rapid-fire back-and-forth debating.

  • Knowledge synthesis, storage & distribution The permanence and discoverability (web-readable links) of a forum topic makes it an excellent storage of knowledge.

  • Slow deliberation Rapid chatter should be reserved for matters of true urgency. The vast majority of communication can happen asynchronously, leaving ample space for deliberation and global participation. Ironically, slowing down our conversations enables us to reach good resolutions faster.

  • Civilized discussion If you hold someone’s comment for moderation in chat, that’s incredibly frustrating because the norm is live discussion. On a forum on the other hand the expectation is that you’ll get a reply within a few hours or even days after posting, so if your post gets flagged? No biggie, you can wait, and maybe even reflect a bit on what you've said in the meantime.

Duality of (A)synchronicity

Left unsaid in that article was my newfound conviction that synchronous vs asynchronous was a false duality as far as any community platform is concerned. Both modes are required for good conversation to arise and thrive.

As separate apps you can still mash the two discussion mediums together, but it has some flaws. You end up with:

  • Duplicate user directories
  • Competing forms of private messaging
  • “Where does this message belong?” uncertainty
  • Poorly integrated tools for content gardening

Most open source projects don't have a dedicated forum, but the ones that do almost certainly also have a group chat. My last stint at Discourse was an attempt to merge the two modes together, with the introduction of Discourse Chat.

I'm really proud of that MVP (which has since graduated into core), but the direction I wanted to go from there was understandably incompatible with the Discourse project's DNA as a traditional forum: I proposed we make chat the lead of our community experience. Community begins in the chat rooms, I thought. Discourse thought not, so we amicably parted ways.

Years later, my position remains unchanged. 'Group chat' and 'forum' ought to mean roughly the same thing. That's in fact the direction we seem to be headed in, since Discord, ruler of our community lands, now supports a variety of threads & boards features that fit neatly into the forum paradigm.

Mainstream forum software

Discord today is equal parts group chat and forum. I wish I could say “problem solved!”, but there are some critical failures in Discord's makeup:

  • Discord is not web-readable and thus only minimally linkable. I doubt they ever will be, because it weakens their anti-competitive moats. In other words, they're not interested in participating in the great knowledge commons of the open internet.

  • Discord mixes different thread concepts (chat-channel threads vs forum-channel threads) instead of building a unified forum interface for threads as a progressive information artifact that can evolve from simple to complex in a lossless manner. (I can explain more of what I mean by that in an addendum.)

  • Discord's finances are dubious. They've taken a billion dollars in investment. Watch what happens when they try to 100x that. Enshittification ensues.

  • Discord is closed source. Communications software is critical infrastructure; its basic functions and inner workings should always be freely available to the public.

If Discord isn't the answer, what is?

The Contenders

Mattermost, Rocket.Chat, Discourse, Zulip, Linen; These are all great open source alternatives to Discord as a group messenger. But Discord is the superior community platform by being the one thing these other alternatives are not: A network.

As the ongoing mass-migrations from Twitter to Mastodon and Reddit to Lemmy/kbin have shown, internet users have become better informed about the dangers of centralization and networking effects. When the incumbent platforms fully enshittified, users didn't flock to just any other app for an easy fix. Instead of continuing the vicious cycle of identity lock-in and data harvesting, we sought out the open networks.

Even the rising Twitter-killer Threads – under pressure from a savvier internet populace and impending EU regulations – openly acknowledges the value of network independence and ones right-to-exit.

ActivityPub is already the official protocol for social networking on the internet, albeit not widely known as such. If Meta follows through on their commitment to support ActivityPub, the protocol will be elevated from niche internet standard to mainstream internet default.

When Discord inevitably implodes, there's only one clear contender for migrants in search of an open messaging network:

Matrix, “an open network for secure, decentralised communication”. It's a foundational assembly-kit for networked chat applications. As a pretty big bonus it's also encrypted by default and thus signs everything, which facilitates socialized proof of work. (This stringent commitment to security however does come with some usability concessions that I'll address another time.)

The Matrix protocol is a major accomplishment. Still, having been made by people who care first and foremost about how messages are sent (securely, reliably, quickly etc.), there are gaps to be filled by people who care instead about how messages are written, displayed and organized as part of an ever-evolving knowledge mosaic.

Information into Knowledge

It bears repeating: Communications software is critical infrastructure. In the absence of communication, conflict resolution becomes either stagnant or outright violent.

Messages are transfers of thought. One mind's idea transmitted to another, through whichever medium of transport is best suited for the job. We share our inner thoughts with external peers to construct a shared reality. How we collectively view the world is downstream of our individual ability to convey our personal experiences.

Our collective power and agency in this world is only as strong as our freedom for individual expression; our capacity for pro-social change can be measured in how freely we may exchange messages with one another.

Evolutionary Communication Protocols

In pre-literate society, our communication protocols were hardly different from wolves, whales or magpies:

  • Thinking; inner voice
  • Conversing; communal discourse
  • Gossip & speeches; word-of-mouth broadcasting
  • Singing; educational storytelling

As we evolved into a proto-literal society, our ancient comms protocols were layered on top of technologies for stored language:

  • Thinking transcribed into a private diary: personal messaging
  • Conversing across time and space by sending letters: interpersonal messaging
  • Large-scale gossip by distribution of pamphlets/newspapers: broadcasted knowledge
  • Songs & folklore transcribed & elaborated into epics, shared as books: organized knowledge

Our capacity for thinking and knowledge accumulation has grown exponentially ever since, and this trend shows no signs of stopping in the digital age. With an overwhelming flood of information surging through our society's digital pipes, we need valves to regulate the flow.

Life of a digital message

Messages are living information artifacts. As content blobs they can morph through many different forms, from ephemeral musings to everlasting tomes of shared understandings.

Let's consider the lifecycle of a message as contained and transferred through digital mediums.

message-progression

At first there's just a thought. Let's say this one isn't even written down anywhere. It just exists as some vague idea in someone's head.

Once a message is expressed in a chat room it has taken on its initial form for the purpose of storage & transmission. After some back-and-forth the core of the message will become evident as a recurring topic of discussion.

A series of related messages can then be glued together to make a thread. By synthesizing multiple chatty idea fragments into a cohesive micro-thesis, the flow of discussion can be focused towards an end-goal. In the context of a thread, comments are written in response to the opening thesis, as opposed to in a chatty context where you're generally responding to any message immediately preceding yours.

With a draft thesis sufficiently scrutinized and supplemented, a final synthesis brings it all together into a carefully edited article; a fully grown knowledge artifact. And at every stage of our message exchange, each new bit of information feeds back into our collective minds to form new thoughts.

Not every message takes this exact path, but the above is a common example of how community software acts as a seeding ground for ideas to go from noisy information blobs to restful knowledge gardens. For current messaging software, and Matrix in particular, this is the gap that needs filling.

Outward notes, inward notes Unconscious R&D

Commune

Today we're pre-releasing Commune, our first foundational step towards a community platform built specifically for alignment with digital gardens. Cyber-ecological messaging anyone?!

It's an evolving piece of software serving as the primary bonfire component of the Community OS concept.

It currently exists as two different but complementary entities:

Commune app

Commune is an open source community-building application built on top of the Matrix protocol. The app consists of a server-backend and a client-frontend.

While in v0.x_pre-alpha it is essentially Linen (or Discourse Bot Kit), but for Matrix instead of Discord/Slack. Hook your existing Matrix instances up with Commune to give your channels web-public threading superpowers.

The app aims to eventually reach relative feature parity (not symmetry) with Discord as well as Reddit, by building on top of the Matrix and ActivityPub protocols. Commune is protocol-first software.

Easy self-hosting is a top priority, but can only happen downstream of improvements to Matrix (and to a lesser extent, ActivityPub) server software like Synapse and Conduit. Until Commune-app is more mature, the recommended way to use it is via Shpong.

Shpong dot com – powered by Commune

Our first flagship instance built with Commune is shpong.com

Screenshot 2023-07-12 at 20 22 48

It's a Reddit-like site that operates a network of sub-communities. We've gone through so many iterations with the Commune software, but our collaboration has been happening ever since @ChurchOfTheSubgenius revealed Hummingbard, the first iteration of what is now Shpong.

Screenshot 2023-07-12 at 21 17 57

A few real world calamities got in our way, but we're still in motion. Reinvigorated by the gross mismanagement of the world's leading community spaces and the inspiring response of the fediverse as a protocol-driven alternative to the broken status quo, we're officially throwing our hats in the ring.

Today's subtle announcement at the tail-end of a 2000 word essay is not our grand reveal of Commune. This one's addressed to our fellow comms nerds who can pick up on what we're putting out while the software remains half-baked. Let's talk!

Matrix: https://matrix.to/#/#commune:matrix.org Discord: https://discord.gg/BkEpMzzh38

The official lemmy-ui works fine, but it has never been a top priority for the Lemmy project; understandably so, as they've been focused on pioneering an ActivityPub-enabled forum backend.

Thankfully the UI side is now receiving a ton of updates, but alternatives are still much needed:

  • lemmy-ui is styled like legacy Reddit, which isn't everyone's preference. (I personally have no need for the sidebar.)
  • Inferno is a rather niche framework that raises the bar-to-entry for some prospective contributors.
  • Alt-frontends make for a healthier app ecosystem.

I like to go on the occasional GitHub safari by searching within a trending area of interest. Today I simply looked up the most recently updated repositories containing the keyword 'lemmy' and I'm thrilled to report that if you're in the market for a new Lemmy frontend, you've got plenty of promising options in the making!

The following are my handpicked examples and not an exhaustive list. I'm only including frontends that are already usable or close to it. I'm sure there are others to be found on indie and self-hosted code hosts out there as well (I did have a look through Codeberg and sr.ht), but afaik there's no good search tool to discover those repos.

edit: this list is more comprehensive.

Svelte – Web

Slemmy

https://github.com/diamondburned/slemmy

sx-lemmy

https://github.com/sheodox/sx-lemmy

https://github.com/ando818/lemmy-ui-svelte (Mobile support via Capacitor)

React Native – Web/Mobile

https://github.com/aeharding/wefwef

https://github.com/gkasdorf/memmy

Flutter – iOS/Android

https://github.com/liftoff-app/liftoff

https://github.com/hjiangsu/thunder

Swift – iOS

https://github.com/mormaer/Mlem

Kotlin – Android

https://github.com/dessalines/jerboa

GTK – Linux

https://github.com/lemmygtk/lemoa

Sync – Android

Though my focus here is on open source apps, Sync for Lemmy deserves an honorable mention as the first major app to “pull an Ivory” by abandoning the enshittified Reddit platform and pivoting over to the open source Lemmy (perhaps also kbin et.al.) ecosystem. Bravo!

Opportunities for collaboration

There are two takeaways I'd like to highlight from these findings:

Developers, you've got friends out there! Divergence is a necessary component of innovation, but at some point the pendulum needs to swing back in favor of convergence and shared foundations.

“If you want to go fast, go alone. If you want to go far, go together.”

Projects that are built with the same framework are great candidates for collaborative efforts. Sure, you might have different UX preferences, but that's what theme systems are for. Start by looking at your commonalities rather than your differences and there's a good chance you'll find the pros of working together far outweigh the cons.

Sysadmins, consider officially adopting an alt-frontend, effectively as a mutually beneficial partnership.

  • Gives your instance a unique identity.
  • More agency over instance interface features.
  • Lends legitimacy to the alt-frontend(s) of your choice.
  • Directs developers who are aligned with your community towards that open source project.

Bonus side-quest: The join-lemmy site would greatly benefit from the equivalent of Mastodon's app directory.

As these fresh new frontends mature, we march ever closer to a new UI paradigm of multi-modal Juicy Clients, capable of rendering our multi-faceted fediverse in all of its splendor through one seamless interface.

p.s. If you're a client-side Rust developer, I've started discussing the prospect of a juicy client with Ebou, a Mastodon frontend made in Dioxus.


Discuss:https://writing.exchange/@erlend/110616473377954593 – Lemmy (link pending)

There’s an increasing obsession with “humanness” these days:

While necessary in some contexts, it’s a limited solution to a contrived problem. There’s always gonna be a need for anonymity and permissionless identity on the web; it’s how disadvantaged minorities can put forth counter-cultural ideas to be judged on their intellectual merit alone, decoupled from personal identifications at risk of discrimination and censorship.

As an alternative to proof-of-humanity, I’m toying around with proof-of-work in a practical sense of social networking, completely unrelated (but not in opposition) to blockchain.

Outside of making a personal connection, I don’t need to know the identifications of the person on the other end of the line in my online interactions so long as they’re doing good things that align with my values. If something of value can be created through our interaction, my anonymous co-conspirator can be three raccoons in a trench coat for all I care.

Faced with a new prospective collaborator, rather than looking for proof of humanity I look for proof of positive intent. In contexts of cheap oversight, like a 1:1 exchange or a document for which I alone can authorize external contributions, intent can be easily determined from the contribution that I'm being asked to receive.

For entry into larger communities and spaces of shared purpose, some form of gating is needed to keep out bad actors, without clogging the flow of good will. In a many-to-many context, reviewing individual contributions doesn't scale. Instead, general intent can be surmised from a record of positive-sum work.

Having a record of work, especially open source contributions, builds trust in an increasingly untrustworthy web.

"Green Wall" of contributions on GitHub

Computer programmers have had their record of work represented in flashy “green walls” on GitHub for a decade and a half. Meanwhile most of the work I do as a community advocate, product manager and open source strategist is largely unlogged.

Having a recorded proof-of-work, especially for ones open source contributions, builds trust in an increasingly untrustworthy web. Every component of the emerging Community OS stack helps me document my work as an internet-native knowledge worker:

You don’t see a lot of spam commits on GitHub, because it’s a platform with very strong incentives for constructive, ‘real’ content. Once the incoming content is of legitimate value, whether or not it's being sent by a human or some other “untouchable” is largely irrelevant.

If I learned today that someone who contributed something to a project of mine turned out to be a violent criminal, I wouldn’t revoke that contribution. The bad actions of that person can’t cancel out their good actions, and vice versa. Rather, I'd be happy to have made space for an otherwise harmful individual to put some good into the world.

Similarly, it won't be such a bad thing that our World Wide Web gets overrun with autonomous bots so long as they’re doing good stuff. Point being, I care first and foremost about discerning good contributions from bad ones, not a prospective contributors' humanness.

I want to make a place where anyone who’s willing to share their work, however nascent, is welcome. Doesn’t matter if the the person behind a profile is one person, multiple persons or not technically a person at all; a proper profile weaving together the web of an online identity represents a body of work. That online record is the proof of that internet actor's existence, not some retina scan and a government issued passport.


Fediverse Discussion