Another reason for the huge success of Internet and its applications is the following Architectural Guideline:
“Avoid vertical integration of network functions as much as possible, since that would introduce dependencies (which suppliers might like to keep out competitors) and obstacles to further growth and changes”. Stay free to choose better components later and interchange parts of the structure without too much influence on the rest. During actual use the vertical components on different layers are connected.
When you drive a car the rubber of your tires meets the road. The road allows many different types of cars now and in the future. Only with a horizontally layered architecture, where the layers (grouped into levels) are agnostic of each other, is is possible to cope with sustained renewal of components with different timescales and lifecycles of innovations and improvements. For example making more lanes on the road has a quantitative effect on cars and other traffic, but you do not have to change car types. A example of such layered architecture is the Amsterdam/Singapore model for FTTX implementation in the respective cities:
This agnostic segmentation into layers can be compared to the introduction of transport containers, as far as I know 40 years ago. These containers made the mode of transport (railway trains, lorries, ships, airplanes) agnostic to the content of the container.
Another example is the Tillevison Model, developed by me, which is a template to design future proof communication- and ICT infrastructures: