A Campfire Story
July 19, 2000
Imagine the scene... A warm summer night. We hear the crackling fire, see the children laughing, and smell the sweet marshmallows roasting. The grandfather is sitting near the campfire. His grandchildren, sitting next to him, are listening to his strange Internet stories from the 20th century.
"In my father's time, the 20th century, the web was simple--there were HTML browsers and that was it. That was the standard!"
"Only one standard?" echoes one of the children, completely astounded. Another plays a networked game on his portable game device. Between two moves on his shared battlefield, he asks his grandfather "Can you tell us a bit more about the crazy years at the beginning of the century, when people were inventing the connected world?" The other children say, "Yes grandfather, tell us your architecture story again."
You probably think that these children are some kind of nerds. No, these are normal 21st century kids living in the connected world.
"Near the end of the 20th century, the web was composed of servers acting as file servers, but interfacing to the world with a single protocol on all platforms. At the other end of the pipe, clients were rendering files containing HTML documents. We were no longer talking of Sun's NFS or Microsoft's SMBs, but of HTTP servers running on Sun, Apple, or Microsoft operating systems. All of a sudden, we got a single file service protocol for any platform. We also got a single format for electronic publishing.
"Then, some of us thought that an HTTP server would be a great tool to host applications. At first, we were talking of 'dynamic pages', then slowly, we began to talk of web applications. From simple file servers, HTTP servers evolved into more sophisticated application servers.
"Their new role was to host components. Components were aggregated in code units named 'scripts'. A very popular language of these times, named Java, consisted solely of components, since its scripts/templates (named JSP) and business objects were the same thing: classes.
"These were very simple components, responding to requests like 'GET' or 'POST'. These components interfaced with all kinds of data sources, performed some operation and then produced an HTML document. The client was still an HTML interpreter, but with more features, such as hosting other interpreters and providing more elaborate object models to scripts. On the server side, these web application servers provided sophisticated functions such as component load-balancing, failure recovery, transactions, and so on. A richer environment, likely to make a component happy.
"At the beginning of the century, during the crazy years, a huge amount of money was invested in 'dot-com' companies. A world in turmoil brought forth each day a new device, a new service, a new way to interact with the world. These were like the crazy years of the beginning of the 20th century, when new things and new ways to manufacture things created a mass market for cars, phones, airplanes and a plethora of artifacts, enough to make any anthropologist happy for a couple years."
Uncle Harry, the anthropologist, is smiling while munching his marshmallows. He has been studying why people in the 20th century were so busy wasting time in a funny ritual consisting of going to work in cars and getting jammed in traffic.
"What a strange century," thinks little John to himself, between moves in the virtual battlefield.
"At the dawn of the 21st century, people were busy constructing the noosphere: the connected world." The grandfather picks up another marshmallow and continues his story.
"During the crazy years, a bunch of crazy people," he says, smiling, "created a language named XML. This had a profound influence on the connected world. It was like inventing a new alphabet. Imagine, even if the languages stayed as diverse as before, they were written (or encoded as Uncle Harry likes to say) in a single alphabet.
"New rendering languages saw the light. Languages like the Wireless Markup Language (WML), a subset of HTML for the primitive wireless devices existing at the time." The children, laughing, are remembering the old movies showing those primitive devices, on which people were trying to type with their thumbs! Yes, crazy years, thought little John.
"Other languages emerged too, like VoiceXML. This evolved into the natural human interface we know today." The children acknowledge this, nodding their heads to show their approval. "So, VoiceXML was probably the first step leading to a natural form of interaction, as we have with other humans."
"But, in those crazy years, the voice servers were more primitive than today, and speech synthesis wasn't as natural as today. However, speech recognition made great progress. I still remember my father telling me how he was impressed the first time he used services like 'Tellme' or 'Bevocal'. He was really excited to listen to how a VoiceXML document he had made was interpreted by a vocal gateway, and how the interpreter recognized what he said and responded by linking to another document he wrote. Yes, he was still excited by that event many years after.
"This plethora of devices appearing at the beginning of the 21st century lead to a new generation of XML servers. Browsers were not the sole consumers any longer, other servers connected to request not documents structured with rendering languages, but services. For instance, I remember that my father told me that a mail server would reply to a request for the 'Inbox' content with an XML document structured in a format that my father called 'a model'. A model is a kind of abstract thing. It contains the data, the pure information. The model needed to be transformed into a different thing, a 'view', to be presented with a rendering language.
"Thus, some HTTP servers evolved so that the components no longer produced a rendering output such as WML or HTML, but a more abstract model. The components became service components. They responded to requests by producing documents structured with XML-based service document types, instead of documents structured with XML-based rendering document types. When the consumer was a 'user agent' (a device that interpreted the received document into something accessible to the senses), the HTTP server sent a document structured with a rendering language document type. When the consumer was another server, the document was structured with a service language document type. Both kinds of languages were still based on the XML meta-language (i.e., the common alphabet). After all, XML wasn't a language, it was more a set of rules used to create languages.
"My father told me that, in some environments, the server components produced service documents, and when the requester was a user agent, these documents where further transformed into a rendering format with a transformation language named XSLT. When the requester was another server, the document was simply sent as-is. The new power brought by the evolution of the computer was sufficient to allow this new processing step. Even if it meant more processing to do, this was compensated for by the computer industry following 'Moore's law' and producing computers that were faster and faster.
"In the first quarter of the century..."
"Didier wake up! We have to pack the tent and get on the road if we want to be at the other campground before nightfall!"
In a fraction of a second I am back in this last year of the 20th century. If only Edith had allowed me to sleep a bit longer, I would have known what happened in the first quarter of the 21st century. Anyway, I have to prepare my bike for the 120 miles we have to do today. But, as I pack my bags, I am still thinking about the grandfather sitting near the campfire and telling his web stories to the children. It was fun to be in year 2100 for a moment and to look back at year 2001. Maybe not Stanley Kubrick's "2001 - A Space Odyssey," but more a modest "Didier's Dream Odyssey." See you after my bike ride....