The Philosophy Of Software
Code and Mediation in the Digital Age
David M Berry
Palgrave Macmillan, 2011
"The Philosophy Of Software" is an ambitious book by David Berry, who has turned his attention from the social relations and ideology of software (in "Rip, Mix, Burn", 2008) to the question of what software means in itself. The philosophy that he has in mind isn't the mindless political libertarianism attributed to hackers or the twentieth-century foundational mathematics that is the basis for the structure of many programming languages. It is a serious and literate philosophical reading of software and its production.
Software is an important feature of contemporary society that is rarely considered as a phenomena in its own right by philosophers. Software permeates contemporary society, Berry gives the examples of Google's profits and the "financialisation" of the economy through software as examples of software's importance in this respect. In reading this review on a screen you have used maybe a dozen computers, each containing multiple programs and libraries of software directly involved in serving up this page. Digital art and cyberculture often use and discuss software and philosophy (or at least Theory), but usually to illustrate a point about something other than software. The software itself is rarely the subject.
Rather than devote each chapter to a different philosopher's views on software or adopting a pre-existing description of software Berry develops a novel and insightful philosophical approach to understanding and considering software. After providing an introduction to the foundational ideas and culture of software (Turing, Manovich, Cyberpunk), Berry presents a way of thinking through different aspect of software. The source code, the comments, the compiled program. Each stage and product of the lifecycle of software is given a philosophical context.
Heidegger emerges as the philosopher whose ideas first underwrite Berry's approach to software. Latour and, in a surprising way, Lyotard play pivotal roles in later chapters. If these are not philosophers you were well inclined towards before then you are in for a pleasant surprise.
Berry presents some typographically appealing and culturally interesting code in order to demonstrate different features of the production of software. The swearing placed in Microsoft's Windows source code comments by its programmers will mirror the frustration of many of its users. The Diebold voting machine code that illustrates the assumed social and gender roles of its human subjects show that code is very much a product of the social biases of its human authors.
Much of the code illustrated in the book is code poetry or obfuscated code. These are double-coded programs, where source code that can be run by a computer is written and formatted to be not just understandable but evocative and meaningful to human readers as something read rather than run. As with the comments in the Windows and Diebold code, a criticism that might be levelled at such code is that such textual decoration does not affect the compiled (or executed) form of the code.
But comments and formatting are what Berry refers to as commentary code and delegated code in his grammar of code. It has been said that code is written primarily for human beings to read and only secondarily for computers to execute, and obfuscated or poetic code is regarded as high art by many programmers. It must exemplify some of code's salient features to them, and so it can be used to do so to a more general audience. And the cultural assumptions of code can survive from its source code into its execution and interface: witness the relief of many of Diaspora's users than "Gender" was a free-form text field rather than a simple binary choice of "Male" or "Female".
The final chapter on network streams provides a strong critical philosophy of social networking and other software that reduces human experience to a stream of software representations of events. After discussing what it means for a human being to be a "good stream", Husserl's idea of "comets" as a precedent for lifestreams and Lyotard's idea of the stream (both of which predate the streams of the Internet by many years), Berry presents the idea of Dark Streams as a way of resisting the demands of Web 2.0. I would single this out as the most timely and invigoration section of the book and a must-read for anyone involved in producing, consuming, or critiquing networked software culture.
What doesn't the book cover? There is no visual coding or livecoding. Berry explicitly avoids "screen essentialism", where the output of code is concentrated on to the exclusion of its production and execution, but despite following programs from their writing through compilation to first assembly code then machine language, running software and algorithms (at the micro level) are not considered, nor (at the macro level) are the architectures of applications or of operating systems. Nor is testing except in passing. But this fits with the emphasis of the book on code as text, and the framework that it provides can be extended to these topics. Hopefully by Berry.
"The Philosophy Of Software" is particularly inspiring as a spur to further research. Each page is brimming with references in the style of the academic papers that many of the chapters were first produced as and whilst this style can be distracting at first (compared with popular science books for example) it is ultimately rewarding and gives the reader any number of fascinating leads to follow up.
What is important about "The Philosophy Of Software" is that it really is about what it claims to be about. Rather than trying to shoehorn software into an existing philosophical or political agenda it considers software as a thing in itself and finds those philosophers and philosophical ideas that best address the vitally important phenomenon of software. However much philosophy, computer science or cybercultural theory you may know this is a book that will set you thinking about software anew.