cover

xCoAx - PhD Symposium

Communication

Purpose of the research and its importance to the field

The purpose of this research is to identify the role that aesthetics play in the writing and reading of source code. At first somewhat counter-intuitive -why should something ultimately understood by a machine as binary voltage current be deemed “beautiful” or “ugly”, “aesthetic” or not?- the fact that source code can have pleasing formal properties is almost universally acknowledged by programmers, digital artists and hobbyists alike. This implicity consensus about the possibility for code to be “beautiful” however falls short of providing identifiable and consistent formal aesthetic features specific to written source code. Taking the definition of aesthetics as a set of formal properties eliciting a sensory-emotional reaction in the creator and the beholder, this research project consists in looking at source code through the field of literary theory, by treating it as literary text, asking questions about form, authorship, readership, distribution and reception in the context of written scripts. The purpose of identifying the aesthetic properties of source code is to see to what extent these relate to, or differ from, the aesthetic properties of written language, and what is their relationship with the necessities of executing code. In particular, by looking at the tension between what is at the same time a machine-readable text and a human-readable text, I aim at highlighting the role that aesthetics play in both machine- and human-understandings of source code.

This research intends to open up new readings of source code, using the lens of aesthetics in order to better understand how code functions as a specific semantic apparatus. It intends to bypass approaches of code as a purely theoretical notion—”code” as a term encompassing, and thus erasing, the variety of programming languages that make up its reality—, or as an effective procedure—code as a compiled binary and executed software. This definition of source code as limited to written code thus excludes graphical programming languages, although it is possible that the conclusions of the current project could apply to those, as well as executed code, thus drawing influences from, but not directly contributing to, the field of electronic literature. Particularly, this research contributes to an approach of aesthetics as a functional component in the creation, understanding, and re-use of cognitive objects.

Overall, I intend to draw from two separate fields of research which address aesthetics in programming. The first starts with the literature on software development and software engineering as technical practice, as illustrated by the works of Djikstra, Knuth, Kernighan and others. Most of the publications in this field connects aesthetics, as well as the related fields of “art of computer programming” (knuth), “craft of programming” (Hunt), or “beautiful code” (Oram), to the reality of writing and reading understandable code—in a sense being concerned with “applied aesthetics”. If one of the greatest hurdles of programming is to be able to comprehend what a piece of software’s potential is, aesthetics is here presented as an essential step towards overcoming that hurdle.

A second field stems from media studies sotware studies. It starts from broad theoretical work establishing a definition of software as a socio-technical and cultural object (MacKenzie), towards close, deliberate readings of source code in more recent work (Montfort et. al., Paloque-Berges), complemented by an approach from the field of literary studies (Marino, Hayles). The object of source code is more and more the focus of researchers, particularly in terms of what code means, how it represents the world, and how it is represented in the world (Sondheim). However, little attention has been given to what kind of intrinsic formal aesthetic properties it could exhibit, or to what standards can source code be held to as an aesthetic object. More than regular source code -taken from, say, the Linux kernel-, some types of source code appear recurrently in these studies.

While dealing with the same object, the corpuses studied are clearly separated from one another. One the one side, there exists a well-established corpus of commented source code circulating in the professional field of software development. These include best practices, code demonstrations, commentaries and text books, ranging from Djikstra’s programming pearls to the commentary of the Unix version 6 source code. The intent of this research is to further improve the quality of the software made by industry practicioners. References to other fields (such as linguistics, literary studies, or cognitive psychology) are therefore rare but not completely absent (insert refs here). Most of the contributions of those texts is to establish concrete best practices when writing and reading source code, yet only accidentally linking it back to an aesthetic practice and literary concepts such as simplicity, clarity, and elegance. On the other side, the body of texts of self-defined source code poetry has been given close attention, but yet again mostly in terms of socio-cultural practices, and what they mean within the communities of programmers within which they were written and read. While often addressing the poetics of code (i.e. the world-making, storytelling potential of software), some of these refs) focus particularly on formal exercises such as Perl Poetry, the Obfuscated C Code Contest and well-known esoteric languages and investigate to what extent these writings could qualify as “code”. Within the realm of “artistic code”, Paloque-Berges’s work is closest when it comes to analyzing the specific forms that source code poetry takes, and what kinds of relationships those forms have with natural languages. For instance, she does so both by highlighting syntactical tokens that make Perl uniquely suited to this kind of endeavour, but also by providing larger theoretical frameworks, based on the idea of fiction (Goodman) and of practice (De Certeau).

The most relevant and interesting research today has been coming from the field of Critical Code Studies (CCS) and digital rhetoric. These link directly the syntactic and the semantic components of software: reading source code is essential to understanding what that code is intended to do. It is in this trajectory of code rhetoric that I place this research project, particularly in terms of untangling the relationship between specific formal manifestations and overall conceptual understanding. In that sense, I will be investigating this specific overlap by linking both the analysis of software as a technical practice as well as a socio-economical object.

Description of the proposed approach

