On 5/7/2019 3:05 PM, Henning Schulzrinne wrote: > I think the problem is an interaction of poor programming and > inability to reach implementers (and then the consequences). For example, > > * Some major open source or big-company server implementation allows > lots of variation beyond the spec. > * Then, clients test against this implementation and declare "ready to > ship" when the bits flow without error messages. Programming is mostly > done based on examples and a casual reading of the spec. In text > protocols, spacing, line breaks, capitalization, ordering and other > variations are done by "feel" rather than ABNF. > * Since implementers usually have no good way to reach other > implementers (or assume a timely response or well-informed response), > they have to make expedient choices, making the problem worse over time. For an example of that, see the discussion on the IPv6 mailing list about sticking random bits in the link local prefix. The specs do not allow it, but the Linux implementation does. The experimenters tried on Linux and it worked, hence concluded that it was a fine extension to the standard... And then for a counter example, also related to IPv6. The IPv6 specs allows implementations to insert a variety of intermediate headers between the IPv6 header and the transport packet, but many router implementations just don't like that and slow down or drop packets if such intermediate routers are present. A case where the spec is arguably too permissive, or the implementations too strict. -- Christian Huitema