# Hyper Text Coffee Pot Control Protocol

Hyper Text Coffee Pot Control Protocol (HTCPCP) è un protocollo di rete per il controllo, il monitoraggio e la diagnostica delle caffettiere. È specificato nella RFC 2324, pubblicata come pesce d'aprile il 1º aprile 1998. Una estensione del protocollo è stata pubblicata come RFC 7168 il 1º aprile 2014 per estendere il supporto alle teiere.

## Protocollo

La RFC 2324 venne scritta da Larry Masinter come satira, sostenendo che "aveva uno scopo serio – identificava molti dei modi nei quali HTTP era stato esteso in maniera inappropriata". Il linguaggio usato era però chiaramente ironico, ad esempio una frase riporta there is a strong, dark, rich requirement for a protocol designed espressoly [sic] for the brewing of coffee ("vi è la forte, scura e ricca necessità di un protocollo progettato espressomente [sic] per l'infusione del caffè").
Nonostante la natura di burla delle sue origini, il protocollo ha avuto una pur minima diffusione online. L'editor di testi Emacs include una implementazione client side completamente funzionante e diversi bug report lamentano la mancanza del supporto per il protocollo su Mozilla. Dieci anni dopo la pubblicazione della RFC, il Web-Controlled Coffee Consortium (WC3) ha pubblicato una prima bozza del HTCPCP Vocabulary in RDF, parodia del HTTP Vocabulary in RDF pubblicato dal World Wide Web Consortium (W3C).
Il 1º aprile 2014 è stata pubblicata la RFC 7168, che estende il protocollo per supportare pienamente anche le teiere.

## Comandi e risposte

HTCPCP è una estensione del protocollo HTTP. Le richieste HTCPCP sono identificate dallo schema URI coffee (o la parola corrispondente nelle 29 lingue supportate) e aggiunge alcuni metodi:
| BREW o POST | Richiede al server HTCPCP di preparare il caffè. L'uso di POST a questo scopo è deprecato. È stato proposto un nuovo header HTTP "Accept-Additions", per supportare le aggiunte opzionali come crema, latte, vaniglia, lampone, whisky, acquavite etc. |
| GET | Riceve il caffè dal server HTCPCP. |
| PROPFIND | Recupera i metadati sul caffè. |
| WHEN | Richiede al server HTCPCP di smettere di versare latte nel caffè (se applicabile). |
Il protocollo definisce anche due status code di errore:
| 406 Not Acceptable | Il server HTCPCP per qualche motivo non è in grado di fornire l'aggiunta richiesta al caffè, e la risposta dovrebbe indicare una lista delle aggiunte disponibili. Nella RFC si osserva che "nella pratica, molte caffettiere automatiche non sono in grado di fornire aggiunte." |
| 418 I'm a teapot | Il server HTCPCP è una teiera, e non è in grado in via permanente di preparare il caffè. Se la caffettiera è solo temporaneamente non in grado di preparare il caffè, dovrebbe restituire invece un codice 503. L'implementazione Google della pagina di errore 418 specifica che "The requested entity body is short and stout. Tip me over and pour me out.", riferimento alla canzone I'm a Little Teapot. |

## Movimento "Save 418"

Il 5 agosto 2017, Mark Nottingham, presidente del gruppo di lavoro HTTPBIS IETF, chiese la rimozione del codice di stato 418 "I'm a teapot" dalla piattaforma Node.js, il giorno seguente, Nottingham richiese che i riferimenti a 418 "I'm a teapot" fossero rimossi dal linguaggio di programmazione Go e successivamente da Python e dalla libreria HttpAbstractions di ASP.NET.
In risposta, lo sviluppatore di 15 anni Shane Brunswick creò un sito web, save418.com, ed istituì un movimento chiamato "Save 418 Movement", affermando che i riferimenti a 418 "I'm a teapot" in diversi progetti sono "un promemoria che i processi sottostanti dei computer sono ancora fatti dagli umani (a reminder that the underlying processes of computers are still made by humans)". Il sito di Brunswick è diventato virale nelle ore successive alla pubblicazione, raccogliendo migliaia di upvotes sul social network Reddit, e provocando l'adozione di massa dell'hashtag Twitter #save418 introdotto proprio da Brunswick sul sito del movimento.
Prestando attenzione alla protesta pubblica, Node.js, Go, Python's Requests e la libreria HttpAbstractions di ASP.NET hanno deciso di non rimuovere 418 "I'm a teapot" dai rispettivi progetti.