The proposed methodology is threefold: empirical, theoretical and experimental. The basis of this research will be constituted of primary sources: source code available online, published in hobbyist magazines, commented in textbooks or published as artworks. The analysis of these texts, along with the discourses around those texts (comments, reviews, discussions) will help develop a heuristic to understand when and how the criteria of the beautiful, as well as the ugly, is summoned among communities of programmers. This corpus encompasses all ranges of project sizes, languages and periods, from the Apollo IX landing module procedure, to the snippets published in fanzines, or the examples shown in style guides, as well as the more obvious recent publications of source code poetry. The wide variety of texts integrated into the corpus will allow me to identify to what extent the aesthetic standards identified are context-free—i.e. which aspects vary between high-level languages and low-level languages? between professional and amateur codebases? between educational and artistic settings?

The second component of this process will be to examine the findings from the analysis of this corpus at the light of the somewhat more traditional concepts of literary theory and linguistics. Recurring concepts in programming discourses, such as clarity, will be further examined in the light of concepts such as authorship, reception, rhetorical figures, style, voice and layout, among others. This cross-disciplinary approach will establish a framework which takes into account both the appreciations intrinsic to the communities of practice of source code (e.g. software developers), as well as further highlight some unique aesthetic properties of code via literary methods of analysis. For instance, there could be an exploration of the concept of simplicity by comparing the programming paradigm DRY (Don’t Repeat Yourself) and Barthes’s writing degree zero, or a re-assessment of explicitness in the light of Mikhail Bakhtin’s dialogism.

Having sketched a conceptual framework for approaching source code as a text with potentially aesthetic manifestations, the last part of this research project will consist in confronting these conclusions with case studies. In line with the empirically starting point and the close-reading practice of CCS, I intend to examine three texts, ranging in variety in terms of source code quality (professional, amateur, artistic), in order to confirm or infirm, and in any case further elaborate on, the framework established in the previous phase.

Expected contributions

By working across disciplines, this research project intends to contribute both to software studies and to aesthetics. In terms of software studies, I aim at providing a formal account of the collective practices and judgments which constitute aesthetic standards in the practice of reading and writing programs, thus establishing to what extent these standards are contextual, to what extent they are general, and in general making explicit the “ambient knowledge” which exists within these communities of practice. Following De Certeau’s work on cultural studies and Sennett’s work on craftsmanship, I intend to show that the act of writing and reading beautiful code matters.

Showing that aesthetics matters would then lead to further qualification of the role of aesthetics as a functional one (telic, rather than autotelic), insofar as aesthetics can be judged by the extent to which, by making something understandable, they make something work. This research project therefore aims at supporting Goodman’s claim that aesthetics are a functional part of cognitive appreciation of objects and phenomena around us. By focusing on the relationships between the made (the object), the said (the language, programming or natural) and the thought (the concept) in the unique combination that software offers, I expect to contribute to a deeper understanding of the role of linguistics, as well as social contexts (as they are presupposed by linguistic activity) in the appreciation and judgment of aesthetic forms.


notes

feedback from reviewers

This is a very interesting research topic in the context of xCoAx. The proposal is well structured and supported by relevant references, and the work seems to be well organised and on track. As such, this is a good candidate for inclusion in xCoAx’s DS, even if the requested letter of support is missing.

The research intentions are clear and well described. I believe there’s a misunderstanding between aesthetics and beauty. Author states that the research is on “aesthetics of source code” and on “what makes source code beautiful”. Beauty is a rather subjective and refutable concept than aesthetics or aesthetic power. It also should be reinforced if the research is about source code in its descriptive dimension, in its functional—output, operative— dimension or in both. Is the author referring about source code in general, as an abstraction of all source codes, or is referring source code within particular languages? Are they high or low level? Written or graphical? The answer to this questions could help to understand how particular or general this research aims to be. I find the references biased by the amount of non programmers. The submission doesn’t elaborate about expected contributions or the progress towards the goals.

Although apparently in an initial stage of development, the topic of this proposal is interesting and seems worthy of investigation. The overall purpose of the research is defined, and the submission provides a preview of the methodology, even if it is still a bit vague in terms of structure and planning. There is also a certain lack of rigour, namely considering the sparse list of reference presented (a bit thin for the ambition of the study). This early stage of development may also justify the absence of a letter of support; an aspect that refrains me from giving this proposal a higher score.

In sum, greater care could be put into supporting the relevance of the study and sustaining the approach. Despite this, I believe this is a promising proposal worthy of discussion at the symposium.

conclusions

todo

  1. address feedback
  2. include more programming resources
  3. focus on expected contributions (…)

expectations from symposium

The presentation of this research at the xCoAx doctoral symposium could help me in different directions. First, I would be interested in discussing what is their own relationship to writing and reading code, and whether or not they have specific aesthetic standards they hold source code to, whether code they’ve written or code they’ve read, as well as code they’ve encountered that was hailed as being beautiful. While in-person discussions and qualitative interviews aren’t part of this research process, I envision a discussion to be particularly helpful at this stage of the project. Moreover, I see this symposium as an opportunity to discuss what are some of the beauty standards that a techno-semantic object like source code, can be held up to -whether it is about what it does, how it does it, for whom, on which medium, etc.

I would also aim to discuss the progress of my work so far. While I have been working in this field for several years, this is the first year of my doctoral work. Therefore, the stage at which my research is would be particularly prone to discussions around some of the following: which texts I should further include in my corpus, which theoretical approaches I might have overlooked, and which are some practical approaches which could further help illustrate the concepts developed in my writing. Furthermore, since I aim at having already fleshed out such concepts by the time of the symposium, I would be looking forward to getting feedback on some of the conceptual frameworks for approaching the aesthetics of code that I would have elaborated by that point.