=== Premier point ===

Je reviens sur le problème de la fonction quoteattr() du module
sax.saxutils actuellement installé sur le serveur Osmose.

Visiblement, cette fonction n'est pas du tout issue du vrai module
sax.saxutils, mais n'est qu'un stub qui se contente de placer son
paramètre entre guillemets ASCII (").

Je note que cela invalide TOUTE chaîne contenant non seulement un
caractère et commercial (&), trouvés dans les URL notamment, mais
aussi dans des noms comme "Hôtel B&B" ou  "C&A", mais aussi des
guillemets ASCII, et même les caractères "<" et ">" qui ne sont pas
réencodés non plus sous la forme "&amp;", "&lt;" et "&gt;" (ce que
fait la fonction originale).

La fonction actuelle remplace en revanche systématiquement les
apostrophes ASCII (') sous la forme "&apos;"  alors que ce n'est pas
nécessaire si la valeur sera retournée entre guillemets ASCII (") : la
fonction quoteattr() du module Pythin original ne le fait pas.

Bref, l'actuelle fonction quoteattr() utilisée ne fait rien d'autre
que remplacer dans la chaîne source les apostrophes ASCII (') par
"&apos;", et encadrer la chaîne obtenue de guillemets ASCII. Elle
n'emploie pas du tout la fonction escape(), comme documentée par
Python, et ne détermine pas non plus le type de guillemets simples ou
doubles (selon lequel ou lesquels sont présents dans la chaîne source)
à utiliser pour encadrer la valeur retournée (et éviter de réencoder
l'autre type).

Ces erreurs se retrouvent par exemple (on m'a demandé de trouver un
lien dans Osmose, sur une valeur pas encore corrigée) dans :

http://rawedit.openstreetmap.fr/edit/node/739753876

 (ici l'erreur signalée est sur l'ortographe du mot "Hôtel" dans "Hotel B&B")

Bref je redemande à ce que celui qui maintient le serveur
Osmose.openstreetmap.fr vérifie d'où vient la fonction quoteattr()
utilisée, car soit ce n'est pas celle importée depuis le module
sax.saxutils (elle est écrasée par une autre en conflit dans un autre
module), soit ce module pythin sax.saxutils n'est qu'un "stub" écrit
rapidement mais pas l'original sur le serveur backend.

=== Deuxième point ===

Et je continue de voir des corruptions de données issues de "rawedit",
notamment par des utilisateurs qui visiblement utilisent aussi de très
vieilles versions d'Internet Explorer sur Windows ou MacOS (plus
maintenues par Microsoft voire abandonnées complètement sur MacOS
depuis des années) parce que certaines fonctionne Javascript
fonctionnent incorrectement sur ces versions (pour correctement
encoder le texte en UTF-8 dans la fonction javascript
encodeURIcomponent). Bref c'est encore une demande pour intégrer
jQuery dans Osmose pour remplacer le code Javascript émis par le
frontend et écrit trop rapidement et mal testé pour éviter des
problèmes de compatibilité (et éventuellement les contourner si
possible, sinon afficher une erreur sur le navigateur client afin
qu'il ne puisse pas valider une valeur erronée).

D'ailleurs il me semble que les mêmes utilisateurs de vieilles
versions de navigateur, pour contourner certaines erreurs, évitent de
taper le moindre accent dans Osmose/rawedit. Mais ils ne font pas
attention du tout sur le fait que les données affichées dans Rawedit
peuvent contenir autre chose que des caractères latins (par exemple
des traductions en russe, grec, arabe ou hébreu qui sont TOTALEMENT
corrompues par ces vieux navigateurs web incompatibles et par
l'absence de leur détection ou de solution de contournement par un
support Javascript remplaçant leur fonction javascript
encodeURIcomponent() prédéfinie mais complètement boguée).

Pour la viabilité à long terme des données OSM, il est hautement
souhaitable que les mises à jour effectuées sur la base ne se
contentent pas seulement de mentionner le nom et la version du
logiciel d'édition utilisé, mais aussi la plateforme sur laquelle elle
est exécutée (pour JOSM : indication du type de machine Java et sa
version ; pour rawedit : indication du type de navigateur, sa version
et le type d'OS, sous une forme abrégée si le "User-Agent" est trop
détaillé, mais suffisante par exemple "IE6.x;Win95", voire aussi le
jeu de caractères systèmes sur les versions de Windows avant XP).

Bien sûr on pourrait détecter les changeset des utilisateurs de ces
vieilles versions, mais je ne suis pas convaincu que ce soit des
erreurs volontaires de ces utilisateurs, qui peut-être n'ont pas
d'autre moyen de contribuer avec leur matériel ou logiciel et ne sont
pas assez calés pour installer ou utiliser un autre OS dessus, ou bien
ne le peuvent pas (matériel utilisé seulement en prêt, tel quel, par
exemple depuis un cybercafé, voire même un PC de travail d'une
administration ou d'une bibliothèque française sous-équipée) :

Au lieu d'exclure ces utilisateurs, leur fournir un support très
amélioré avec jQuery (qui fournit de nombreuses fonctions de
contournement très efficaces et bien optimisées) serait nettement
préférable (et peut-être aussi quelques contrôles de validité et
cohérence du côté du serveur Backend, voire même depuis le serveur
Frontend pour éviter certaines modifications qu'ils ne peuvent pas
effectuer sainement, par exemple si un élément contenait du russe ou
de l'hébreu, et que leur navigateur ne supporte pas leur codage).

D'ailleurs tout ce second point n'est pas spécifique à Osmose/rawedit
mais devrait aussi concerner Potlatch, et tout autre éditeur OSM
utilisable en ligne dans un navigateur : identifier les navigateurs
utilisés et les tracer dans les modifications enregistrées avec ces
éditeurs en ligne, est indispensable pour détecter et classer les
problèmes et pouvoir les résoudre correctement et tester les solutions
possibles.

C'est autant une assurance qualité que de stabilité de la base, qui
permettra aussi à des outils automatiques de détecter les anomalies
enregistrées et éventuellement permettre de les corriger ou de les
restaurer "après coup" (le temps de trouver des contournements
viables).

_______________________________________________
Talk-fr mailing list
Talk-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-fr

Répondre à