Left out

In creating a new definition for free network services, it may be worthwhile to note some requirements or expectations for "good software" that were left out of software and content definitions in the past. We may want to think twice about including these requirements in a free network services definition.


 * Free of charge : Free Software does not have to be available to users or redistributors free of charge.
 * Good behaviour : Free Software can do bad things. Viruses, spyware, and other malware can be Free Software. Software that does damage to the user's health, computer, data, or reputation can still be Free Software.
 * Good intentions : The intentions of the licensor are not part of any Free Software definition. Releasing Free Software in order to further some nefarious plan does not make the software any less Free. Very, very bad people can make Free Software.
 * Universality : Free Software does not have to run on every kind of computer, on every operating system, on every GUI desktop. It's OK to make niche Free Software.
 * Reliability : Free Software does not have to meet any requirements of reliability. It can work incorrectly; it can cause errors that stop the computer from working. Free Software doesn't even have to compile or run on the user's computer.
 * Architecture : Free Software can be a GUI or text-mode program with a direct user interface. It can be libraries of useful procedures. It can be a hardware driver or a network daemon. It can run in the background, run as a plugin to an existing piece of software, or run in an embedded system. It can be compiled or interpreted or run on a virtual machine.
 * Open data formats : Free Software can read and write data in any format whatsoever, and isn't required to meet any standards for data formats. It does not have to produce data that can be read or written by any other program. It does not have to have well-documented data formats.
 * Programming language : Free Software does not have to be written in any particular programming language. Free Software can be written in obscure or just plain bad programming languages. Some people put a practical limit on this, at the point where the programming language processor needed to run the program is not publicly available.
 * Code quality : Free Software does not have to meet any code quality standards. It doesn't have to have comments, be modular, be object-oriented, or be easy to read. Variables and functions can be badly named and magic values can be hard-coded. Many people put a practical limit on this, such that purposefully obfuscated code is not considered Free.
 * Documentation : Free Software can be undocumented, have poor documentation, or have documentation in only one language.
 * Open protocols : There's no requirement that Free Software comply with "open" protocols, like IETF RFCs, ISO standards, W3C standards, or any other formal standards.
 * Interact at all with other Free Software : Free Software is still Free even if it only runs on a proprietary operating system, proprietary desktop environment, or is written in a proprietary programming language.
 * Interact only with other Free Software : Free Software can run on a stack that has proprietary components. Free Software can have dependencies on proprietary software. It can link to libraries or use other interfaces to proprietary tools. It can be written in languages for which there is no Free compiler or interpreter.
 * Non-discriminatory : Free Software does not have to be accessible to everyone. It can have bad accessibility for people with disabilities; it can have documentation or a user interface that's not in every human language.
 * Security : Free Software doesn't have to be bug free, have a good security interface, or protect the user's privacy or confidentiality.