Look at HTTP. How many implementations correctly and interoperably handle line folding? Comments in headers? Different line endings? Stick to a small subset and you're fine. Actually use the spec as written and it is hopeless. These crazy semi-freeform text protocols are a curse. They do not make implementation easier. They trick people into thinking they made it easier.
A physical world example is USB Type C: you may have a high-speed Thunderbolt drive and a high-speed Thunderbolt computer, but you may unwittingly use a cable that doesn’t support that (though it may even support some other high-speed protocol) so the whole apparatus will silently fall back to a very slow rate without informing the user. No problem for you and me, but possibly a problem for some unfortunate user.<p>Since none of the cables or ports are visibly labeled with their capabilities you have to know what you’re doing.
I know the FOSS FreeSWITCH VoIP b2bua has a TON of "hacks" to "Be liberal in what you accept" which is a mess of things to support, to clean up after the commercial entities that don't follow SIP specs.<p>e.g. SONUS information: <a href="https://freeswitch.org/confluence/display/FREESWITCH/RTP+Issues" rel="nofollow">https://freeswitch.org/confluence/display/FREESWITCH/RTP+Iss...</a>