[sclug] sclug Digest, Vol 72, Issue 5

Jon Mann jon at spinis-associates.co.uk
Wed Sep 23 12:47:40 UTC 2009


> Anyone who's seriously interested in communicating their ideas should make
> every effort to make them as easily understood as possible.

Yes, when communicating a message we should make a reasonable effort
to be as clear and meaningful as possible. Equally, when receiving a
message we should make a reasonable effort to interpret and understand
the message. If everyone applied these principles more often (regardless
of communication medium, context, historical prejudices, etc.) then the
world might be a (slightly) better place.

Bringing this back on-topic, similar principles can be applied when
building robust software. Here is a snippet of RFC760 for the
Transmission Control Protocol (TCP) written in 1980:

  The implementation of a protocol must be robust. Each implementation
  must expect to interoperate with others created by different
  individuals. While the goal of this specification is to be explicit
  about the protocol there is the possibility of differing
  interpretations. In general, an implementation should be conservative
  in its sending behavior, and liberal in its receiving behavior. That
  is, it should be careful to send well-formed datagrams, but should
  accept any datagram that it can interpret (e.g., not object to
  technical errors where the meaning is still clear).

This has generalized into the Robustness Principle[1]:

  Be conservative in what you do; be liberal in what you accept from

In my experience this principle applies well to the smallest units of
software (e.g. methods or functions within a single program) up to the
largest units (e.g. systems communicating over a network).


 [1] http://en.wikipedia.org/wiki/Robustness_Principle

More information about the Sclug mailing list