Although protocols implementation involves several levels, from simple error correction to content encoding, I’ve always thought that the most difficult part is the development of the right negotiation mechanisms. This is generally an abstract level in the protocol where we take the hardest decisions when designing the system architecture. To choose the wrong design patterns [...]


