The simple answer is, they did not. They delivered exactly what they were supposed to. They defined a platform independent framework that technically allow any two software to invoke methods on each other and exchange data based on a common definition. It was the expectations that were unreasonable.

The industry expected that creating a platform independent structuring infrastructure could solve the communication problem by allowing the definition of common types. But the desire to do so was not taken into consideration. The wide acceptance of these common definitions were impossible because there is no such thing as common definition. There only is a common framework to create these definitions and these frameworks suffers from the same problem as the type system in each individual programming language: the lack of computational semantics.

Being able to define data in a platform independent manner does not magically transform data into information. It does allow the transfer of data over the Internet as opposed to having it locally but beyond that, putting it into context, interpreting it, was still the job of the operator. No steps have been made towards the preservation of meaning during the encoding process, meaning which could potentially be transferred together with the data.

All these type systems concentrate on standardizing the way information is represented, not what information is. The primitive (most basic elements) are very basic representation systems that can partially encode various computer primitive concepts like integer or boolean onto machine language. This is essential, because ultimately information does need to be encoded, but not sufficient. The system jumps from these primitives directly to structures, the elements of which are either structures themselves or primitives. There are no intermediary types, primitives that can also carry some meaning, not only representation. If a member of a structure is a “string” that structure cannot be standardized, because a string can be anything, and anything is just not standard in terms of computational potential. As such, an application cannot test on its own, or more precisely, one cannot build an application that can test in an automated manner what an input or output parameter is.

example: 20 might have seen a little misplaced, because hotel accommodation search and booking is one of the very few niches that managed to standardize its communication. This however, is not because seamless communication exists, but because of an arduous and very difficult standardization campaign. All hotels that conform to the standard must implement rigorous proprietary middlemen APIs that can make the connection between booking, hotel and the browser. If a hotel wants or needs to conform to more than one middlemen (in order to reach more clients) the developers of the hotel’s application need to implement all APIs. There is no UDDI like system and even if it were it is still the developer’s mind, that needs to read the documentation, see the types, make the connection, and implement information exchange. There is no information in the applications, the information is only with the developer or hotel personnel or consumer.

This lack of common semantics, the rigidity of the data model and the subjective perspectives of many different groups of businesses resulted in the creation of many disparate type hierarchies that are essentially incompatible outside groups. If a concept / a property is added to a structure the entire structure needs to be changed leading to continuous redefinition of the types and impossibility to having a stable basis for communication. Changing these types means that types need to be backward compatible, somebody needs to maintain a record of the types and their versions and at the same time enforce their proper usage. Because such things are impractical, applications, usually sooner rather than later, need to be updated to using the latest types or they become outdated and incompatible with the rest of the applications in the market, leading to the breakdown of the communication system.

The inflexibility of this holistic model is a major impediment in the domain of communication, at information level, within software applications. The massive amount of work that needs to be continuously invested means not only extra cost in development, but also a lot of superficial implementation, countless bugs, incompatibilities and major security vulnerabilities.