A major part of providing a proper, real, standard is understanding the concept of "a separation of concerns".
A standard should be written within a certain scope of its purpose and not beyond that.
A standard should also be open-ended to allow for additions that do not result in altering or violating the standard.
For example, a specification involving a container format (such as a tar
) should only focus on "containing".
Having tar
support taking pictures with a camera would just be out of scope.
Additional functionality, such as adding encryption to tar
, should be written as a separate additional standard.
The specifications defined by the Featureless Linux Library provide an example of both completeness and open-endedness.
The FSS-0005 (Somewhat Basic List) standard provides the syntax on how to read and process text.
This text itself is not defined and there is no taxonomy on what the terms can be used.
This scope of the FSS-0005 (Somewhat Basic List) standard is that of the structure of text.
The open-endedness of the FSS-0005 (Somewhat Basic List) standard is that any taxonomy may be used because the standard does not define this.
The Featurless Make Fakefile standard is then able to take the FSS-0005 (Somewhat Basic List) standard and extend it by defining a taxonomy.
This results in a child standard that does not violate the parent standard.
Anything that supports reading the FSS-0005 (Somewhat Basic List) standard can read the Featurless Make Fakefile standard without every needing to know or understand the Featurless Make Fakefile standard.
A consistent, defined, and meaningful language is another major problem that a real standard must solve.
The multi-lingual situation of the world complicates this but providing definitions greatly helps.
The use of "buzz words" and other out of context uses of a word or phrase is a major problem in this regard.
Take the term "side-effect", for example.
A side effect is essentially an effect in addition to the original intended effect.
This term has been vastly misused in the software programming field to inappropriately refer to a function making changes to state outside of that function.
If a function's main effect is to change state outside of that functions scope, then the software programming field commonly wants to call this main effect, a "side-effect".
This nonsensical and moronic use of the term "side-effect" will lead to hard to follow and hard to understand standards.
Such incorrect use of language should be avoided, even if the incorrect usage is popularized.
The purpose of a standard is often ultimately communication, consistency, exchanging, interchanging, or storing.
Methods of exchanging or interchanging data is actually a form of communication when it comes to software technology.
All ends of the software communication must speak the same language, or standard, to be completely successful.
This means that there must be no restrictions on the ability to communicate and understand a standard.
Thinking that a single standard must be used is a mistake that commonly plagues our current day society.
There can be as many standards as possible so long as all ends of the communication speak the same language.
The situation does become more complicated when there are too many standards to select from, but this is a lesser problem when compared to mistake of the one standard to rule them all concept.
Building the standard to allow for free-form deviations will enhance the standards usability.
This especially means that real standards must be free and open.
A "Living Standard" makes it easy to not follow that standard while claiming that the standard is being followed.
The extent to which a standard is being followed should be clearly defined.
The word "web" is commonly ambiguously used for standards like HTML.
The usage of "web" does not clearly define what standard is being followed.
This results in people not having everything they need to make sound decisions on what to use and where.
This problem commonly plagues the Internet where many people blame the website developers, or owners, for problems caused by the software being used by the people who are complaining about some problem.
This situation is actually a problem where both parties are not following the same standard despite that standard having the same name.
The "web", after all, is not a standard.
This is a common misunderstanding or is, perhaps, false advertising via the abuse of "buzz words".
The use of "buzz words" is cultural problem and a standard cannot solve a cultural problem.
The people in the culture must solve the cultural problem.
By providing a clear definition of what the standard being followed is and to what extent it is being followed, then the user or the user's tools can make better decisions.
A real standard must not only be free to follow or deviate from, a real standard must be free to communicate and understand.