WYSIWYG is a Form of Naive Realism

  • this idea comes from the Boxer paper: "Boxer - A Reconstructible Computational Medium"
  • directly-manipulatable software (for example text editors) convince users that they act directly on the thing they see, but in reality there's a lot of weird hidden indirection
    • like Naive Realism, this worldview can fall apart easily! - you don't "directly" (what would that even mean?) edit text in Google Docs - you send operational transforms to some server where the data lives, and there are layers of indirection for computing the final state of your document, and they probably only render the part that you currently see, etc...
    • in short: you can't believe your own senses!

Naive realism is an extension of the "what you see is what you have" idea that has become commonplace in the design of text editors and spreadsheets, but not for programming languages. The point is that users should be able to pretend that what they see on the screen is their computational world in its entirety. For example, (1) any text that appears on the screen-whether typed by the system, entered by the user, or constructed by a program-can be moved, copied, modified, or (if it is program text) evaluated; (2) you can change the value of a variable simply by altering the contents of the variable box on the screen. If a program modifies the value of a variable, the contents of the box will be automatically updated on the screen. In general, there is no need to query the system to display its state, nor any need to invoke a state-change operation to affect the system indirectly.

— Boxer - A Reconstructible Computational Medium