It's about Growing Up

I have recently gotten a few letters from advocates for one of the many fine existing standards protesting that are already several fine protocols (in each domain) and all we have to do is wrap them in a “ web-service oriented API” and we are done. I think this is fundamentally wrong.

The established control protocols are too detailed. This makes them both too powerful to let into the open, and too difficult to use. An enterprise interface should not require its consumers to have extensive domain-specific knowledge about its inner workings.

Using them for enterprise interactions is far too much like planning an outing with small children. Say one wants to go to the lake:

OK kids, put on your shoes. Katy, where are your shoes. No, those are your Sunday shoes. Margot, you have to use shoes that match. Are your water shoes where you left them on the porch last week? (There’s that domain specific knowledge requirement!) Did anyone pack the sun-screen? Do not sit on the couch to put on sun screen. (Experience as a requestor and knowing, alas, where most of the sun screen will end up) Who put the dog in the car - -dogs are not allowed.

And so it goes.

Instead plan the same trip with some adult friends:

I’ll come by at 7:30 tomorrow. Can you bring the beer? See you then.

I am delighted that the lower level protocols exist. We will always need them to do what they do now. I just don’t want to be required to oversee someone else’s toddlers.

Interface for Enterprise systems need to be abstract, need to occult details, need to reveal surfaces only. Interfaces for internet-scale systems need to be abstract, support appropriate security, defend their mission, and focus on service rather than procedure.

I don’t hate children. I love playing with my own. I even love, for brief periods, playing with those of others. But when I want to get something done, I want to talk to grown-ups.