Sure we can remove every joke, every code comment that contains "FUCK", we can forbid commits that contain swear words, we can ask engineers to wear suits, we can remove animated GIFs from Slack and we can remove "418 I'm a teapot".
This kind of joke is what makes the job fun. You look at an implementation of an HTTP request and see "418 I'm a teapot", you smile for a second and keep working. That kind of fun contributes to happynness, increases psychological well-being and ends up contributing to long-term productivity.
In addition, removing the 418 code would break backwards compatibility. It will create way more problems than its availability does right now. This is the kind of thing you have to think about before-hand: add it and keep it, or don't add it. Now that we have a fun status code, we shouldn't add new ones. But removing the existing one is useless and damaging.
There are also many, many, many 4XX status codes which are free. Any of those could be used for that, why (possibly) break compatibility with previous frameworks when not necessary?
The teapot is essentially an early IoT device and creating extra statuses is extra work.
Just a minor change in "teapot code" without rewriting standards and software.
I find the initiatives like this to be kind of a waste of time. And some of the reasons are kind of contrived. For example:
> 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. [1]
First, you can remove it when there this problem actually happens. The backwards compatibility issue won't be any more/less of an issue then than now.
Second, "we may need this code point" is disingenuous unless the user is part of the W3C there is no "we" here. The node community can't decide unilaterally to change code points. (he might be part of W3C I didn't check. My sincere apologies if he is)
With that said, another part of the argument is valid. rfc2324 which defines the code is indeed not HTTP, it is HTCPCP (Hypertext Coffee Pot Control Protocol) and one could strongly argue that it doesn't belong in an HTTP library.
At the point in the distant future where you are worried about needing more HTTP error codes and considering reusing 418 it may just be easier to just add more digits to the protocol. In HTTP/1.x the status codes are plaintext and it's not like it would be that much of a change to most HTTP parsers. There's not really even a strong technical reason why they are three digit codes to begin with in plaintext HTTP, it's just an arbitrary choice.
The HTCPCP argument isn't all that valid as there are several recognized (IANA) HTTP codes [1] from HTTP extensions like HTCPCP. Note for instance all the ones from rfc4918 which is the WebDAV extension to HTTP, such as 424 and 507. Not all codes are from HTTP RFCs and I also think the "bug" here is that IANA has ignored rfc2324 for too long and should recognize the RFC as a valid HTTP extension with useful [2] HTTP status codes.
As a transgender woman who literally changed her name to include “teapot”, in part because of this status code, seeing this issue come up in the same week as the James Damore manifesto is a deep disappointment.
Why is it so hard for some technologists to have a basic level of respect for their colleagues? What motivates them to take actions that demonstrably harm their colleagues, whether it be asserting their biological inferiority or removing their trivial-but-meaningful whimsy?
When I was a closeted teenager, tech was a respite from the pointless cruelty of the rest of the world - or at least it felt that way. What happened?
So the solution then is to Adopt 418 as part of the HTTP standard, not remove it from projects to appease the kill joys that have no fun in their lives and lead sad crusades wanting to destroy to fun of others
All, thank you for the amusing and fun feedback. It pleases us all to no end that the most beloved feature of Node.js is a Teapot. I think it's safe for us to leave this as is for now.
I'm closing the issue and just to avoid keeping this issue from growing indefinitely for all of time, I'm going to lock it. Sleep in comfort tonight knowing that, at least for the foreseeable future, your Node.js web applications can proudly proclaim that they, too, are Teapots.
It doesn't look like Node really does anything with the status code except give it a message, so "removed from Node" doesn't mean anything since you could still return any integer you like.
But, a good reason to remove a joke is when people start taking it too seriously:
> 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.
"Why not? I'm bored and it's a fun little thing" is a good reason to add it. Vocal support from the masses is a good reason to remove it.
On the one hand you have a reasonable request, well-argued and politely-put by a respected engineer, who is long-standing contributor to the IETF and W3C. On the other hand you have a student who thinks 418 is fun.
Engineering is not a democracy. The technical merits of an argument are more important than how popular it is with arbitrary commenters on GitHub.
> Many voiced their refusals, they were also well-argued and politely put.
I read the comments on the node and requests issues and didn't see anything well-argued. Nothing said there refutes the substance of the request. Saying "but it doesn't do any harm" and then speculating about how the IETF should do things instead is not a coherent argument.
> On another note, isn't it important to have students think HTTP is fun?
>Engineering is not a democracy. The technical merits of an argument are more important than how popular it is with arbitrary commenters on GitHub.
The (frankly shallow) technical merit is that it gives us one less status code, in a problem space where if you really need that specific last status code so much that it's worth undoing a small piece of nearly 20 year old Internet culture to get it, the solution isn't to take that status code it's to switch the way you represent status codes entirely.
I would make some comparison to scrounging for IPv4 blocks instead of switching to IPv6, but the growth rate of computers on the Internet and HTTP status codes aren't really comparable.
Aristotle said: "what does not add, detracts." I firmly believe this; remove cruft wherever possible. Bloat is bad, and stands in the way of clean & elegant abstractions that can be built upon. Consequently, I think that removing HTTP 418 is good.
Yeah it's pretty humourless of them. It's not like supporting one extra status code remotely effects the performance or maintainability of any program.
Esp. since there are little dozens of codes free in the 400 block. How many have been added since the spec was first published? The problem he claims to be so worried about won't happen for decades.
Sure we can remove every joke, every code comment that contains "FUCK", we can forbid commits that contain swear words, we can ask engineers to wear suits, we can remove animated GIFs from Slack and we can remove "418 I'm a teapot".
This kind of joke is what makes the job fun. You look at an implementation of an HTTP request and see "418 I'm a teapot", you smile for a second and keep working. That kind of fun contributes to happynness, increases psychological well-being and ends up contributing to long-term productivity.
In addition, removing the 418 code would break backwards compatibility. It will create way more problems than its availability does right now. This is the kind of thing you have to think about before-hand: add it and keep it, or don't add it. Now that we have a fun status code, we shouldn't add new ones. But removing the existing one is useless and damaging.