The Commandments Of Computing Everyone is a developer and an engineer. No one is "only" a user. Concessions in design must not be made to accomodate or encourage ignorance. A computer's operating system must be text-based. It is acceptable to have a GUI that sits on top of the CLI, but the basic operating system kernel must be text-based, and provide an option to boot into a pure CLI mode. Text modes do not require special graphics drivers to be loaded, and therefore greatly reduce driver overhead. (So-called "safe modes" which are graphical are inefficient and foolish.) All computer code must be open-source. Selling software for money is fine, but all source code must be included with the software. This applies to hardware, as well: All hardware products which include firmware ROMs must come with the complete firmware source code, and all electronic devices must come with complete circuit schematic diagrams. The documentation for any product must fully explain every command, feature, file, and component that the product consists of. Providing this information only in separate "developer kits" is not acceptable; everyone is a developer and an engineer. A user must be able to have fullly local control over their machine. Architectures which depend on remote connections like ASPs (Application Service Providers) or "thin clients" are wrong. Computer support techs must be familiar with all hardware and software. There are many hardware devices and software programs available for computers, and when certain combinations of these come together, virtually any conceivable conflict can be created. Therefore, all support techs must be familiar with all hardware and software available in the world (regardless of whether it is manufactured by their company or not), because otherwise their support is useless. Computer hardware should, when possible, be made such that it can be constructed to be easily openable and removable with bare human hands, without the use of any tools (including screwdrivers). When this is not done, valid and well-thought-out reasons must be provided (such as when creating the casing of a hard disk drive). A company must avoid using proprietary hardware or software protocols. The only exception is if no other standard exists, and the proprietary technology achieves something genuinely useful. If an existing open standard already exists, a company must not create a proprietary standard which does the same thing. In cases where proprietary technology is created due to lack of an existing open standard, the technology must be fully documented, with all applicable source code and diagrams shipped with the product, resulting in a new open standard.