technology, community, and idealism

[2024-09-29 note: This was previously posted on Cohost, on 2024-04-22 at https://cohost.org/ireneista/post/5666865-technology-communit but the irenes.space URL is the permanent one.]

there's this kind of thinking trap that programmers sometimes fall into, which we'll explain

honestly? in our youth we fell pretty hard into it and were huge Lisp fans. then later we were huge Haskell fans for similar reasons. it took a while to really process everything and come to terms with the impossibility of the desire

the trap is this: if everything is written in (some specific language / framework), it'll be good and we can stop worrying about all those confusing externalities such as security!


... or such as maintainability, or adaptability to different environments, or any of a ton of other things.

different programming languages make different promises in this regard and it's not that any of those promises are FALSE, it's that it doesn't solve everything

we want to say, we are huge believers in language-level security features. we see that as the only way that the strategic balance of hacking could ever tip towards the defender.

we are not writing this thread to say that people shouldn't seek better programming languages - we're writing it to dispel the illusion that there is ever a FINAL programming language


so to get more concrete, this manifests when people say (as we did, when young!) - if we can just make sure that all software is written in Lisp, all these hard problems will go away.

it's an easy conclusion to arrive at. we looked around the Lisp ecosystem at the time (this was twenty years ago), there were a lot of people who cared about language-level features for this stuff, we didn't see a ton of legacy code problems

people have believed this about a lot of the more idealistic languages

and those ideals are good! they're important! Rust lifetimes, for example, are a really great innovation that does meaningfully improve security (as do various other ideas in Rust but those aren't new, per se, other languages have tried it before)

but like

the reality is that as soon as you get thousands of people using a language, and using it for production kinds of tasks, an awful lot of the problems you thought you left behind come back

some of the problems come back because you had inadvertently assumed them away. what if we just don't worry about GUIs for now? what if nobody actually uses anybody else's libraries but instead writes all their own stuff from scratch? those assumptions don't hold up when the community grows

other problems come back because they're problems that just... only exist when humans gather in large groups. oops, your compiler's "benevolent dictator for life" turns out to be racist and that has created a huge bias in who is and isn't part of the community you didn't realize you were building? .... oh, and that lack of feedback from other groups has meant that a lot of the technology has reductive assumptions baked into it that it's too late to change? surely nobody could have predicted this

every technology is also a community

that's really important and also as far as we know it's our own coinage, so we'll say it again, louder

EVERY TECHNOLOGY IS ALSO A COMMUNITY


in our experience, most people who subscribe to idealistic views of how to improve software based on fancier technologies are, at least in part, going that route because it lets them avoid thinking about the community stuff

strong engineering ideals are good! they're really important!

strong community ideals are ALSO good

and so uh....

we think it's important - at least, in our pursuit of personal growth, we found it to be - for programming language communities to examine the extent to which they might be focusing on technical mitigations as a way to avoid thinking about social problems


because long-term, if you're trying to build to last, you need to be able to solve BOTH technical and social problems

the "what if all code everywhere were written in this specific language" thing is just another way of saying "what if all code everywhere were written by my friends? or, at least, by people I can trust?"

and it's... that's not going to happen. as much as we might want to, we cannot personally have millions of friends (in the real sense of that word, not the capitalist bullshit sense).

it's a purity narrative in disguise.


or, again, it was for us, once we got to the root of it. we're not saying that it is for everyone, you'll all have to do your own reflection, you are the expert on yourself.

it's the thought that if only we could sort out the right people and tools from the wrong people and tools, everything would be simple

and uh

purity narratives are bad, y'all.

they're the shit that white supremacy draws its strength from. you don't want to be thinking in those terms, it doesn't lead to solid engineering outcomes, it doesn't lead to anything good.


we worry that this might feel too abstract, that the connection we're drawing won't be clear to readers. it was the result of a lot of introspection and we haven't really talked about it at length before (unlike many of our threads, which are synthesized from conversations we've had), so we don't know which parts you-all will need more explanation of. feel free to chime in and ask


oh uh in addition to intracommunity conflict, another of those problems that becomes clear when your language-community gets big enough is that people start using it for military shit

or for corporate shit that you don't approve of, or whatever

and it turns out that you have no defenses against that because you skipped the social steps. technology is VERY easily co-opted to military ends, it's been happening for actual millennia. you need to think ahead about it.

so. like. DEFINITELY keep pursuing novel technologies that try to solve entire classes of problem. just remember that the technology ALONE will never do that. if you don't plan for the culture as well, it's gonna fail and then nobody will see the benefits.

every technology is also a community

therefore, begin planning BOTH parts of that in parallel, from the very beginning

[originally posted in August 2023 at https://mastodon.social/@irenes/110929423510850260]

(Atom Feed)