To promote close reading of software within socio-historical contexts, CCS offers a set of reading practices to interpret specific aspects of the code. Below is an intial list of “what can be read.” (This list is hardly exclusive but meant more as a starting point for methodologies to be developed at greater length over the course of this blog and the writings related to CCS.)
The context of the software
- the coders
- years of the programming
- history of development and use
- funders
- research questions
- additional personal, testers, consultants
- programming language
- hardware
- paratexts (articles about the software)
The software itself
- procedures (how the code operates)
- the high-level structure
- Its programming
Individual lines of code can be read as:
- natural language affinities (run, execute, fire, print)
- whitespace
- clarity-obfuscation
- in-program commentary and documentation
Issues to be considered
- social implications of software
- world representations
- aesthetics
- impact on race, gender, ethnicity, sexuality, and socio-economic status
- oppositional practices: obfuscation (Mateas and Montfort), transcoding (Zach Blas)
- “values sensitive design” (Daniel Howe) or “critical design”
Tactics:
- Reading functionality against code (form-content)
- Comparing implementations in different languages
- Reading functionality against socio-historical context
- Reading code against output
- Reading “interpreted code” against content
- Reading instructions against data
And, of course, “against” here signifies in tandem with, intertwined with, in dialogue with.