Appendice A. Contesto
Per molti anni, il prefisso "X-" è stato utilizzato per parametri sperimentali o di estensione nei protocolli applicativi. Gli esempi includono:
File Transfer Protocol (FTP)
Il File Transfer Protocol (FTP) [RFC775] include il concetto di "comandi sperimentali", alcuni dei quali erano prefissati con "X" (ad esempio, "XSEN", "XRSQ", "XRCP"), portando alla convenzione che i comandi FTP sperimentali dovrebbero utilizzare il prefisso "X". Questa convenzione è stata estesa ad altri protocolli.
Gli autori di [RFC691] hanno sostenuto che questa convenzione fosse insufficiente per due ragioni:
-
Un prefisso "X" non impedisce le collisioni di nomi quando due implementazioni diverse utilizzano lo stesso nome "X-".
-
I parametri con un prefisso "X-" potrebbero trapelare nell'uso permanente, a quel punto la rimozione del prefisso causerebbe problemi di interoperabilità.
Nonostante questi problemi, la convenzione del prefisso "X-" è diventata pratica comune.
Intestazioni di posta elettronica
Le prime specifiche per le intestazioni di posta elettronica (come [RFC822]) distinguevano tra "extension-fields" (formalmente standardizzati) e "user-defined-fields" (non standardizzati). I campi definiti dall'utente dovevano iniziare con "X-". Questa convenzione è continuata attraverso [RFC1123] ed è stata codificata in [RFC2045], [RFC2046] e [RFC2047] per MIME.
Tuttavia, [RFC2822] ha rimosso la distinzione, notando che la convenzione "X-" "ha la sfortunata tendenza a far credere agli sviluppatori che [tali campi] non hanno mai bisogno di essere registrati o standardizzati", il che ha portato a significativi problemi di interoperabilità quando i campi "X-" sono diventati ampiamente distribuiti.
Cambiamenti simili si sono verificati in altri protocolli correlati alla posta elettronica. Ad esempio, [RFC3864] ha stabilito un meccanismo di registrazione per tutti i campi di intestazione della posta elettronica, indipendentemente dal fatto che abbiano un prefisso "X-".
Intestazioni HTTP
Le prime specifiche HTTP ([RFC2068], poi [RFC2616]) non imponevano la convenzione "X-" per le intestazioni di estensione, ma è diventata pratica comune. Ciò ha portato a situazioni in cui intestazioni ampiamente distribuite come "X-Forwarded-For" non potevano essere facilmente standardizzate perché la rimozione del prefisso "X-" avrebbe compromesso la compatibilità.
vCard e iCalendar
La specifica vCard [RFC2426] consentiva tipi e proprietà di estensione con un prefisso "X-". Analogamente, iCalendar [RFC5545] utilizza un costrutto "x-name" per proprietà e parametri sperimentali. Queste specifiche continuano a consentire tali nomi fornendo anche meccanismi di registrazione per tutte le proprietà e i parametri.
Spazi dei nomi URN
Il meccanismo di definizione dello spazio dei nomi URN [RFC3406] riserva certi spazi dei nomi per scopi sperimentali (valori NID che iniziano con "x-"), ma nota anche che tali nomi non dovrebbero essere utilizzati nei sistemi di produzione.
Nomi di campi LDAP
LDAP [RFC4512] consente descrizioni di attributi che iniziano con "x-" per uso privato o sperimentale, ma tali attributi possono essere standardizzati se necessario.
Conclusione
I registri storici mostrano che sebbene la convenzione "X-" fosse intesa a prevenire collisioni tra parametri standardizzati e non standardizzati, spesso non è riuscita a raggiungere questo obiettivo e ha creato significativi problemi di migrazione e interoperabilità quando i parametri sperimentali sono diventati ampiamente distribuiti.