The Four Simplicities By Edward Willis (http://encw.xyz) Published Jan/23/2023 I often talk about the need for simplicity in software. Recently Greg Gauthier, over on http://lunduke.locals.com, asked me to elaborate on what I mean by simplicity. Here follows what I am calling "The Four Simplicities". 1.) Simplicity of machine code: The smallest possible volume (and to an extent complexity) of machine code needed for a program. That includes all dependencies, not just libraries, but the entire software stack. If you choose to make your project for use in a modern, up-to-date browser for instance, you are requiring some 30+ million lines of code in order for your program to run, on top of what is required by the operating system, which will if it is any of the big 3 (Windows, MacOS, Linux) add another 20+ million lines of code, at least. In other words the project will strongly prefer native code, and less code. 2.) Simplicity of source code: The source code should be kept clear of long complicated lines and unnecessary complexity in its architecture. No need to be "clever"; keeping it simple is being cleverer. Prefer verbosity and readability. It should also be as minimal as can be, while remaining as simple to read and understand as possible. 3.) Simplicity of execution: Software should be statically linked, and contain all the code it needs to run. Using the software should be as simple has having a copy of it. 4.) Simplicity of use: The programs should be simple for the user, preferencing interactive use over commands when text based. A user shouldn't have to remember all the commands and options and the rest. Just the name of the program. I'm absolutely for commands with arguments and piping, my point is that if a user just types the name of the command, there should be some sort of interactive hand-holding experience. Most people aren't going to remember all those options and forms. People complain when they are forced to use the terminal because they don't want to remember this stuff. Why make them? If we could make the average user more comfortable in the terminal, we could perhaps obviate the need for some GUI systems, and therefore lower the complexity of that software. Perhaps some of my points are a bit glossed over and simple, but I think they are firm enough to give a decent understanding of my intent, and work as a starting point.