A truly successful standard meets two simple (hah) but hard to meet (oh yeah) criteria:
- It truly solves one and only one problem. It's not a partial solution. It's not a solution to more than one problem. It's not ambitious.
- The people who have that problem can recognize that this standard solves the problem. This may involve explanation, education, etc., but once they understand the standard they agree that it solves their problem.
Going back to my three examples of big successes, you see how these apply:
The problem solved was a need for a programming language for scientific programming. Fortran did not include all the libraries. It did not care about the operating system. It did not care about the user interfaces. It did not care about the hardware. It was just a programming language. It solved just that one problem. As a result of not attempting to solve all the other important problems involving computers of that period, it was able to be used on every computer (almost). It was able to keep being useful for decades. By solving one and only one problem, it was able to become universal and long lived.
The scientific programmers needed to learn Fortran, but once it was learned, they sold it to all their friends. It was immediately recognized as a solution to their problem.
Each of the ethernet standards solved the problem of moving packets from point A to point B, subject to some physical limits. The standards did not care what protocols were used. The standards did not care what the purpose was. The standards did not care what kind of computer was involved. They solved one and only one problem. The different ethernet standards differed in solving slightly different physical and electrical problems:
- 10base5, the first ethernet cabling. But the cable and connector were really inconvenient to install and maintain.
- 10base2, at least this switched to readily available cable and BNC connectors.
- 10baseT, finally some easy to use cables and RJ45 connectors.
- 100baseT, runs 10 times faster
- 1000baseT, runs 10 times faster still
The users immediately understand how to use ethernet. It basically sells itself technologically.
Again, TCP/IP solved only the problem of reliably moving bits from port A to port B. It did not worry about underlying network hardware. It did not worry about finding port numbers. It did not care what kind of data it carried. It did only one job, and it did that job well. Later, other standards, like DNS evolved to replace the manually maintained hosts files, ports files, etc. TCP/IP didn't care and kept on working. So it truly solved one and only one problem.
The programmers immediately recognized the usefulness of this solution. Despite the US government spending about $10 billion trying to kill it *cough* GOSIP *cough*, and Europe spending more billions trying to kill it, the users understood that it solved their problem. TCP/IP sold itself despite legal prohibitions. (Kind of like an illegal drug :-))
The first thing that people looking into successful standards notice is that they are basically plug and play. You just use them.
The real reason for this is that successful standards are humble. They don't try to do two things. They do one thing, only one thing, but they do that one thing completely.
Then, based on doing that one thing successfully, they can pass the test of being recognized by users as solving that problem.