Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Is this in reference to something? Judging from the comments, NUL bytes in shell scripts are a common occurrence that everybody is celebrating this change as if it were ground breaking.

I mean, it's a good idea, but I wonder what am I missing here. Also what do they mean by post-Postel?



Early spec of TCP had a section on the robustness principle that was generally known as Postel's law (https://datatracker.ietf.org/doc/html/rfc761#section-2.10). At the time and until recently this was considered good design. Nowadays people generally want servers to be stricter in what they accept since decades of experience dealing with diverging interpretations of a specification create problems for interoperability.


"until recently"? More than 10 years just going by HN. https://news.ycombinator.com/item?id=5161214

I think HTML showed the problem with Postel's principle. Quoting "Postel’s Law is not for you" at http://trevorjim.com/postels-law-is-not-for-you/ from 2011

> The next version of HTML, HTML5, should considerably reduce the problem of browser incompatibilities. It does this, in part, by rejecting Postel’s Law for browser implementors. Instead of allowing browsers to be liberal when dealing with “flawed” markup, HTML5 requires them to parse it exactly as in the HTML5 specification, and that specification is given much more precisely than before, in the form of a deterministic state machine, in fact. HTML5 is trying to give implementors no leeway at all in this, in the name of browser compatibility.


> "until recently"? More than 10 years just going by HN.

The TCP protocol is from the 1970s (according to Wikipedia, it's from 1974, which is 50 years ago). Something which only happened 10 years ago is recent.


The robustness principle dates to RFC 761 from January 1980, not 1974, making it only 44 years ago. https://www.rfc-editor.org/rfc/rfc761#section-2.10

The citations I gave you were ones I knew existed. I know there was criticism in the early 2000s because we were debating it back then, but I don't have those citations handy.

Checking now, the Wikipedia entries points to criticism in RFC 3117, from 2001, at https://datatracker.ietf.org/doc/html/rfc3117 :

> Counter-intuitively, Postel's robustness principle ("be conservative in what you send, liberal in what you accept") often leads to deployment problems.

That's why I knew to question was 'until recently' was supposed to me.


Your quotes are actually reinforcing and not detracting from the point I was trying to make. Because it is a question of tradeoffs, for some people the robustness principle could be argued against right from the start. Lots of strict protocols existed at the time (CER and DER rules for ASN.1 for example) even if people preferred forgiving protocols (BER seems to have been more popular). Yes, people were explaining the tradeoffs and why it might make sense to prefer strictness, I am sure you can find earlier quotes. The authors might not feel the need to make these arguments if public sentiment was widely aligned.

The person I was responding to (who sadly was downvoted), seems to have a sort of nascent appreciation for the robustness principle. They seem to be suggesting that the prevalence of null bytes in scripts is an argument to preserve support. To me this is an illustration of the fact that public opinion is still not universally against the robustness principle (indeed some, possibly that poster who never heard it as Postel's law or it didn't click for, may not be aware of it) even if in general I would argue that the majority of people with an opinion would be against it.

But a couple of dates and quotes cannot settle that question, nor can my feelings on the matter. I could be very wrong, the majority of opinion on the matter could still be pro-postel.


I really just want to know the time frame you where thinking of when you wrote "until recently this was considered good design."

I would also like to what you think changed that general consideration.


Postel’s Law, also known as the Robustness Principle:

> be conservative in what you do, be liberal in what you accept from others

It’s intended as a way to maximise compatibility, and people have generally followed it when designing protocols and file formats. However it’s led to many security vulnerabilities and has caused a lot of compatibility problems itself. These days a lot of people are realising that it’s more harmful than helpful.





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: