Design By Contract

This relates to the way the message definition language is used in ROS. It defines data types, not node interfaces. Contracts are much more likely to be specific to node interfaces than to the messages, which are intended to be generic and highly reusable. Because ROS doesn’t currently have a node interface definition language, there is not yet a suitable place to specify contracts.

Furthermore, some contracts may be specific to a particular implementation of a node, and so wouldn’t fit in a node interface specification intended to be reused by many different implementations (although then I would argue that the nodes with different contracts should not be considered interchangeable and so should be using different interfaces).