Join GitHub today
GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
Already on GitHub? Sign in to your account
418 I'm A Teapot #14644
Comments
"implementation" is defined loosely in this case given that Node.js doesn't do anything with it other than assign the default status message if it's used. We could deprecate the Teapot status message and easily reassign it later as a semver major. In the http2 implementation I can make sure it's not assigned a constant yet. |
It looks like 418 is technically not registered with the IANA. FWIW it seems Go supports 418 as well. Not sure about support anywhere else though. A removal would be semver-major. I'm not sure we would want to add the overhead of checking explicitly for 418 to do a runtime deprecation. |
mscdex
added feature request http
labels
Aug 6, 2017
Yeah, I'm thinking docs only deprecation in 9.x and EOL in 10.x |
WFM, thanks. I'll chase Go. |
mnot
referenced this issue
in golang/go
Aug 6, 2017
Open
net/http: remove support for status code 418 I'm a Teapot #21326
Fishrock123
removed the
feature request
label
Aug 8, 2017
I'm not sure this is really requesting a feature, per-se. I am largely indifferent, if we can do the change and people want it, sure? |
jasnell
added a commit
to jasnell/node
that referenced
this issue
Aug 8, 2017
jasnell |
0b66cec
|
birjolaxew
commented
Aug 10, 2017
Is there a reason for removing this now? It's a fun bit of trivia that adds flavor without harming anyone - it would be trivial to remove should an actual error 418 be added to HTTP (or should enough errors be added that it starts running out of numbers). |
Yes. Given that changing it would require a full semver-major deprecation style, beginning the process of deprecating this now allows us to adopt any future real 418 status code much faster later on. We are already committed to keeping the |
Please note that the suggested change here is not going to stop anybody from using 418 with HTCPCP semantics if they want to, it’s just going to remove Node’s default support for it. |
alexdresko
commented
Aug 10, 2017
Surprised it isn't posted here already, but... http://save418.com/ I'm just a bystander, but that's some pretty strong opposition. :) |
birjolaxew
commented
Aug 10, 2017
•
@addaleax A joke isn't much fun if you tell it to yourself; removing 418 from Node won't stop me from implementing it myself, but it will remove a fun and quirky easter egg to stumble upon - which is what everyone is lamenting. |
tyteen4a03
commented
Aug 10, 2017
•
And are there currently proposals that would mean 418 will have a legitimate purpose? I realise that in the far, far future we may need to use this code, but removing a widely-known 20-year old easter egg just for the sake of cleanliness seems a bit unnecessary to me. |
WhataShane
commented
Aug 10, 2017
I'm the guy behind http://save418.com (https://github.com/WhataShane/save418). I, like many others, enjoy stumbling upon (almost entirely) innocuous gags like 418. It's the sort of thing that'll put a smile on your face even when you're pressed to meet a project deadline and your boss is yapping at you one office over. It'd be a real shame to see it go. To quote @romellem from the Go thread, who quite eloquently sums up the argument for 418:
|
Yes. There is a proposal for a new 4xx status code being discussed. Since 418 is not officially registered, it (in theory) should be used for the new code, but doesn't necessarily have to be... It's just not something that is up to us at all. |
tyteen4a03
commented
Aug 10, 2017
The thread is here if anybody is interested. |
As someone who was involved in implementing rfc2549 for the IDF (NOT!), I'm +1 on precluding 418 from HTTP, hence IMHO it should stay in |
@refack - IANA doesn't register it, and the IETF doesn't recognise it (the defining RFC is a joke RFC). So are you saying you support removing it, or not? confused |
maxh213
commented
Aug 10, 2017
As mentioned, there are still over 50 HTTP codes left in the 400 range, I do doubt this will be a problem any time in the near future. Please do not kill fun things for such a small reason, remember that we are not computers ourselves. |
@max213 As explained, this will be a problem in the future -- if HTTP lasts as long as we hope about it. Fixing it then will be MUCH harder than fixing it now (see the resistance we're already encountering and magnify it considerably). HTTP status codes are defined by the IANA registry. If we have implementations claiming status codes outside of it, it's bad; node is NOT implementing HTTP here. Please respect the protocol. |
I'm saying until it is registered for anything else IMHO is should stay. P.S. I live next to a bridge whose length is "364.4 SMOOTS + 1 EAR" and it leads to the W3C offices. P.P.S. Being the only person who is also a unit of length, Smooth grow up to be the chairman of ANSI and later the president of ISO. |
The problem is that its inclusion in implementations like Node is being used to argue against the code being used for other (real) purposes. |
WhataShane
commented
Aug 10, 2017
Even if if it is, there are 50+ other vacant spots that are already open. Why does 418 have to be replaced with a "real" error code when we're nowhere near filling all the other 4XXs up? |
I get that... But, well, the internet is a big ball of mud (Except of the amazing work done by the IETF) see https://bz.apache.org/bugzilla/show_bug.cgi?id=61383 I only represent myself, and won't block if there's momentum to deprecate 418 |
maxh213
commented
Aug 10, 2017
@mnot I don't understand why this is an issue. If there is ever a sudden influx of new HTTP status codes then honestly you can just put another 0 on the end and we can have 1000 status codes. Also you're assuming HTTP 3 will still use status codes, it could use hash codes or tuples or anything honestly. This is an issue that is so far in the future it's not worth acting on because we don't know what the landscape will be like. Also 418 has uses in real production applications, see https://developer.amazon.com/dash-replenishment-service for an example. |
birjolaxew
commented
Aug 10, 2017
Its adoption by the HTTP community at large is used to argue against it being used for other purposes? That seems fair enough to me - I would imagine that is roughly how any other code would be accepted into the protocol if it didn't originate there (e.g. nginx's 444). It would probably be preferable to argue for its inclusion in the protocol, but given its nature I think it is reasonable to simply avoid using its code before necesarry. |
mnot commentedAug 6, 2017
Node implements the
418 I'm a Teapot
status code in a few places.Its source is RFC2324, Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0). Note the title -
HTCPCP/1.0
is notHTTP/1.x
.HTCPCP was an April 1 joke by Larry to illustrate how people were abusing HTTP in various ways. Ironically, it's not being used to abuse HTTP itself -- people are implementing parts of HTCPCP in their HTTP stacks.
In particular, Node's support for the HTCPCP
418 I'm a Teapot
status code has been used as an argument in the HTTP Working Group to preclude use of 418 in HTTP for real-world purposes.While we have a number of spare 4xx HTTP status codes that are unregistered now, the semantics of HTTP are something that (hopefully) are going to last for a long time, so one day we may need this code point.
Please consider removing support for 418 from Node, since it's not a HTTP status code (even by its own definition). I know it's amusing, I know that a few people have knocked up implementations for fun, but it shouldn't pollute the core protocol; folks can extend Node easily enough if they want to play with non-standard semantics.
Thanks,
/cc @domenic @jasnell