I love the source being pulled from here and agree with the ideas. I would add that I think work by philosophers on conceptual engineering is definitely relevant to the project.
What I honestly don’t get is the conclusion. I don’t get why we would want to start talking about structures or patterns in code.
I consider codebases to be more like painting than literature, in that they are non-linear. They is no preferred reading point for a codebase. Main may not exist and just because there is an execution point, it does not mean there is a reading starting point.
When we examine paintings we do look at elements utilized, we can talk about style, but we also focus on the particulars of the painting. It’s historical situatedness. The artistic landscape in which it lives. We give a description of the painting not necessarily as it is, but as it appears under a certain interpretation. (Giving a description of the picture as it is would just be to list its “pixels”. We instead want to hear less precise words like energetic, placid, disturbing, etc. )
In the same vein finding the archetypes, structures, patterns, whatever you want to call them ignore this particularities of software. It ignores their historical moments. It ignores that we create programs not isolation but in response. That we choose structure not for their properties, but because of past failures with other structures.
We need analysis yes, but in order to do a history and critique. Software studies does fall quite short of this. There doesn’t seem to be people deeply embedded in our culture doing that work. Instead we get an outsiders perspective. What I would instead want to see is a deep analysis of code that reads out the implications of the structure. That looks at the beliefs of the authors. That sees the conflict as the code is produced. That followed the influences. That draws out theories. That show us the shortcomings of the path that we are on. That calls us to higher ideals.
We don’t need a guidebook. We don’t need a catalog. We don’t need anything that helps us code. We need something to help us reflect, something I believe we are in general as a culture quite bad at.