On standards in communication
I think the way human children acquire the linguistic skills necessary to be able to point at things and address them is quite a remarkable feat. Even before their words are properly formed, children come to understand the concept of conversations and taking turns in communicating.
Very quickly, children are able to form the words necessary for another human to understand what it is they want. The language of their parents is adopted by the child as the standard language. Interaction with other people using different intonation or different words for the same object poses no problem for the child. It simply enhances rules of the acquired standard language to increase its flexibility. Sometimes, as children develop, they may use their own secret language with their siblings or friends – thereby defining their own standard language.
In fact, we all continue to develop our use of language over time – just as language itself evolves and develops. And we do this even without scientifically studying the nature of language acquisition or linguistics. Indeed, most of us spend very little time studying the grammatical rules of our native language.
The systems with which I work on a daily basis are fundamentally different.
Code a standard
For automation systems to communicate, they need to be programmed with interpretations of standards. We build automation systems to take over tasks to make our life easier. Typically, this involves taking in some data, processing or storing that data and providing some kind of output. Regardless of whether the system presents the data to a human user or to another system, automation systems need rules for the normalization and the interpretation of input data and rules for the presentation of output data.
Machines are very different to people. A human user has a high tolerance and flexibility for the interpretation of data. By contrast, an automation system requires data to be formatted and presented in exactly the way it has been defined if it is to succeed in the faultless operation and processing of the data.
It may sound logical for automation systems to agree upon the rules for exchanging information themselves to best suit the requirements of the information systems and the capabilities of each system. However, things don’t work this way yet.
Instead, rules are created for an automation system by one human user, based on their experience of language and conversation. These rules are written down in a standard language that is not necessarily the native language of this human user. Another human user – whose native language may not be the standard language in which the rules are written either – can then read and interpret the rules before programming these rules in another automation system. The ultimate hope is that different automation systems, programmed according to the same rules, can communicate and exchange information. Ambiguity however is quite common when writing and reading technical texts or standards. Potentially worse is information that should have been included, leading to readers creating their own definitions to fill the gaps.
Today, one can hardly write all the rules necessary to fully cover the information exchange between automation systems in a single standardized specification without referencing many other established standards as normative references. Take Modbus TCP, for example. The MODBUS MESSAGING ON TCP/IP IMPLEMENTATION GUIDE from the year 2006 is based on RFC 1122 from the year 1989. From here, a whole tree of further required references can be derived, including RFC 894 that needs RFC 791 and "The Ethernet – A Local Area Network", Version 1.0, Digital Equipment Corporation, Intel Corporation, Xerox Corporation, September 1980. This last standard, also known as DIX, later became Ethernet II. A version of it was adopted by the standardization organization IEEE and standardized as IEEE 802.3.
And still it works?!
Given this complexity, it is amazing how we expect to make use of hardware and an operating system and to implement a standard and for everything underneath it to simply work. Although it doesn’t always work out that way – even when working with long-established standards - we can encounter surprises and frustrations!
Consider the example of a communication that makes use of TCP/IP that sends TCP Keepalive messages when there is no communication and works flawlessly on Windows. During our porting work for Linux, we found that the very same implementation has its TCP connection terminated on Linux after sending a TCP Keepalive. Windows includes one octet of garbage data in the TCP Keepalive while Linux does not. This is the kind of situation in which a human user would be tolerant of different expectations and adapt accordingly. However, an automation system, which is programmed according to strict rules, cannot improvise. For the geeks among us, there is an interesting read with further details about this on page 101 of RFC 1122 in section 18.104.22.168.
Even with something as simple as applying the Modbus Application Protocol on TCP/IP, there is ambiguity in the specification that leads to interoperability issues between devices. These interoperability issues require configuration options that can make an implementation work one way or another. These options can lead to frustration with users when they don’t know which configuration should be used. Considering all this, it can seem like a small miracle when two systems communicate using standard Modbus TCP!
No “one size fits all”
In the standardization of information exchange between automation systems, there is no “one size fits all”. One may think that, once a standardized ruleset is defined for automation systems to communicate and this ruleset is found to work, it would make sense to apply this standardized ruleset to every automation system. Yet, in practice, the automation industry suffers from a huge proliferation of standards.
I think it is telling that today one can buy a mobile phone and use it to communicate almost anywhere on the planet. However, one cannot obtain an automation system and use it to communicate with any other automation system in any other industry in any other region of the planet. That’s because these standards are defined by standardization organizations, industry groups, other user and interest groups, and large individual vendors. Sometimes local preferences or political influences sneak in.
It is also worth considering that standardization is very rarely undertaken by a single person. Standards are reviewed or receive comments whenever others use them in an implementation. Standardization in the real world, especially on an international level, is a cooperative process involving different people from different backgrounds often with different native languages. They work together to define sets of rules to fulfill use cases limited to the scope of the standard. Cooperation is achieved by circulating drafts and holding meetings – whether online or face to face. Often, consensus can be reached on “how things should be” but hours can also be spent discussing the specific wording of a single paragraph. Subject matter experts can strongly disagree with each other on the finest details for all kinds of reasons ranging from single-mindedness, stubbornness, personal pride, their own hidden agendas, or to aid the strategies of the organizations that employ them.
Do AIs need standards?
As long ago as 2017, research and experiments demonstrated that artificial intelligence systems can develop their own communication languages. This opens up the fascinating future prospect of automation systems incorporating artificial intelligence from different regions in the world. How would they develop their standards for communication and information exchange?
Would systems learn and establish a single standard or come up with a multitude of standards to talk with each other? Would systems be able to reach consensus or would there be stubborn systems that simply refuse to do things any other way than their own? Would there be systems that become teachers? Would systems vote on standards amongst themselves according to democratic rules? Would there be systems that would be capable of recognizing the ultimate perfection in communication standardization? If so, would further evolution stop before it could go further and make things worse again? And, if so, what would this ultimate perfection look like?
I suspect that the chances are very high that it would not look anything like the communication standards that humankind has come up with thus far!