AGAINST COMPLEXITY IN COMPUTING ------------------------------- Post by Rusty ## Preface This essay is meant as an exploratory manifesto rather than a penetrating & detailed analysis of computing's state in 2019. I do not have the qualifications--I am not trained in computer science--nor do I have the patience--such an analysis would take years & require intense collaboration. I do, however, weave together a set of ideas meant to benefit user freedom, a set of principles that I try to adhere to in my computing life. I am heavily indebted to many knowledgeable & thoughtful folks: my comrades @ Rhizomatix Blog, computer-savvy observers on Mastodon's federated instances, & organizations trying to change the conversation around technology. ## Stakes is High 0.0 Mastodon user @uranther@hackers.town once shared this quote from Edsger W. Dijkstra, structured programming's great advocate: "Computing is about controlling complexity, and we have failed miserably." 0.1 Computing has become too complex, especially in regards to the internet. I'm attacking the complexity in process, architecture, resource use, & design. I'm attacking the complexity introduced by both developers & users. 0.2 Decentralized, user-empowering computing programs & networks need to be simple to understand & implement if there's to be any hope of widespread adoption. Big tech offers already offers programs that are simple to learn & intuitive to use. These programs are exceptionally complicated under the hood though. The hidden complexity is where Big Tech successfully manipulates users. If complexity is a portal for exploitation, then developers need to build programs that provide both simple interfaces & architectures. When users fully understand HOW their programs work, they retain their control over the computing experience. 0.3 We've reached a weird state. The simplest programs now are some of the most alien because most of us have either forgotten or never learned computer basics. We rely on computers all the time, but know very little of how they work as machines. Just ask the average person what RAM means & what it does in a computer. I'm not immune from my own criticisms. I have unsystematically acquired my knowledge of computers which means there are glaring gaps. 0.4 This essay ain't no lifehack bullshit. Marie Kondo & lifestyle gurus can fuck off. I love minimalism as a philosophical concept, but I despise how the term "digital minimalism" has been co-opted by charlatans. I'm not talking about living your best life here. I'm talking about making computing accessible to everyone. I'm talking about how better computing practices can nullify power imbalances. I'm talking about reviving old dreams left unfulfilled. ## Some Problems 1.0 Bitreich Manifesto: "We live surrounded by complex software which receives new versions and updates day after day. RAM and CPU consumption never reduce, they increase. Software still provides the same features from years ago, but everything looks new." As Guy Debord noted in the 1960s, capitalism hides the emptiness of its pleasures by constantly updating their appearance. Computer technology only accelerates this tendency. 1.1 Websites demand more & more resources from users' machines. Low-Tech Magazine charted these changes: in 2010 the average site had a "weight" of 0.45 MBs; in 2018, the average site weights 1.7 MBs. The increased consumption of memory & power is making computing environmentally unsustainable. Complex operations burn out computers quicker, increasing the demand to manufacture more machines. The making of computer components is the most energy intensive expenditure associated with them. 1.2 Bloated web design is rewarded. We live in the so-called "attention economy" & designers feel pressured to use flashiness in order to increase user engagement. Then there is feature creep, bored designers adding more & more features. I myself have witnessed websites sending 120 different forms of JavaScript to my computer & still not function as intended. The satiric Motherfucking Website sends out this message to designers: "What I'm saying is that all the problems we have with websites are ones we create ourselves. Websites aren't broken by default, they are functional, high-performing, and accessible. You break them. You son-of-a-bitch." 1.3 Complexity has also severly reduced the number of viable architectures. One can no longer simply build programs from scratch; there are too many factors to consider. Consider what Mastodon user & Rhizomatix Blog comrade @erkin@mastodon.sdf.org told me on Discord: "The current state of web browsers bothers me. 99% of currently maintained engines either descend from Gecko or KHTML lineage, or aren't suitable for anything beyond light browsing. Actually, make it 100%, now that EdgeHTML is dead. It's more or less impossible to write a new engine from scratch now that WWW turned into a pile of overengineered cruft." A Google developer wrote a blog post in which he even admitted that it took him hours upon hours to figure out why his Gmail account once froze. If developers can't figure out problems, what hope is there for average users? 1.4 It does not help that for decades users have been actively warned against tinkering. As Chris on Libre Lounge notes in episode 21, "Command Line Culture": "In a lot of operating systems, we've intentionally set-up this barrier, 'Well, you're not supposed to touch those computery things under the hood.' Right? 'Those are for the people who are making this for you.'" Whenever I open "about:config" in Firefox to tailor my settings, Mozilla warns me that my actions may void my warranty. It's an effective deterrent for users less stubborn than me. ## Minimalism as a Solution 2.0 Computing's current state is not inevitable; we can collectively change its direction by transforming our values. Bitreich elegantly states those notions: "Software has to not misbehave, it has to follow our rules, it has to be reusable, it has to be easily maintainable, it has to provide its recompilable source and it has to be easily understandable." 2.1 Minimalist computing should front-load content, making it easily & universally accessible. Aesthetics should only aid in use & never take the focus away from the substance. This will put into practice the tenth principle in Dieter Rams' manifesto, "Ten Principles for Good Design": "design should therefore be both neutral and restrained, to leave room for the users self-expression." 2.2 Many answers lie in our computing past, especially the start of the PC revolution, when fostering a DIY attitude among users was more encouraged. In the frenzy for innovation, we left behind a lot of good ideas. Yet as @enkiv2@eldritch.cafe reminds users on Mastodon: "A part of that is engaging with retro tech, but when doing so, we need to distinguish nostalgia & aesthetics from serious analysis." We need to explore the computing past in order to rediscover unexplored ideas, not recapture past experiences. I want to learn from Paul Baran's early ideas about distributed networks, but I don't wish to compute like it's 1964. 2.3 While they're not visually attractive, early computer features such as the command-line interface have the power to reduce our contemporary digital noise. Mastodon user @bob@soc.freedombone.net describes how: "With a command line your eyes aren't roaming around the screen a lot, you're not dragging anything to anywhere. It's just typing on the keyboard and so there isn't any 'hidden state' from a user interaction perspective because the keys are right in front of you. There aren't any distracting images. There are no ads." The command line could reintroduce focused concentration into our computing lives. 2.4 The Gopher protocol's potential has never been fully explored. Developed in 1991 at the University of Minnesota, Gopher is a method for retrieving files from straight-forward directories on multiple computers. For a time, Gopher & the web were equal in popularity, but after the advent of Mosaic, the web quickly became favored. But Gopher didn't die. Its simplicity kept it alive: it requires little knowledge to set-up & it requires little in terms of resources. Gopher has been left unscathed by what Mastodon user & Rhizomatix Blog comrade @gcupc@glitch.social dubs, "the original sin of complexity." Gopher is minimalist without even trying, its structure unable to adopt the features that bloated the web. As Rob Bigelow states on his Gopher blog, or "phlog": "Because it doesn't use 'cookies,' display images, support Flash, Java or Java-script, Gopher may be the last commercial-free space on the Internet." We can return to the Gopher protocol not to revel in a pre-web state, but to figure out what is essential & functionally useful in internet protocols & what are distractions. ## End Note 3.0 I summon Edsger W. Dijkstra's ghost again, this time words from 1972's ACM Turing Lecture, "The Humble Programmer": "The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague." Dijkstra's lecture notes from the late 1960s & early 1970s are full of these sorts of exhortations. The reader gets the sense that he's talking to himself as much as he is his colleagues. Reading these notes in 2019 is absolutely refreshing. Dijkstra's words are empty of the arrogant tone & perspective that's the standard operating norm for technological discourse today. Silicon Valley's messianic/dystopian pronouncements have infected cultural perspectives on technology & led us to a confused place. My humble & fractured essay asks, "Why don't we change the nature of our relationship to computing?"