Hyper Text Coffee Pot Control Protocol: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.2
That teapot implements the original Hyper Text Coffee Pot Control Protocol, which says teapots should return 418; it does not use the extended protocol for Tea Efflux Appliances
(26 intermediate revisions by 21 users not shown)
Line 4: Line 4:
| image = Htcpcp teapot.jpg
| image = Htcpcp teapot.jpg
| alt =
| alt =
| caption = [[Frontend and backend|Back-end infrastructure]] of error418.net, which implements HTCPCP
| caption = [[Frontend and backend|Back-end]] infrastructure of error418.net, which implements HTCPCP using a [[teapot]] and [[Raspberry Pi]]
| standard = [[Internet Engineering Task Force]]
| standard = [[Internet Engineering Task Force]]
| developer = [[Larry Masinter]]
| developer = [[Larry Masinter]]
Line 15: Line 15:
| website = [https://datatracker.ietf.org/doc/html/rfc2324 rfc2324]
| website = [https://datatracker.ietf.org/doc/html/rfc2324 rfc2324]
}}
}}
[[File:HTCPCP Pot.jpg|thumb|Working teapot implementing HTCPCP-TEA<ref name=JR />]]
[[File:HTCPCP Pot.jpg|thumb|Working teapot implementing HTCPCP<ref name=JR />]]
The '''Hyper Text Coffee Pot Control Protocol''' ('''HTCPCP''') is a facetious [[communication protocol]] for controlling, monitoring, and diagnosing [[coffee pot]]s. It is specified in {{IETF RFC|2324}}, published on 1 April 1998 as an [[April Fools' Day Request for Comments|April Fools' Day RFC]],<ref>{{Citation | url = http://tools.ietf.org/html/rfc2324 | title = Network Working Group | contribution = Request for Comments 2324 | publisher = [[Internet Engineering Task Force|IETF]] | access-date = 2012-03-20 | archive-date = 2012-04-04 | archive-url = https://web.archive.org/web/20120404141825/http://tools.ietf.org/html/rfc2324 | url-status = live }}</ref> as part of an [[April Fools' Day Request for Comments|April Fools prank]].<ref>{{Cite book |last=DeNardis |first=Laura |url={{google books|plainurl=yes|id=Secqz0XQJIsC|pg=PA27}} |title=Protocol Politics: The Globalization of Internet Governance |date=30 September 2009 |publisher=MIT Press |isbn=978-0-262-04257-4 |pages=27ff |access-date=8 May 2012}}</ref> An extension, HTCPCP-TEA, was published as RFC 7168 on 1 April 2014<ref name=rfc7168>{{Citation | url = https://tools.ietf.org/html/rfc7168 | title = The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances (HTCPCP-TEA) | date = April 2014 | contribution = Request for Comments 7168 | publisher = [[Internet Engineering Task Force|IETF]] | access-date = 2014-04-22 | archive-date = 2014-05-29 | archive-url = https://web.archive.org/web/20140529225719/http://tools.ietf.org/html/rfc7168 | url-status = live | last1 = Nazar | first1 = Imran }}</ref> to support brewing teas, which is also an April Fools' Day RFC.
The '''Hyper Text Coffee Pot Control Protocol''' ('''HTCPCP''') is a facetious [[communication protocol]] for controlling, monitoring, and diagnosing [[coffee pot]]s. It is specified in {{IETF RFC|2324}}, published on 1 April 1998 as an [[April Fools' Day Request for Comments|April Fools' Day RFC]],<ref>{{Citation | url = http://tools.ietf.org/html/rfc2324 | title = Network Working Group | date = April 1998 | contribution = Request for Comments 2324 | publisher = [[Internet Engineering Task Force|IETF]] | access-date = 2012-03-20 | archive-date = 2012-04-04 | archive-url = https://web.archive.org/web/20120404141825/http://tools.ietf.org/html/rfc2324 | url-status = live | last1 = Masinter | first1 = Larry M. }}</ref> as part of an [[April Fools' Day|April Fools prank]].<ref>{{Cite book |last=DeNardis |first=Laura |url={{google books|plainurl=yes|id=Secqz0XQJIsC|pg=PA27}} |title=Protocol Politics: The Globalization of Internet Governance |date=30 September 2009 |publisher=MIT Press |isbn=978-0-262-04257-4 |pages=27ff |access-date=8 May 2012}}</ref> An extension, HTCPCP-TEA, was published as RFC 7168 on 1 April 2014<ref name=rfc7168>{{Citation | url = https://tools.ietf.org/html/rfc7168 | title = The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances (HTCPCP-TEA) | date = April 2014 | contribution = Request for Comments 7168 | publisher = [[Internet Engineering Task Force|IETF]] | access-date = 2014-04-22 | archive-date = 2014-05-29 | archive-url = https://web.archive.org/web/20140529225719/http://tools.ietf.org/html/rfc7168 | url-status = live | last1 = Nazar | first1 = Imran }}</ref> to support brewing teas, which is also an April Fools' Day RFC.


==Protocol==
==Protocol==
RFC 2324 was written by [[Larry Masinter]], who describes it as a satire, saying "This has a serious purpose &ndash; it identifies many of the ways in which [[HTTP]] has been extended inappropriately."<ref>{{Cite web |last=Masinter |first=Larry |author-link=Larry Masinter |title=IETF RFCs |url=http://larry.masinter.net |url-status=dead |archive-url=https://web.archive.org/web/20130327202242/http://larry.masinter.net/ |archive-date=2013-03-27}}</ref> The wording of the protocol made it clear that it was not entirely serious; for example, it notes that "there is a strong, dark, rich requirement for a protocol designed [[espresso]]ly {{Sic}} for the brewing of coffee".
RFC 2324 was written by [[Larry Masinter]], who describes it as a satire, saying "This has a serious purpose &ndash; it identifies many of the ways in which [[HTTP]] has been extended inappropriately."<ref>{{Cite web |last=Masinter |first=Larry |author-link=Larry Masinter |title=IETF RFCs |url=http://larry.masinter.net |url-status=dead |archive-url=https://web.archive.org/web/20130327202242/http://larry.masinter.net/ |archive-date=2013-03-27}}</ref> The wording of the protocol made it clear that it was not entirely serious; for example, it notes that "there is a strong, dark, rich requirement for a protocol designed [[espresso]]ly {{Sic}} for the brewing of coffee".


Despite the joking nature of its origins, or perhaps because of it, the protocol has remained as a minor presence online. The editor [[Emacs]] includes a fully functional client side implementation of it,<ref>{{Citation | title = Emarsden | url = http://emarsden.chez.com/downloads/ | publisher = Chez | contribution = Emacs extension: coffee.el | access-date = 2009-02-10 | archive-date = 2009-02-01 | archive-url = https://web.archive.org/web/20090201001552/http://emarsden.chez.com/downloads/ | url-status = live }}.</ref> and a number of bug reports exist complaining about [[Mozilla]]'s lack of support for the protocol.<ref>{{Citation|title=Bug 46647 – (coffeehandler) HTCPCP not supported (RFC2324)|url=https://bugzilla.mozilla.org/show_bug.cgi?id=46647|work=Bugzilla|publisher=Mozilla|access-date=2005-12-21|archive-date=2011-05-14|archive-url=https://web.archive.org/web/20110514065147/https://bugzilla.mozilla.org/show_bug.cgi?id=46647|url-status=live}}</ref> Ten years after the publication of HTCPCP, the ''Web-Controlled Coffee Consortium'' (''WC3'') published a first draft of "HTCPCP Vocabulary in [[Resource Description Framework|RDF]]"<ref>{{Citation |title=HTCPCP Vocabulary in RDF – WC3 RFC Draft |date=1 April 2008 |url=https://cstrobbe.github.io/WC3/TR/2008/RFC-htcpcp-in-rdf-20080401/ |publisher=Chief Arabica (Web-Controlled Coffee Consortium) |access-date=27 April 2017 |via=github |archive-date=15 May 2021 |archive-url=https://web.archive.org/web/20210515041835/https://cstrobbe.github.io/WC3/TR/2008/RFC-htcpcp-in-rdf-20080401/ |url-status=live }}</ref> in parody of the [[World Wide Web Consortium]]'s (W3C) "HTTP Vocabulary in RDF".<ref>{{Citation | editor-first = Johannes | editor-last = Koch | others = et al | url = http://www.w3.org/TR/HTTP-in-RDF/ | title = HTTP Vocabulary in RDF | publisher = [[World Wide Web Consortium|W3]] | access-date = 17 August 2009 | archive-date = 15 October 2009 | archive-url = https://web.archive.org/web/20091015080216/http://www.w3.org/TR/HTTP-in-RDF/ | url-status = live }}</ref>
Despite the joking nature of its origins, or perhaps because of it, the protocol has remained as a minor presence online. The editor [[Emacs]] includes a fully functional client side implementation of it,<ref>{{Citation | title = Emarsden | url = http://emarsden.chez.com/downloads/ | publisher = Chez | contribution = Emacs extension: coffee.el | access-date = 2009-02-10 | archive-date = 2009-02-01 | archive-url = https://web.archive.org/web/20090201001552/http://emarsden.chez.com/downloads/ | url-status = live }}.</ref> and a number of bug reports exist complaining about [[Mozilla]]'s lack of support for the protocol.<ref>{{Citation|title=Bug 46647 – (coffeehandler) HTCPCP not supported (RFC2324)|url=https://bugzilla.mozilla.org/show_bug.cgi?id=46647|work=Bugzilla|publisher=Mozilla|access-date=2005-12-21|archive-date=2011-05-14|archive-url=https://web.archive.org/web/20110514065147/https://bugzilla.mozilla.org/show_bug.cgi?id=46647|url-status=live}}</ref> Ten years after the publication of HTCPCP, the ''Web-Controlled Coffee Consortium'' (''WC3'') published a first draft of "HTCPCP Vocabulary in [[Resource Description Framework|RDF]]"<ref>{{Citation |title=HTCPCP Vocabulary in RDF – WC3 RFC Draft |date=1 April 2008 |url=https://cstrobbe.gitlab.io/WC3/TR/2008/RFC-htcpcp-in-rdf-20080401/ |publisher=Chief Arabica (Web-Controlled Coffee Consortium) |access-date=17 March 2023 |via=github |archive-date=15 May 2021 |archive-url=https://web.archive.org/web/20210515041835/https://cstrobbe.github.io/WC3/TR/2008/RFC-htcpcp-in-rdf-20080401/ |url-status=live }}</ref> in parody of the [[World Wide Web Consortium]]'s (W3C) "HTTP Vocabulary in RDF".<ref>{{Citation | editor-first = Johannes | editor-last = Koch | others = et al | url = http://www.w3.org/TR/HTTP-in-RDF/ | title = HTTP Vocabulary in RDF | publisher = [[World Wide Web Consortium|W3]] | access-date = 17 August 2009 | archive-date = 15 October 2009 | archive-url = https://web.archive.org/web/20091015080216/http://www.w3.org/TR/HTTP-in-RDF/ | url-status = live }}</ref>


On April 1, 2014, RFC 7168 extended HTCPCP to fully handle teapots.<ref name=rfc7168 />
On April 1, 2014, RFC 7168 extended HTCPCP to fully handle teapots.<ref name=rfc7168 />
Line 27: Line 27:
==Commands and replies==
==Commands and replies==
HTCPCP is an extension of [[Hypertext Transfer Protocol|HTTP]]. HTCPCP requests are identified with the [[Uniform Resource Identifier]] (URI) scheme <code>coffee</code> (or the corresponding word in any other of the 29 listed languages) and contain several additions to the HTTP methods:
HTCPCP is an extension of [[Hypertext Transfer Protocol|HTTP]]. HTCPCP requests are identified with the [[Uniform Resource Identifier]] (URI) scheme <code>coffee</code> (or the corresponding word in any other of the 29 listed languages) and contain several additions to the HTTP methods:
{| class="wikitable"
{|
! Method !! Definition
|-
|valign=top|<code>BREW</code> or <code>POST</code>||Causes the HTCPCP server to brew [[coffee]]. Using POST for this purpose is deprecated. A new [[HTTP header#Requests|HTTP request header field]] "Accept-Additions" is proposed, supporting optional additions including Cream, Whole-milk, Vanilla, Raspberry, Whisky, Aquavit, etc.
|valign=top|<code>BREW</code> or <code>POST</code>||Causes the HTCPCP server to brew [[coffee]]. Using POST for this purpose is deprecated. A new [[HTTP header#Requests|HTTP request header field]] "Accept-Additions" is proposed, supporting optional additions including Cream, Whole-milk, Vanilla, Raspberry, Whisky, Aquavit, etc.
|- valign=top
|- valign=top
Line 37: Line 39:
|}
|}


It also defines two [[List of HTTP status codes#4xx client errors|error responses]]:
It also defines three [[List of HTTP status codes#4xx client errors|error responses]]:
{| class="wikitable"
{|
! Status code !! Definition
|valign=top|<code>406&nbsp;Not&nbsp;Acceptable</code>||The HTCPCP server is unable to provide the requested addition for some reason; the response should indicate a list of available additions. The RFC observes that "In practice, most automated coffee pots cannot currently provide additions."
|-
|valign=top|<code>{{nowrap|406 Not Acceptable}}</code>||The HTCPCP server is unable to provide the requested addition for some reason; the response should indicate a list of available additions. The RFC observes that "In practice, most automated coffee pots cannot currently provide additions."
|- valign=top
|- valign=top
|<code>418 I'm a teapot</code>||The HTCPCP server is a [[teapot]]; the resulting entity body "may be short and stout" (a reference to the song "[[I'm a Little Teapot]]"). Demonstrations of this behaviour exist.<ref name="JR">{{Citation |last=Reddington |first=Joseph |title=Illustrated implementation of Error 418 |url=http://joereddington.com/projects/418-error-code-teapot/ |archive-url=https://web.archive.org/web/20150906071854/http://joereddington.com/projects/418-error-code-teapot/ |access-date=2014-10-18 |archive-date=2015-09-06 |url-status=dead}}</ref><ref>{{Cite web |url=http://www.qdh.org.uk/wordpress/?p=546 |title=A Goblin Teasmade teamaker with an implementation of Error 418 |access-date=2014-07-26 |archive-url=https://web.archive.org/web/20141206053112/http://www.qdh.org.uk/wordpress/?p=546 |archive-date=2014-12-06 |url-status=dead }}</ref>
|<code>{{nowrap|418 I'm a teapot}}</code>||The HTCPCP server is a [[teapot]]; the resulting entity body "may be short and stout" (a reference to the song "[[I'm a Little Teapot]]"). Demonstrations of this behaviour exist.<ref name="JR">{{Citation |last=Reddington |first=Joseph |title=Illustrated implementation of Error 418 |url=http://joereddington.com/projects/418-error-code-teapot/ |archive-url=https://web.archive.org/web/20150906071854/http://joereddington.com/projects/418-error-code-teapot/ |access-date=2014-10-18 |archive-date=2015-09-06 |url-status=dead}}</ref><ref>{{Cite web |url=http://www.qdh.org.uk/wordpress/?p=546 |title=A Goblin Teasmade teamaker with an implementation of Error 418 |access-date=2014-07-26 |archive-url=https://web.archive.org/web/20141206053112/http://www.qdh.org.uk/wordpress/?p=546 |archive-date=2014-12-06 |url-status=dead }}</ref>
|-
|<code>{{nowrap|503 Service Unavailable}}</code>
|According to Mozilla Developer Documentation "A combined coffee/tea pot that is temporarily out of coffee should instead return 503", when requested to brew<ref>{{Cite web |date=2023-04-10 |title=418 I'm a teapot - HTTP {{!}} MDN |url=https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/418 |access-date=2023-09-21 |website=developer.mozilla.org |language=en-US}}</ref>
|}
|}


Line 47: Line 54:
On 5 August 2017, Mark Nottingham, chairman of the [[IETF]] [[HTTPBIS]] Working Group, called for the removal of status code 418 "I'm a teapot" from the [[Node.js]] platform, a code implemented in reference to the original 418 "I'm a teapot" established in Hyper Text Coffee Pot Control Protocol.<ref>{{Cite web |last=Nottingham |first=Mark |title=418 I'm A Teapot #14644 |url=https://github.com/nodejs/node/issues/14644#issue-248218948 |via=github |access-date=2017-08-12 |archive-date=2017-08-10 |archive-url=https://web.archive.org/web/20170810220743/https://github.com/nodejs/node/issues/14644#issue-248218948 |url-status=live }}</ref> On 6 August 2017, Nottingham requested that references to 418 "I'm a teapot" be removed from the programming language [[Go (programming language)|Go]]<ref>{{Cite web |last=Nottingham |first=Mark |title=net/http: remove support for status code 418 I'm a Teapot |url=https://github.com/golang/go/issues/21326#issue-248234750 |via=github |access-date=2017-08-12 |archive-date=2017-08-10 |archive-url=https://web.archive.org/web/20170810220643/https://github.com/golang/go/issues/21326#issue-248234750 |url-status=live }}</ref> and subsequently from [[Python (programming language)|Python]]'s [[Requests (software)|Requests]]<ref>{{Cite web |last=Nottingham |first=Mark |title=418 418 I'm a Teapot #4238 |url=https://github.com/requests/requests/issues/4238#issue-249497185 |via=github |access-date=2017-08-12 |archive-date=2021-05-15 |archive-url=https://web.archive.org/web/20210515041837/https://github.com/psf/requests/issues/4238#issue-249497185 |url-status=live }}</ref> and [[ASP.NET]]'s HttpAbstractions library<ref>{{Cite web |last=Nottingham |first=Mark |title=418 I'm a Teapot #915 |url=https://github.com/aspnet/HttpAbstractions/issues/915 |via=github |access-date=2017-08-12 |archive-date=2019-05-10 |archive-url=https://web.archive.org/web/20190510155446/https://github.com/aspnet/HttpAbstractions/issues/915 |url-status=live }}</ref> as well.
On 5 August 2017, Mark Nottingham, chairman of the [[IETF]] [[HTTPBIS]] Working Group, called for the removal of status code 418 "I'm a teapot" from the [[Node.js]] platform, a code implemented in reference to the original 418 "I'm a teapot" established in Hyper Text Coffee Pot Control Protocol.<ref>{{Cite web |last=Nottingham |first=Mark |title=418 I'm A Teapot #14644 |url=https://github.com/nodejs/node/issues/14644#issue-248218948 |via=github |access-date=2017-08-12 |archive-date=2017-08-10 |archive-url=https://web.archive.org/web/20170810220743/https://github.com/nodejs/node/issues/14644#issue-248218948 |url-status=live }}</ref> On 6 August 2017, Nottingham requested that references to 418 "I'm a teapot" be removed from the programming language [[Go (programming language)|Go]]<ref>{{Cite web |last=Nottingham |first=Mark |title=net/http: remove support for status code 418 I'm a Teapot |url=https://github.com/golang/go/issues/21326#issue-248234750 |via=github |access-date=2017-08-12 |archive-date=2017-08-10 |archive-url=https://web.archive.org/web/20170810220643/https://github.com/golang/go/issues/21326#issue-248234750 |url-status=live }}</ref> and subsequently from [[Python (programming language)|Python]]'s [[Requests (software)|Requests]]<ref>{{Cite web |last=Nottingham |first=Mark |title=418 418 I'm a Teapot #4238 |url=https://github.com/requests/requests/issues/4238#issue-249497185 |via=github |access-date=2017-08-12 |archive-date=2021-05-15 |archive-url=https://web.archive.org/web/20210515041837/https://github.com/psf/requests/issues/4238#issue-249497185 |url-status=live }}</ref> and [[ASP.NET]]'s HttpAbstractions library<ref>{{Cite web |last=Nottingham |first=Mark |title=418 I'm a Teapot #915 |url=https://github.com/aspnet/HttpAbstractions/issues/915 |via=github |access-date=2017-08-12 |archive-date=2019-05-10 |archive-url=https://web.archive.org/web/20190510155446/https://github.com/aspnet/HttpAbstractions/issues/915 |url-status=live }}</ref> as well.


In response, 15-year-old developer Shane Brunswick created a website, save418.com,<ref>{{Cite web |last=Brunswick |first=Shane |title=We are the teapots |url=http://save418.com |website=The Save 418 Movement |access-date=2021-05-15 |archive-date=2021-05-15 |archive-url=https://web.archive.org/web/20210515041851/https://save418.com/ |url-status=live }}</ref> and established the "Save 418 Movement", asserting that references to 418 "I'm a teapot" in different projects serve as "a reminder that the underlying processes of computers are still made by humans". Brunswick's site went viral in the hours following its publishing, garnering thousands of upvotes on the social platform [[Reddit]],<ref>{{Cite web |title=HTTP Error Code 418 I'm a Teapot is about to be removed from Node. We've gotta do something. [x-post /r/webdev] |url=https://www.reddit.com/r/programming/comments/6sxea0/http_error_code_418_im_a_teapot_is_about_to_be/ |via=reddit |access-date=2017-08-12 |archive-date=2017-08-11 |archive-url=https://web.archive.org/web/20170811223038/https://www.reddit.com/r/programming/comments/6sxea0/http_error_code_418_im_a_teapot_is_about_to_be/ |url-status=live }}</ref> and causing the mass adoption of the "#save418" [[Twitter]] hashtag he introduced on his site. Heeding the public outcry, Node.js, Go, Python's Requests, and ASP.NET's HttpAbstractions library decided against removing 418 "I'm a teapot" from their respective projects. The unanimous support from the aforementioned projects and the general public prompted Nottingham to begin the process of having 418 marked as a reserved HTTP status code,<ref>{{Cite web |last=Nottingham |first=Mark |title=Reserving 418 |url=https://lists.w3.org/Archives/Public/ietf-http-wg/2017JulSep/0332.html |via=github |access-date=2017-08-12 |archive-date=2017-08-13 |archive-url=https://web.archive.org/web/20170813012814/https://lists.w3.org/Archives/Public/ietf-http-wg/2017JulSep/0332.html |url-status=live }}</ref> ensuring that 418 will not be replaced by an official status code for the foreseeable future.
In response, 15-year-old developer Shane Brunswick created a website, save418.com,<ref>{{Cite web |last=Brunswick |first=Shane |title=We are the teapots |url=http://save418.com |website=The Save 418 Movement |date=2017-09-10 |access-date=2021-05-15 |archive-date=2021-05-15 |archive-url=https://web.archive.org/web/20210515041851/https://save418.com/ |url-status=live }}</ref> and established the "Save 418 Movement", asserting that references to 418 "I'm a teapot" in different projects serve as "a reminder that the underlying processes of computers are still made by humans". Brunswick's site went viral in the hours following its publishing, garnering thousands of upvotes on the social platform [[Reddit]],<ref>{{Cite web |title=HTTP Error Code 418 I'm a Teapot is about to be removed from Node. We've gotta do something. [x-post /r/webdev] |url=https://www.reddit.com/r/programming/comments/6sxea0/http_error_code_418_im_a_teapot_is_about_to_be/ |via=reddit |access-date=2017-08-12 |archive-date=2017-08-11 |archive-url=https://web.archive.org/web/20170811223038/https://www.reddit.com/r/programming/comments/6sxea0/http_error_code_418_im_a_teapot_is_about_to_be/ |url-status=live }}</ref> and causing the mass adoption of the "#save418" [[Twitter]] hashtag he introduced on his site. Heeding the public outcry, Node.js, Go, Python's Requests, and ASP.NET's HttpAbstractions library decided against removing 418 "I'm a teapot" from their respective projects. The unanimous support from the aforementioned projects and the general public prompted Nottingham to begin the process of having 418 marked as a reserved HTTP status code,<ref>{{Cite web |last=Nottingham |first=Mark |title=Reserving 418 |url=https://lists.w3.org/Archives/Public/ietf-http-wg/2017JulSep/0332.html |via=github |access-date=2017-08-12 |archive-date=2017-08-13 |archive-url=https://web.archive.org/web/20170813012814/https://lists.w3.org/Archives/Public/ietf-http-wg/2017JulSep/0332.html |url-status=live }}</ref> ensuring that 418 will not be replaced by an official status code for the foreseeable future.


On 5 October 2020, Python 3.9 released with an updated http library including <code>418 IM_A_TEAPOT</code> status code.<ref>{{Cite web|date=2020-10-05|title=What's New In Python 3.9 — Python 3.9.0 documentation|url=https://docs.python.org/3/whatsnew/3.9.html#http|access-date=2020-10-08|website=Python Documentation|archive-date=2020-10-07|archive-url=https://web.archive.org/web/20201007172936/https://docs.python.org/3/whatsnew/3.9.html#http|url-status=live}}</ref> In the corresponding pull request, the Save 418 movement was directly cited in support of adoption.<ref>{{Cite web|title=Issue 39507: http library missing HTTP status code 418 "I'm a teapot" – Python tracker|url=https://bugs.python.org/issue39507#msg361134|access-date=2020-10-08|website=bugs.python.org|archive-date=2020-10-14|archive-url=https://web.archive.org/web/20201014070511/https://bugs.python.org/issue39507#msg361134|url-status=live}}</ref>
On 5 October 2020, Python 3.9 released with an updated HTTP library including <code>418 IM_A_TEAPOT</code> status code.<ref>{{Cite web|date=2020-10-05|title=What's New In Python 3.9 — Python 3.9.0 documentation|url=https://docs.python.org/3/whatsnew/3.9.html#http|access-date=2020-10-08|website=Python Documentation|archive-date=2020-10-07|archive-url=https://web.archive.org/web/20201007172936/https://docs.python.org/3/whatsnew/3.9.html#http|url-status=live}}</ref> In the corresponding pull request, the Save 418 movement was directly cited in support of adoption.<ref>{{Cite web|title=Issue 39507: http library missing HTTP status code 418 "I'm a teapot" – Python tracker|url=https://bugs.python.org/issue39507#msg361134|access-date=2020-10-08|website=bugs.python.org|archive-date=2020-10-14|archive-url=https://web.archive.org/web/20201014070511/https://bugs.python.org/issue39507#msg361134|url-status=live}}</ref>


== Usage ==
== Usage ==
Around the time of the [[2021-2022 Russo-Ukrainian crisis]], the [[Russian military]] website mil.ru returned the HTTP 418 status code when accessed from outside of Russia as a [[Denial-of-service attack|DDoS attack]] protection measure.<ref>{{Cite web |date=2022-02-25 |title=Russia appears to deploy digital defenses after DDoS attacks |url=https://therecord.media/russia-appears-to-deploy-digital-defenses-after-ddos-attacks/ |access-date=2022-02-26 |website=[[The Record by Recorded Future]] |language=en}}</ref><ref>{{Cite web |title=I Went to a Russian Website and All I Got Was This Lousy Teapot |url=https://www.pcmag.com/news/i-went-to-a-russian-website-and-all-i-got-was-this-lousy-teapot |access-date=2022-02-28 |website=[[PCMag]] |language=en}}</ref> The change was first noticed in December of 2021.<ref>{{cite web | url=https://news.ycombinator.com/item?id=29594249 | title=Russian MoD website blocked for non-Russian IPs &#124; Hacker News }}</ref><!-- use https://cheapskatesguide.org/articles/kiwifarms.html or something better -->
The status code 418 is sometimes returned by servers when blocking a request, instead of the more appropriate [[HTTP 403|403 Forbidden]].<ref>{{cite web|url=https://help.dreamhost.com/hc/en-us/articles/215947927-Enable-extra-web-security-on-a-website|title=Enable extra web security on a website|access-date=2022-12-18|website=[[DreamHost]]|language=en}}</ref>
Around the time of the [[2021–2022 Russo-Ukrainian crisis]], the [[Russian military]] website mil.ru returned the HTTP 418 status code when accessed from outside of Russia as a [[Denial-of-service attack|DDoS attack]] protection measure.<ref>{{Cite web |date=2022-02-25 |title=Russia appears to deploy digital defenses after DDoS attacks |url=https://therecord.media/russia-appears-to-deploy-digital-defenses-after-ddos-attacks/ |access-date=2022-02-26 |website=[[The Record by Recorded Future]] |language=en}}</ref><ref>{{Cite web |title=I Went to a Russian Website and All I Got Was This Lousy Teapot |url=https://www.pcmag.com/news/i-went-to-a-russian-website-and-all-i-got-was-this-lousy-teapot |access-date=2022-02-28 |website=[[PCMag]] |language=en}}</ref> The change was first noticed in December of 2021.<ref>{{cite web | url=https://news.ycombinator.com/item?id=29594249 | title=Russian MoD website blocked for non-Russian IPs &#124; Hacker News }}</ref><!-- use https://cheapskatesguide.org/articles/kiwifarms.html or something better -->


==See also==
==See also==

Revision as of 01:27, 26 March 2024

Hyper Text Coffee Pot Control Protocol
Back-end infrastructure of error418.net, which implements HTCPCP using a teapot and Raspberry Pi
International standardInternet Engineering Task Force
Developed byLarry Masinter
IntroducedApril 1, 1998 (1998-04-01)
Websiterfc2324
Working teapot implementing HTCPCP[1]

The Hyper Text Coffee Pot Control Protocol (HTCPCP) is a facetious communication protocol for controlling, monitoring, and diagnosing coffee pots. It is specified in RFC 2324, published on 1 April 1998 as an April Fools' Day RFC,[2] as part of an April Fools prank.[3] An extension, HTCPCP-TEA, was published as RFC 7168 on 1 April 2014[4] to support brewing teas, which is also an April Fools' Day RFC.

Protocol

RFC 2324 was written by Larry Masinter, who describes it as a satire, saying "This has a serious purpose – it identifies many of the ways in which HTTP has been extended inappropriately."[5] The wording of the protocol made it clear that it was not entirely serious; for example, it notes that "there is a strong, dark, rich requirement for a protocol designed espressoly [sic] for the brewing of coffee".

Despite the joking nature of its origins, or perhaps because of it, the protocol has remained as a minor presence online. The editor Emacs includes a fully functional client side implementation of it,[6] and a number of bug reports exist complaining about Mozilla's lack of support for the protocol.[7] Ten years after the publication of HTCPCP, the Web-Controlled Coffee Consortium (WC3) published a first draft of "HTCPCP Vocabulary in RDF"[8] in parody of the World Wide Web Consortium's (W3C) "HTTP Vocabulary in RDF".[9]

On April 1, 2014, RFC 7168 extended HTCPCP to fully handle teapots.[4]

Commands and replies

HTCPCP is an extension of HTTP. HTCPCP requests are identified with the Uniform Resource Identifier (URI) scheme coffee (or the corresponding word in any other of the 29 listed languages) and contain several additions to the HTTP methods:

Method Definition
BREW or POST Causes the HTCPCP server to brew coffee. Using POST for this purpose is deprecated. A new HTTP request header field "Accept-Additions" is proposed, supporting optional additions including Cream, Whole-milk, Vanilla, Raspberry, Whisky, Aquavit, etc.
GET "Retrieves" coffee from the HTCPCP server.
PROPFIND Returns metadata about the coffee.
WHEN Says "when", causing the HTCPCP server to stop pouring milk into the coffee (if applicable).

It also defines three error responses:

Status code Definition
406 Not Acceptable The HTCPCP server is unable to provide the requested addition for some reason; the response should indicate a list of available additions. The RFC observes that "In practice, most automated coffee pots cannot currently provide additions."
418 I'm a teapot The HTCPCP server is a teapot; the resulting entity body "may be short and stout" (a reference to the song "I'm a Little Teapot"). Demonstrations of this behaviour exist.[1][10]
503 Service Unavailable According to Mozilla Developer Documentation "A combined coffee/tea pot that is temporarily out of coffee should instead return 503", when requested to brew[11]

Save 418 movement

On 5 August 2017, Mark Nottingham, chairman of the IETF HTTPBIS Working Group, called for the removal of status code 418 "I'm a teapot" from the Node.js platform, a code implemented in reference to the original 418 "I'm a teapot" established in Hyper Text Coffee Pot Control Protocol.[12] On 6 August 2017, Nottingham requested that references to 418 "I'm a teapot" be removed from the programming language Go[13] and subsequently from Python's Requests[14] and ASP.NET's HttpAbstractions library[15] as well.

In response, 15-year-old developer Shane Brunswick created a website, save418.com,[16] and established the "Save 418 Movement", asserting that references to 418 "I'm a teapot" in different projects serve as "a reminder that the underlying processes of computers are still made by humans". Brunswick's site went viral in the hours following its publishing, garnering thousands of upvotes on the social platform Reddit,[17] and causing the mass adoption of the "#save418" Twitter hashtag he introduced on his site. Heeding the public outcry, Node.js, Go, Python's Requests, and ASP.NET's HttpAbstractions library decided against removing 418 "I'm a teapot" from their respective projects. The unanimous support from the aforementioned projects and the general public prompted Nottingham to begin the process of having 418 marked as a reserved HTTP status code,[18] ensuring that 418 will not be replaced by an official status code for the foreseeable future.

On 5 October 2020, Python 3.9 released with an updated HTTP library including 418 IM_A_TEAPOT status code.[19] In the corresponding pull request, the Save 418 movement was directly cited in support of adoption.[20]

Usage

The status code 418 is sometimes returned by servers when blocking a request, instead of the more appropriate 403 Forbidden.[21]

Around the time of the 2021–2022 Russo-Ukrainian crisis, the Russian military website mil.ru returned the HTTP 418 status code when accessed from outside of Russia as a DDoS attack protection measure.[22][23] The change was first noticed in December of 2021.[24]

See also

References

  1. ^ a b Reddington, Joseph, Illustrated implementation of Error 418, archived from the original on 2015-09-06, retrieved 2014-10-18
  2. ^ Masinter, Larry M. (April 1998), "Request for Comments 2324", Network Working Group, IETF, archived from the original on 2012-04-04, retrieved 2012-03-20
  3. ^ DeNardis, Laura (30 September 2009). Protocol Politics: The Globalization of Internet Governance. MIT Press. pp. 27ff. ISBN 978-0-262-04257-4. Retrieved 8 May 2012.
  4. ^ a b Nazar, Imran (April 2014), "Request for Comments 7168", The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances (HTCPCP-TEA), IETF, archived from the original on 2014-05-29, retrieved 2014-04-22
  5. ^ Masinter, Larry. "IETF RFCs". Archived from the original on 2013-03-27.
  6. ^ "Emacs extension: coffee.el", Emarsden, Chez, archived from the original on 2009-02-01, retrieved 2009-02-10.
  7. ^ "Bug 46647 – (coffeehandler) HTCPCP not supported (RFC2324)", Bugzilla, Mozilla, archived from the original on 2011-05-14, retrieved 2005-12-21
  8. ^ HTCPCP Vocabulary in RDF – WC3 RFC Draft, Chief Arabica (Web-Controlled Coffee Consortium), 1 April 2008, archived from the original on 15 May 2021, retrieved 17 March 2023 – via github
  9. ^ Koch, Johannes (ed.), HTTP Vocabulary in RDF, et al, W3, archived from the original on 15 October 2009, retrieved 17 August 2009
  10. ^ "A Goblin Teasmade teamaker with an implementation of Error 418". Archived from the original on 2014-12-06. Retrieved 2014-07-26.
  11. ^ "418 I'm a teapot - HTTP | MDN". developer.mozilla.org. 2023-04-10. Retrieved 2023-09-21.
  12. ^ Nottingham, Mark. "418 I'm A Teapot #14644". Archived from the original on 2017-08-10. Retrieved 2017-08-12 – via github.
  13. ^ Nottingham, Mark. "net/http: remove support for status code 418 I'm a Teapot". Archived from the original on 2017-08-10. Retrieved 2017-08-12 – via github.
  14. ^ Nottingham, Mark. "418 418 I'm a Teapot #4238". Archived from the original on 2021-05-15. Retrieved 2017-08-12 – via github.
  15. ^ Nottingham, Mark. "418 I'm a Teapot #915". Archived from the original on 2019-05-10. Retrieved 2017-08-12 – via github.
  16. ^ Brunswick, Shane (2017-09-10). "We are the teapots". The Save 418 Movement. Archived from the original on 2021-05-15. Retrieved 2021-05-15.
  17. ^ "HTTP Error Code 418 I'm a Teapot is about to be removed from Node. We've gotta do something. [x-post /r/webdev]". Archived from the original on 2017-08-11. Retrieved 2017-08-12 – via reddit.
  18. ^ Nottingham, Mark. "Reserving 418". Archived from the original on 2017-08-13. Retrieved 2017-08-12 – via github.
  19. ^ "What's New In Python 3.9 — Python 3.9.0 documentation". Python Documentation. 2020-10-05. Archived from the original on 2020-10-07. Retrieved 2020-10-08.
  20. ^ "Issue 39507: http library missing HTTP status code 418 "I'm a teapot" – Python tracker". bugs.python.org. Archived from the original on 2020-10-14. Retrieved 2020-10-08.
  21. ^ "Enable extra web security on a website". DreamHost. Retrieved 2022-12-18.
  22. ^ "Russia appears to deploy digital defenses after DDoS attacks". The Record by Recorded Future. 2022-02-25. Retrieved 2022-02-26.
  23. ^ "I Went to a Russian Website and All I Got Was This Lousy Teapot". PCMag. Retrieved 2022-02-28.
  24. ^ "Russian MoD website blocked for non-Russian IPs | Hacker News".

External links