I like Andy Matuschak's use of the word "physics" to describe a set of rules in software tn his talk on the possibilities LLMs open up for programming. Two examples:
CodeMirror defines a rough physics of the medium: basic models for text, state, and selection, with transactional updates.
So, by way of generalizing from CodeMirror: could we define a physics of reading environments—one which could simultaneously support all these disparate augmented reading ideas, plus untold more yet to be invented?
You could also talk about those elements as constraints or primitives, but I like that "physics" suggests specifically the set of parts and mechanisms that make it function. The set of things essential to it doing whatever it is it does.
Stability
With the flexibility opened up by LLM code generation I've been thinking about ways to ground things.
Software that changes shapes and features all the time (even if in response to your requests) can be disruptive. Being completely unconstrained can be overwhelming.
Maybe there's inspiration we can take from the physical world, where building can also be pretty open-ended, to help build systems that are flexible but grounded. Forces described by physics: gravity, friction, constrain what can be built. They also describe the mechanisms by which those things operate. They limit and enable.
You can learn about the forces and then reason about them. You can think through machines in your head and then build and adjust. You can develop intuition about them.
The shared reality of physics means you can learn new techniques from looking at other machines (depending on how much of their functionality is exposed).
Digital physics
Maybe we can take lessons from the role physics plays in the physical world and apply them to the digital world. This could be by making our interfaces more tactile and tied to real-world manipulation. This is what I've been exploring lately.
I've also always been curious if we could promote the "physics" of how a computer works at a lower level. I think there are concepts, like caching and mapping memory, that do influence how programs are structured and could be interesting to foreground. But computers being designed to be general-purpose machines does make this kind of an uphill battle.
Either way, I'm enjoying framing the problem as what sort of "physics" to set up . What kind of physics could support adaptable programs and also give users a solid footing in using and evolving those programs?