Our approach has been to attack the syntactic side of this problem: we discussed it on several levels and proposed solutions which evolved from our experiences with MP.
At the lowest level, that of the protocol's primitive data objects (like numbers), a protocol should support encodings which are widely used and efficient to communicate. Further, the protocol should not fix a standard encoding for numeric data, but provide means to dynamically determine the most appropriate data encoding. In this way, costly conversions which would otherwise occur can be minimized.
At a higher level, dynamic type specifications, or prototypes, should be provided as a powerful mechanism for expressing structure and type information for commonly used mathematical objects. While our proposed prototypes are relatively simple, they provide great flexibility to model the structure of a collection of homogeneous data items. This approach provides complete syntactic and type information without noticeable loss of efficiency.
Finally, tools should be provided which simplify the interface programmer's task, both conceptually and in terms of implementation. (A protocol that is powerful, but difficult to grasp and/or to implement will have a short lifespan.) We address this problem by providing a flexible and efficient MP parser library which, in combination with the link and abstract device concepts, eases the implementation of MP interfaces. Although these features have not received lavished attention here, their importance should not be underestimated.
We do not expect that all the details of our solutions will stand the test of time. However, we are convinced that their principles lead us in the right directions and, together with enough stamina and cooperative weather, will enable us to reach our long-sought destination.