From: www.itworld.com

Close integrations of the third kind

by Sean McGrath

April 5, 2004 —

 

Have you noticed that technology is getting quieter as the years go by?
As fax machines and analog modems head to the technology scrap heap, it
seems that technology-induced sound effects are disappearing too.
Silence is rife on the modern desktop. Do you remember the telltale
chirping of analog modems and fax machines[1] or the ominous
Solresolesque[2] plainsong of a Winchester hard disk[3]? I feel a bout
of aural nostalgia coming on.

Call me weird (you would not be the first), but I find the noises
created by an analog modem whilst negotiating a protocol with another
analog modem, both useful and comforting. It is useful noise in the
sense that the sounds provide better feedback as to what is really going
on than any amount of multicolored dialog boxes ever can. You can tell
instantly, for example, if your modem is struggling to get a dialog
going with the other modem. You can even tell (with a bit of experience)
what speed you have made the connection at, based on when the
negotiation stops and the true conversation flow starts.

I find the noises comforting in the sense that they seem so, well, so
very *human*. Whether we are conscious of it or not, a communication
algorithm is built into each and every one of us and it dictates how we
talk to each other. It goes like this:

(a) negotiate a communication language,
(b) if successful
(b1) start a conversation using that language,
otherwise
(b2) retry (a) until exasperated.

For example, you meet someone you do not know in some foreign place. You
need to find the nearest train station. How do you proceed? You first
ask (assuming English speaker) "Excuse me. Do you speak English?". If
you get back "Yes." then the negotiation phase is over and you can
safely proceed to the conversation. If you get back "?", you need to try
another route and so negotiation continues.

Another example, but this time at a higher level of language
negotiation. You are setting up a new relationship with a parts
supplier. You get on the phone. You explain "We like to place orders
every six weeks and take delivery within three working days of the
order.". Your supplier says "We can work with that but would prefer
monthly orders. We can promise two working day turnaround time on
those.". You say "Okay. Let's go with that.".

In this example, the lower level language - English in this case - is
already established. The negotiation is happening at a higher level but
takes the same basic form. You and your supplier are engaged in the
negotiation of a business language in order to proceed real
"conversation" in the form of value exchange between the two
enterprises.

The language negotiation process is so natural to us that business
people in my experience, simply assume that computers must talk[4] to
each other the same way we do (i.e. by first negotiating a language and
then starting a conversation in that language). Unfortunately, this is
not generally the case.

As a thought experiment, imagine if Web Services were like analog modems
and made noises when starting conversations. What sort of noise would
you hear? In my mind's-ear, I hear silence, followed by a loud banging
noise, followed by silence, followed by a loud banging noise.

The bouts of silence in the Web Service conversations occur when,
through sheer effort and dollar expenditure, the conversation language
is perfect from the get-go and requires no negotiation. Invokers of my
web service know *exactly* how I talk and I in turn, know exactly how
they talk. In geek-speak, we share a common service API. The banging
noises in my mind's-ear are the result of mismatches between service
APIs and the failure to communicate that this creates. There are no
noises between the extremes of silence and loud bang because, with few
exceptions, negotiating complex service APIs is simply beyond state of
the art[5].

Today, it is science fiction and it is to science fiction that we now
turn for a glimpse of how future "science fact" might follow current
"science fiction". Do you remember the scene in the film "Close
Encounters of the Third Kind"[6] when man negotiates a language with the
aliens in order to communicate using sound? When I first saw this scene
I immediately thought "modem protocol negotiation"! In my mind's ear, I
hear Web Services of the future doing something similar, not exchanging
musical notes, but exchanging XML schema fragments and machine-readable
SLAs to and fro to negotiate a language in which to communicate.

Although this is quite far away I suspect, we are seeing some trends
towards a language-centric view of enterprise application integration
that augur well.

To pick just two examples. The Duck Typing approach[7] to data
understanding is closer to the way we humans understand language. Each
of us have a partial understanding of the complete language of English.
We do not need to understand every single word in a sentence in order to
extract and understanding of what the sentence is about.

Another example is the so-called "must ignore" versioning [8] paradigm
for web services and XML vocabularies that allows systems to be
developed now that will not break as business message languages evolve
as they inevitably do.

Perhaps the most important recent innovation in the field of language
negotiation is the Web itself. The web is based on the so-called REST
architectural style[9]. This style essentially moves language
negotiation further up the value chain by creating a common expression
language for the most common operations in application integration. The
common operations are retrieving things, creating new things, updating
things and deleting things (or GET, PUT, POST and DELETE respectively as
they are known in the HTTP application protocol).

This does not solve the general negotiation problem (which is probably
unsolvable short of artificial intelligence) but brilliantly raises the
integration watermark above which it becomes an issue, this
significantly reduces the amount of custom coding you need to do to get
a conversation going.

Maybe someday I will be able to tune into my Web Services and listen to
the ebb and flow of language negotiations once more.

I hope so because without it, I fear the most common noise in
integration will continue to be the sound of crisp dollar bills heading
towards the source of a strong flushing sound.

[1]
http://downloads.flashkit.com/soundfx/Communication/Modem/short_mo-Publi...
[2] http://www.langmaker.com/db/mdl_solresol.htm
[3] http://www.head-crash.org/sounds/headcrash.mp3
[4] http://www.propylon.com/news/ctoarticles/talk_030226.html
[5]
http://csdl.computer.org/comp/proceedings/hicss/2004/2056/01/205610033ba...
[6] http://www.esato.com/ringtones/polyphonic/index.php/c=Theme,id=10639
[7]
http://seanmcgrath.blogspot.com/2004_02_22_seanmcgrath_archive.html#1077...
[8] http://www.xml.com/pub/a/2003/12/03/versioning.html
[9] http://internet.conveyor.com/RESTwiki/moin.cgi/FrontPage