Passa al contenuto principale

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:

  1. Un prefisso "X" non impedisce le collisioni di nomi quando due implementazioni diverse utilizzano lo stesso nome "X-".

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