by Rohit Khare
Rationale In this document, we attempt to explain the rationale behind the extension mechanism, and its abstract properties. At the abstract level, we are addressing its suitability for extending any of the information-delivery protocols traditionally represented by UR*s.
Defintions An information service drawn from the family of tradtional transport protocols (*TP: FTP, SMTP, HTTP, NNTP, etc) handles naming, packaging, and processing of representations of information objects. Clients and servers communicate across a chain of such transport agents.
Modules correspond to well-known features. Modules may also correspond to executable functions that can transform representations.
Agents need to be able to negotiate about the existence of features, and to reprocess representations while indicating clearly what kinds of inverse processing will have to be invoked by counterparties.
Properties Agents need to reason about the following properties of modules:
In the context of e-mail, MIME defined many of these properties, but limited the degrees of freedom at several points:
In SMTP, common extensions to SMTP are keyed off of sendmail server versions and, as of RFC 1651, through named features. Such features as command pieplining and checkpoint/restart are always optional, and SMTP agents can only negotiate the presence/absence of features, with some parameters. There is no facility for one SMPT agent to direct another to reprocess message representations (uudecode, 7bit, etc). SMTP does reprocess addresses and routes, but that's totally site-dependent behavior, with insufficient inband information.
Given these abstract properties, we can realize them in several ways. One is the extension syntax being proposed for HTTP; it would apply to HTTP and any of the information transports commonly gated through it. Another is a generic RPC system that can test for the presence/absence of libraries/types, and an ASCII encoding format for the deferred calls.