<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE entry [
<!ENTITY tounes "&#x062A;&#x0648;&#x0646;&#x633;">
]>
<entry title="Nouvelle version d'IDN">
<date>2010-08-22</date>
<update_date>2010-11-02</update_date>
<content>
<p>Une série de cinq <wikipedia name="Request for comments">RFC</wikipedia> vient de sortir,
représentant la nouvelle version de la norme
<wikipedia name="Nom de domaine internationalisé">IDN</wikipedia>, permettant d'utiliser des <wikipedia name="Nom de domaine">noms
de domaine</wikipedia> en <wikipedia>Unicode</wikipedia>. Cette
nouvelle version est officiellement nommée « IDNA 2008 » mais n'a pas
respecté le calendrier original, qui était complètement irréaliste. Il
vaut donc mieux l'appeler « IDNAbis ».</p>
<p>IDNAbis marque des changements importants dans les concepts
sous-jacents (indépendance par rapport à la version
d'<wikipedia>Unicode</wikipedia>, détermination de la liste des
caractères autorisés selon un algorithme et non plus selon une table,
suppression de l'étape de <wikipedia xml:lang="en" name="Canonicalization">canonicalisation</wikipedia>
obligatoire, etc), mais les conséquences pratiques pour les
utilisateurs seront faibles. L'écrasante majorité des noms de domaines
légaux selon IDNA 1 le seront toujours avec IDNAbis, leur encodage en
<wikipedia>Punycode</wikipedia> (<rfc num="3492" local="true"/>) reste
le même (donc, <computer>&tounes;</computer> sera toujours représenté
sur le câble par <computer>xn--pgbs0dh</computer> et
<computer>maçonnerie</computer> par
<computer>xn--maonnerie-r3a</computer>), un certain nombre de chaînes
de caractères seront désormais autorisées mais elles concernaient
surtout des <wikipedia name="Écriture">écritures peu
répandues</wikipedia>. D'autres, qui étaient autorisés (mais rarement
utilisées) sont désormais interdites.</p>
<p>La liste des <wikipedia name="Request for comments">RFC</wikipedia> qui forment IDNAbis comprend :
<enum>
<item><rfc num="5890" local="true"/>, « <foreign>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</foreign> », donne
les définitions des termes essentiels comme les nouveaux
<foreign>U-label</foreign> (forme Unicode d'un nom légal) et
<foreign>A-label</foreign> (forme <wikipedia>Punycode</wikipedia> d'un nom légal),</item>
<item><rfc num="5894" local="true"/>, « <foreign>Internationalized Domain Names for Applications (IDNA): Background, Explanation, and Rationale</foreign> », explique et justifie (fort mal, selon moi), le
projet IDNAbis et ses concepts ; ce RFC n'est pas une norme, il n'est
là que pour information,</item>
<item><rfc num="5891" local="true"/>, « <foreign>Internationalized Domain Names in Applications (IDNA): Protocol
</foreign> », est le c&#x153;ur de la nouvelle norme, il
décrit le protocole utilisé,</item>
<item><rfc num="5892" local="true"/>, « <foreign>The Unicode code points and IDNA
</foreign> »,
spécifie l'algorithme utilisé pour déterminer si un caractère est
légal en IDNAbis, illégale ou bien si sa légalité dépend du contexte,</item>
<item><rfc num="5893" local="true"/>, « <foreign>Right-to-left scripts for IDNA</foreign> »,
expose les règles pour les noms de domaine dont une partie s'écrit de
droite à gauche (par exemple en <wikipedia name="Alphabet hébreu">hébreu</wikipedia>),</item>
<item><rfc num="3492" local="true"/>, « <foreign>Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)</foreign> », faisait partie de IDNA 1 mais est inchangé pour IDNAbis.</item>
<item><rfc num="5895" local="true"/>, « <foreign>Mapping Characters
for Internationalized Domain Names in Applications (IDNA)
2008</foreign> », RFC non normatif (car contesté) sur la
canonicalisation des noms de domaines. (Sur ce sujet, on peut aussi consulter le <link url="http://www.unicode.org/reports/tr46/">TR46 du consortium Unicode</link>.)</item>
</enum>
IDNAbis est bien plus complexe que IDNA 1. Ce dernier ne comportait
que trois RFC, le <rfc num="3490" local="true"/>, décrivant le
protocole, le <rfc num="3491" local="true"/> qui normalisait
<wikipedia>nameprep</wikipedia>, l'algorithme de
<wikipedia xml:lang="en" name="Canonicalization">canonicalisation</wikipedia> (cette étape a été abandonnée
dans IDNAbis), et le <rfc num="3492" local="true"/>, sur Punycode, le
seul RFC survivant de IDNA 1.
</p>
<p>Quels sont les changements par rapport à IDNA 1 ? La description la
plus complète des changements figure dans l'annexe A du <rfc num="5891" local="true"/>. Pour la résumer :
<enum>
<item>Le protocole est désormais indépendant de la version d'Unicode :
tout changement dans Unicode est automatiquement disponible.</item>
<item>Les caractères de ponctuation et les symboles sont désormais
presque tous exclus.</item>
<item>Il n'y a plus d'étape de normalisation standard. Chaque application est désormais libre d'effectuer
la correspondance entre ce qu'a tapé ou
sélectionné l'utilisateur et l'IDN envoyé sur le réseau.</item>
<item>Le modèle de sélection des caractères autorisés est passé de
« entièrement manuel, caractère par caractère » à « essentiellement
algorithmique, fondé sur les propriétés Unicode - avec un peu
d'exceptions manuellement ajoutées ». C'est ce qui permet
l'indépendance par rapport aux versions d'Unicode.</item>
</enum>
Mais IDNAbis reste largement compatible avec l'ancien IDN (même
principe de fonctionnement, même Punycode, même
préfixe <computer>xn--</computer>, beaucoup de règles communes). En
pratique, les utilisateurs, et même les <wikipedia name="Registre (noms de domaine)">registres de
noms</wikipedia> verront peu de différences.
</p>
<p>Quelles étaient les motivations pour créer un IDNAbis seulement
quelques années après le premier ? Il y en avait plusieurs, pas toutes
avouables. De fortes pressions de l'<wikipedia name="Internet Corporation for Assigned Names and Numbers">ICANN</wikipedia>
s'étaient exercées, notamment pour avoir un prétexte pour retarder
l'introduction des IDN dans la racine (devenue effective en mai
2010). Il y avait aussi toute une campagne de
<wikipedia name="Fear, uncertainty and doubt">FUD</wikipedia> concernant un <link
local="idn-et-phishing">soi-disant</link> rôle des IDN dans le
<wikipedia>hameçonnage</wikipedia>. Très présente au début du projet,
cette motivation, souvent répétée en des termes sensationnalistes
(comme la répétition du terme ridicule de « caractères dangereux ») a
été sérieusement édulcorée au fur et à mesure du travail du groupe
<link url="http://tools.ietf.org/wg/idnabis">idnabis</link> de
l'<wikipedia name="Internet Engineering Task Force">IETF</wikipedia> (voir par exemple le <link url="http://www.ietf.org/proceedings/71/minutes/idn.txt">compte-rendu de la réunion IETF 
de Philadelphie en mars 2008</link>). Aujourd'hui, il n'en reste plus gère de
trace dans les RFC<!-- TODO: donner des exemples de contradictions
internes du jeu de RFC ? -->.</p>
<p>D'autres motivations étaient plus consensuelles, comme le souhait
d'avoir un IDNA indépendant de la version d'Unicode. Par exemple, IDNA
1 était lié à Unicode 3.2 et les écritures enregistrées par le
consortium Unicode <emphasis>après</emphasis> la sortie de la 3.2
(comme le <wikipedia>tifinagh</wikipedia>) étaient donc interdites
d'IDN. Ce point est désormais réglé.</p>
<p>Tout cela ne signifie pas que le résultat final fasse l'unanimité
et, pour un bon résumé des questions qu'IDNAbis laisse ouvertes, on peut
consulter la <link url="http://unicode.org/faq/idn.html">FAQ du
consortium Unicode</link>. Pour le point de vue des promoteurs
d'IDNAbis, voir le <rfc num="5894" local="true"/>.</p>
<p>Il ne semble pas exister encore beaucoup d'implémentations de IDNAbis mais
ce n'est pas forcément dramatique : les différences pratiques entre
les deux versions sont suffisamment faibles pour que, pour la plupart
des caractères, utiliser une des nombreuses bibliothèques mettant en
&#x153;uvre l'ancienne version soit suffisant. Sinon, la première mise en &#x153;uvre d'IDNAbis en <wikipedia>logiciel libre</wikipedia> semble être <link url="http://www.verisign.com/domain-name-services/current-registrars/internationalized-domain-names/index.html">celle de Verisign</link> et la seconde la <link url="http://josefsson.org/libidn2/">GNU libidn</link> dans sa version 2.</p>
<p>Voici les transparents d'un exposé que j'ai fait sur IDNAbis :
<enum>
<item><file name="idnabis-SHOW.pdf">PDF, version adaptée à la visualisation sur l'écran</file>,</item>
<item><file name="idnabis-PRINT.pdf">PDF, version adaptée à l'impression</file>,</item>
<item><file name="idnabis.tex">Source en LaTeX/Beamer</file>.</item>
</enum></p>
</content>
</entry>