Should you publish source? What if corpers steal it? Of course you should publish source. Property is theft.

Software is post-scarcity tooling. Strip the paywalls; underneath they have always been a new order of labor-saving device, one that can be infinitely copied and infinitely shared. Rich promises live in its possibility; promises the rich have betrayed, possibilities they have squandered.

Show thread

This is an ominous time. Napster is long dead. Aaron Swartz, too. Software is bad, but it doesn't have to be. From BitTorrent to Mastodon, distributed systems leverage the power of many to astonishing effect. Among archivists, pirates reign.

These are strange times. The earth shifts beneath us. Can you taste the ash in the air, or the plastic in the water? The police are outside. The police are inside. The misery in your money and the meager choices it affords arrive from one spirit, our foe whose name is the kyriarchy, and it mutters of a wretched future. We will face it together. Together we are strong.

Do not build a browser.

Show thread

sorry these are all excerpts from an essay on comparative software architectures

Show thread

Self-hosting makes a decent demo but in the production case an application must support many users, even when many users are one person or one user is many persons, for some of us are not sysadmins but inevitably some of us must be.

Show thread

ok nerds here is a draft of this essay

> # Comparative Considerations Regarding Distributed Software Architectures

> Together we are strong. Knowing this, how can we write good software?

Show thread

i drafted this essay because i often wonder about what i should be building or working on. i have severe mental issues that limit how much coherence i have available, and in strange times like this i feel like i need all of it just to survive. but sometimes i’ve got the energy to make a little difference, and i want to know where to make that difference. what to work on as a volunteer can be a daunting choice.

this essay is just the beginning of explaining and exploring architectural tradeoffs in distributed software. i’m not an expert, just an adamant hedge witch, but i’ve seen enough gilded towers gone up in smoke and built enough towers besides to have opinions. maybe they’re bad opinions — i’m always happy to be disabused of half-baked ideas — but nevertheless they’re opinions i forget. i want to remember what i think as counsel for what i do, but it’s hard when you only sometimes know what’s real.

anyway thanks for reading. i’ll post a final draft on my blog.

Show thread

the biggest section still missing from the essay is this: avoid software if you can, and instead invest time and knowledge and resources in the communities that sustain you. it’s well and good if you can afford to spend five years making a software platform with a novel protocol to do something slightly more efficiently, but if you can give your community the same outcome by strapping together physical trashware, i’d say go with trashware. we can’t all be sysadmins but there’s no architecture that doesn’t need them, so become if you can the sysadmin your community needs.

be the one who can say “need a seedbox? i can help you with that”

Show thread

@garbados hey I love all this thread. where will you publish your essay

Although of course I do not agree with everything, I do love the writing and cannot wait for it to be published :)

@garbados holy cow this is as much art as it is a manifesto on software principles!

@garbados I got a few questions if you don't mind taking them (don't feel obligated):

- on chain vs federation: I don't understand how blockchain has a single point of failure either?
- on fighting the browser: would writing stuff, say, over raw TCP or Websockets be okay?
- on auth: would an identity be like an auth token with certain permissions and an associated device ID or something?

@restioson i'm very sleepy so i'm going to follow up with answers in the morning. these are good questions

@restioson @garbados On chains: The point is (I think) that there is a single database, a shared source of Truth, which a) needs to be kept secure through some means (e.g. economic incentives, contributing to capitalism), and b) gives no room for alternative views.

Federation gives rules for how to converse and share, and requires/allows you the server operator to make your own choices on who to trust and why and how much.


- blockchain systems are not all bad, a point i want to make in finer detail in a future draft, but it is more specialized than is generally understood. consider a package manager that uses a chain as a project registry. who can take down malware? who can deal with name-squatting? who can resolve disputes between maintainers? the answer is no one, and that makes it inappropriate for the problem. chains introduce a brittleness that marketing conceals; their monetization is a cheap trick in a trustless, webless future.
- websockets and tcp are great when they’re appropriate, but i find http better in the general case because 1) you can look at data right in your browser! 2) tooling for http is often more available and accessible than for lower-level protocols, which tend to approach arcana.
- an identity might be like an account on a masto instance, or the “identity” you create to allow apps access to your masto data. i left out “capabilities” but i’ll include them later.

@garbados ignoring the way it reads, doesn't quite flow, covers identity, authorisation, connection.
But not quite holistically, the why. Chain vs fedi covers a bit about single point of failure.

