Hacker News new | past | comments | ask | show | jobs | submit login
HTTP Error Code 418 I'm a Teapot is about to be removed from Node (save418.com)
103 points by tanu057 on Aug 11, 2017 | hide | past | favorite | 42 comments

Making everything dull won't benefit the field.

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.

418 can be reused as "i'm an IoT device without web interface"

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.

So sys admins all around the world will start receiving 418 teapot warnings from legacy systems

I suspect you might also enjoy this, which was also posted a while back: https://github.com/karolmajta/git-xd-hook

Don't worry there will be one thousand packages you can download to re-add it, some of them won't even contain exploits.

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.

[1] https://github.com/nodejs/node/issues/14644

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.

[1] https://www.iana.org/assignments/http-status-codes/http-stat...

[2] Usefulness is a subjective measure, of course, but usefulness in jokes/play is still usefulness.

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

The might require convincing the HTTP working group, chaired by one @mnot...

Looks like that's happened https://mnot.github.io/I-D/thanks-larry/

From: https://github.com/nodejs/node/issues/14644#issuecomment-321...

  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.

Error 420: Server confused and hungry

Twitter already uses that as `420 Enhance Your Calm`, which is thrown when you are being rate limited.

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.

Shouln't we fix the HTTP Working Group then?

I mean there are people behind it, with email addresses. Tell them 418 it is not actually USED, it just gets a different default message.

Sorry it's Friday - this cat would be out of a job: https://http.cat/418

Please no.

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.

Did you read the github issues? There were hundreds of people against it.

Many voiced their refusals, they were also well-argued and politely put.

On another note, isn't it important to have students think HTTP is fun?

> There were hundreds of people against it.

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?

Genuinely, it isn't.

>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.

Only about 1/3 of the available codes in 4xx is currently used, so there is still plenty of space left.

The technical merits of the argument are... "we'll have to number our new error code 419, and that's bad because reasons".

> because reasons

Consistency comes to mind as a pretty good reason.

There's already a number of gaps in the error code space, so consistency doesn't actually seem a good reason.

> Did you read the github issues? There were hundreds of people against it.

Every time github issue goes viral it ends with hundreds of useless comments full of animated gifs. That is not an argument for anything.

There is no HTTP 418 error code - it's not part of the HTTP spec - just a massive amount of confusion amongst people who believe it is

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.

Cruft is in the eye of the beholder.

Would you take away the interior, glass, electronics, some of the metalwork on your car, etc etc, just to have the most efficient vehicle possible?

Optimization is good, but you shouldn't push for it uber alles for generalized and multifaceted uses.

Aristotle said: "what does not add, detracts."

No, he didn't.

Yeah throw away all aesthetics. All the fun. Remove anything doesn't add.

And I think this is a non-healty way of thinking and should be cured.

Life is cruft.

What a masterful troll

So there is one individual who has made it their life's work to visit every project on Github to remove something that harmed noone and amused many?

Well he does other things too. Mark is the chair of the HTTP working group and contributes to the W3C.

Things like this are why committees and bureaucrats have a bad name.

He should find some time to explore activities that would cultivate a sense of humor.

Life is short and then we die. Stop taking little bits of fun away because reasons.

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.

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