Freeing software

John Ohno on 2019-09-20

A response to Open Source Needs a Reckoning and a sequel to Software vs Capital.

The noble goal of the free software movement is to change the relationship between people & software and to change the relationships between people mediated by software — specifically, to make software work for people by removing legal barriers based on intellectual property law that arbitrarily separate user from developer, so that users can change software to suit their own needs.

(In practice, free software has attained this utopian ideal in only a limited scope. This is not the appropriate place to dig deeply, but suffice it to say that because of myopia & a misplaced pragmatism, in the form of an unwillingness to address barriers other than IP, free software caters almost exclusively to professional developers looking for a free drop-in replacement for a commercial product to use in the course of their lucrative work creating other commercial products. Utopia for the few is a kind of dystopia.)

The legal barriers between user and developer have historically been erected almost exclusively in the name of commerce. While the depoliticized & commerce-friendly ‘open source’ movement has only worked to demolish the barriers separating large companies from unpaid labor, the free software movement has continued to patch new exploits deployed by the forces of capital to subvert ostensibly free software into a position of user hostility in the form of various means to avoid sharing code improvements: GPL3 patched away various loopholes in linking to proprietary code, and Afferro GPL patched away the ability to avoid ‘distribution’ entirely by deploying as a service.

These patches do not and can not address the root of the problem: users and corporations do not have aligned incentives, and capital produces an exponential distribution of power asymmetry (the only thing in computing that really doubles every 18 months is the accumulated ability to coerce the skilled labor of engineers); therefore, so long as capital has the ability & incentive to influence software production, software will be pitted against users.

Here’s a simple example. I am a user of Linux — which is free software. This means that, theoretically, I can spend an hour or two after work modifying Linux to better suit my own needs — assuming I have the energy. I am lucky, as a professional developer; I don’t work nearly as hard as a cashier or a burger flipper, and unlike those people, I get a living wage and paid vacation. So, I have much more time to adapt Linux to my needs, including learning whatever I need to learn to do that. But IBM can afford to employ hundreds of people full time to modify Linux in order to make it better fit for IBM’s needs. In fact, IBM, Google, Apple, Microsoft, and NVIDIA all pay people to work full time on Linux & all the various associated pieces of code, and while their work very occasionally benefits me, it mostly benefits other big companies & often makes things worse for me. After all, my ability to use my desktop doesn’t benefit at all from scaling optimizations (it’s not part of a cluster, I’m not doing high performance computing on it, and it matters a lot more to me in practice that a web page is unresponsive than that it’s taking ten seconds less to compile GCC), & the way a Linux box is deployed and manipulated at scale (containerization, remote manipulation of firmware) ranges from irritant to potential vulnerability when applied to a self-administered personal machine.

Every open source project that is marginally amenable to the needs of capital gets further biased toward corporate use, unless (as in the case of openssl & other packages that really require serious professional expertise) they are already so optimized for use by a rareified class of professional software developers that even large corporations find it easier to simply use them than to contribute to them (at which point they will simply be adopted when the maintainer inevitably starves to death or runs out of dialysis money).

As someone who values the goals of free software, what can I do? The FSF won’t save me: they have been in bed with capital since Cygnus; the OSI was in bed with capital from the beginning.

My preferred solution is to write software so philosophically and structurally misaligned with the needs of capital that to be adopted by a commercial enterprise would require a substantial (preferably even total) rewrite. So much free & open source software is structured for easy consumption by corporations, sometimes because the packages are in fact money-making enterprises (through support contracts, dual licensing based freemium plans, or as a kind of loss-leader or PR boost), but often it’s simply because when the author goes home and starts writing software he uses the unexamined habits picked up from the previous eight hours of writing software for The Man. Quirky, personal software that is aggressively unscalable & focuses on delivering human needs in human time over machine needs in machine time is nicer to write, nicer to use, and difficult for capital to subvert.

Anti-authoritarian anti-capitalist software structure requires care and introspection, though, & good-faith efforts like Mastodon still often fail. So, in a pinch, a ‘no commercial use’ clause will do — so long as it’s combined with guaranteed basic income.

The only way to set software free is to unshackle it from the needs of capital. And, capital has become so dependent upon software that an independent ecosystem of anti-capitalist software, sufficiently popular, can starve it of access to the speed and violence it needs to consume ever-doubling quantities of to survive.