@garbados omg this rocks. are you okay with me sharing it in private chats?

(also want to share it on ssb later, but i'll wait until it's not a draft and then ask again!!)

@cblgh sure! but it’s a VERY rough draft, so keep that in mind 😅 any feedback is appreciated too

@garbados excellent, as always 😁

I kinda want to extend "From BitTorrent to Mastodon" to mention YaCy, 'cause you start with the second letter of the alphabet and only make it to the middle 😆

Also I tripped over "Napster is dead" because there's still a thing by that name today that traces lineage back to the original; but it's just a corporate music streaming service now, barely a shadow of its former self.

Anyway I love it. Even just the advice on auth{n,z} by itself is super useful, I've been meaning to dig up trustworthy sources for exactly those questions.

@garbados @jamey In my experience YaCy is super unnecessarily complicated to administer and makes a lot of weird interface and defaults choices, so be prepared for at least some modicum of annoyance ;)

(I use it for an internal crawler at work though, so some of my frustrations may come from that specific use-case. But I don't think all do!)

@keithzg @garbados I mostly liked it in this case for the position of its name in alphabetical order. I've never tried actually using it. 😅 So I'm super interested to hear what you've just said about it!

@jamey @keithzg a distributed search engine like this is something i’ve thought about a lot. i’m excited to look into it more 😯

@garbados @jamey It certainly does seem to work! It just suffers interface-wise from the classic problem of clearly the developers being too familiar with the idiosyncrasies and underlying technical implementations to be able to see how non-obvious many things are to a novice user of it, heh.

@garbados Codes should be lovely. Users should more often be able to easily crack the hood and fiddle with it, or rather not need to, but admire and learn from it in an intelligible and enchanting way. Whether a sausage factory code or an aesthetic garden code, I intuit this could be made friendlier.

@garbados saving this for when I have some time to savor it

@garbados While we are not all sysadmins, having a system that takes a little bit of know-how or will means that it keeps out a lot of riff-raff. Making a platform easily accessible means you degrade your overall user experience in favor of a wider reach. That's what Facebook did, and look where it is now.

@tripp it isn’t the need for sysadmins that keeps nazis out. it’s moderation labor, the active choice to deplatform them and remove them from communities. that’s why facebook is hell: because they refuse to put in enough labor, and they don’t let communities do it themselves — not to mention their moderation guidelines coddle and protect fascists. all you do when you equivocate inaccessibility with quality is reinforce the exclusion of the vulnerable.

@restioson here's the rest of the paragraph:

> Do not build a browser. It is too much work. Instead write server applications with server-agnostic clients, and connect them with HTTP and P2P protocols that use established neutral infrastructure layers, like torrents. People use browsers, and your works must be usable through them as much as without them to be meaningfully accessible.

@restioson the section concludes:

> Someday the web will be gone.

@garbados what does a "server agnostic client" mean? I'm new to net/webdev (but I do have a project in the works that is in that sphere)

@restioson a server-bound client is one that can only be served from a specific server, but a server-agnostic client can work with any server that implements required protocols or meets required expectations. for example, a server-agnostic mastodon client works with any mastodon server. facebook is a server-bound app: there is no other facebook.

@garbados I thought it was like "a client that doesn't need a server" and was wondering how you'd implement P2P and client-server architecture in the same thing nicely lol

@restioson @garbados I must say, as someone who is building a browser I don't *entirely* agree, but I don't disagree near as much you might expect.

Browsers are far too complicated and we should let them focus on a particular task!

@alcinnz @restioson browsers are extraordinarily complicated! what’s your perspective on it? why build one? i’m very curious :)

@garbados @restioson I'm actually building two.

For the first one I wanted to explore new approaches to (re)discovering interesting/useful/entertaining/etc webpages. It's built on the WebKitGTK engine and I'm getting through the feature set I wanted for it.

The second time I wanted to see how much simpler browser engines could be, and if that would help hypertext be presented naturally across more mediums than screen/keyboard/mouse.


@garbados @restioson My theories for my second browser "Rhapsode" appear to be correct. (X)HTML/CSS isn't hard to implement and can be presented naturally in an auditory medium, though that does require a different set of CSS properties and often relies on semantic markup. Input is harder to deal with but that's because of voice recognition technology rather than The Web.

I have a harder time judging the effectiveness of my search/discovery features though.


"Among archivists, pirates reign." should be the slogan of Library Genesis tbh XD


Sign in to participate in the conversation

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!