Cliquez ici.Cliquez ici.
Cliquez ici.
Loading...
An error has occurred

An error has occurred in Orbeon Forms. You may want to try one of the following:

  • Close this dialog and continue to use this page.
  • Reload this page. Note that you will lose any unsaved changes.
  • If the above does not work, try reloading the page yourself. Note that you will lose any unsaved changes:

    • With Firefox and Safari: hold down the shift key and click the Reload button in your browser toolbar.
    • With Internet Explorer: hold down the control key and click the Reload button in your browser toolbar.
  • Return home.
Help

PLANÈTE XMLFR

Agrégation de carnets web.

2009-07-03

Petit changement d’orientation (pour l’instant) sur mon blogue

2009-07-03 Benoit Piette - Réingénierie cognitive - Général, meta

Ceux qui ont lu les quelques derniers billets de mon blogue ont peut-être remarqué un changement de ton un peu. Disons que je me suis rendu compte que quand je faisais trop attention à ce que j’écrivais (trop de relecture, autocensure d’opinions) je finissais par ne plus rien publier. Il faut que j’apprenne à assumer mes opinions, même si parfois elles ne sont pas toujours 100% positives. Alors j’expérimente un peu, je veux voir jusqu’où peux aller dans cet optique. Malheureusement, cela veut peut-être dire un style d’écriture plus difficile à lire, avec plus de fautes de frappes. Au moins le output devrait être plus élévé et il y a plus de chances que la qualité s’améliore un peu avec le temps. Enfin je l’espère.

Le danger des écosystèmes profonds et souterrains ou Internet Explorer 6 / Windows XP / Word 43VER

2009-07-03 Benoit Piette - Réingénierie cognitive - xmlfr, Développement Web, Opinions, html5, portails

Personne à l’intérieur d’un bon esprit va vouloir réécrire son système ERP. Et pourtant, il y a de bonnes chances que les interfaces utilisateurs de type Web (mon côté puriste ne les appelleraient pas comme cela, mais bon) soient codées en dur pour Internet Explorer 6. Quand on a un grand succès et qu’on veut empêcher d’autres de coper notre succès par des moyens techniques, lorsqu’on voudra changer de technologie on va tomber sur plein de petits problèmes assez sournois merci au niveau de la rétrocompatibilité. Et on devient son propre pire compétiteur…

Et ce n’est pas que Internet Explorer 6. En fait pas tellement Internet Explorer 6, le vrai centre où tout est relié est Word et Excel (ou Office, mais surtout Word et Excel). Pour la plupart des gens qui travaillent avec un ordinateur, le logiciel le plus souvent utilisé n’est pas un navigateur Web, c’est Word et Excel. Et tout s’y intègre, tout est plogué sur Word et Excel, même la gestion de contenu Web. Le copy paste Word / Web qui amène avec lui la problématique ISO-8859-1 vs Windows 1252. Heureusement que Wordpress transforme les guillemets en &8217;, parce que je suis coupable moi même d’utiliser Word pour écrire des articles. C’est beaucoup plus convivial qu’un textarea dans un gestionnaire de contenu, même pour Wordpress.

Imaginez que vous voudriez supprimer Word au nom des standards ouverts, vous tomberiez sur plein de problèmes : tout est plogué sur Word. Ton lecteur d’écran ? Marche juste avec Word. Ton outil de gestion de finance, exporte en Excel. Les standards ouverts ne servent à rien s’ils ne sont pas implémentés. J’aurais tendance à dire que pour une moyenne à grosse entreprise, la plupart des systèmes informatiques sont plogués à Word et que si vous enlevez Word, ils ne fonctionneront plus. OpenOffice n’a certainement pas les mêmes API, et les reverse enginerer est sûrement épouvantable, au moins autant que le format .doc lui-même. (Quoique Alfresco essai de le faire pour Sharepoint).

De cette manière, je n’ai pas beaucoup de difficulté à dire que Office a un écosystème aussi gros que le Web, du moins en entreprise. Vous pourriez faire supporter par OpenOffice les standards d’accessibilité pour les connecter au système de texte à voix, ce dernier va probablement mieux marcher avec Word et Windows, qui ont leur propre standard. (Remarque, j’ai peut-être tort et je n’ai pas vérifié, je suis blogueur, pas journaliste, mais j’expose ceci pour faire suivre un raisonnement, pas représenter la réalité dans ses détails). À la maison, moins de choses nous obligent à utiliser Word. À part échanger des documents avec le bureau. C’est un format d’échange de documents passablement utilisés. Mais on peut utiliser autre chose, OpenOffice, ou des documents purement Web, dans certains cas éloignés des PDFs.

Office a été choisi par beaucoup de monde et je suis pas mal certains que nous sommes avec pendant assez longtemps encore. (Ça ne change pas qu’au niveau interface, il est certainement très correct et encore pas mal mieux que Google docs, qui lui a son propre écosystème).

Quand vous choisissez un produit, une solution, vous vous ploguez sur son écosystème. Il est fort possible que plein d’autres décisions soient influencées par cet écosystème. Si, par exemple, tous les éléments de cet écosystème rendent plus complexe et plus coûteuse vos opérations au jour le jour et que venu le jour où les limites de votre patience sont dépassés vous risquez de souffrir (votre portefeuille et votre mental probablement aussi). Placer une entreprise dans un écosystème, c’est comme de mettre une grenouille dans l’eau et de la chauffer tranquillement. Il vaut mieux s’assurer que la température cible ne soit pas fatale.

C’est la grosse question, l’éléphant dans la salle de réunion, pour les outils du cloud computing aussi. Les gens ont encore peur de cet écosystème par contre, et il n’est pas tout à fait évolué, trop Mammouth encore. Mais quand tout le monde va avoir donné ses données à un fournisseur (probablement qu’il y en aura un qui sortira du lot, comme Microsoft l’a fait auparavant), ce sera difficile de se sortir de son pouvoir.

En gros, si les morceaux de l’écosystème ne sont pas déploguables et ne respectent pas des standard ouvert, vous aurez des problèmes lors des mises à niveau et des remplacements. Les coûts risquent d’être élevés. Mais vous avez le choix, je ne les comprends pas encore, mais il doit y avoir des avantages à choisir des standards opaques. En fait oui, il y a des avantages : un certain nombre de choses fonctionnent out of the box. Vous ne partez pas de rien.

Mais toute cette intégration va à l’encontre de la compartimentation des outils logiciels, fondement des architecture orientés services. Quand on réussit à avoir une vraie architecture orientée services (ou plutôt dans le cas des contenus standardisé (ouvertement) une architecture orientée ressources, c’est plus facile de choisir une composant qui respecte le standard et choisir celui qui est le meilleur et non celui-qui vient avec la solution ou un de ceux qui fonctionne avec l’écosystème et qui est fortement intégré lui aussi. Les interfaces utilisateurs des outils se ventant d’être des architectures orientés services ont tendances à ne pas respecter la philosophie de base, mais bon je sors du sujet (il y en avait un ?)

On ne choisi pas le meilleur produit, on choisi le meilleur qui s’intègre avec notre architecture. Par contre, si on suivait des standards ouverts simples (je dis simples, parce qu’il y a des standards ouverts foutaisement compliqués), on aurait plus de choix. (Des fois trop c’est comme pas assez, mais bon…)

Personnellement, je pense que le HTML (même le 5) est trop mal foutu pour créer une base à un nouvel écosystème. Par contre je pense que les navigateurs sont la base de l’écosystème du cloud computing (côté client en tout cas, regardez, je parlais de Word, un logiciel client, c’est pourtant probablement l’outil qui a le plus d’impact sur les architectures d’entreprise et ça me surprendrait qu’ils soient présent dans les graphiques d’architecture, remarquez, moi non plus je ne le mets pas, il est comme on peut dire implicite). Non, je retire ce que j’ai dit, HTML est assez mal foutu pour faire parti d’un écosystème complexe, .doc a bien réussi, c’est clair que HTML peut le faire aussi. Il faut juste bien définir tous ses quirks et tous ses bogues et ses mauvaises manières de faire et on pourra bâtir n’importe quoi dessus, y compris des patentes mal faites et épouvantables, mais qui vont fonctionner suffisamment bien pour nous faire sauver plus de temps qu’il nous en fait perdre. Mouaip, c’est bien ce que HTML 5 est en train de faire hein? Là voilà la recette secrète de Google, définir les bogues pour pouvoir bien construire par dessus!

C’est drôle, parce qu’il faut regarder la fondamentale inertie des systèmes informatiques pour bien comprendre toute l’affaire.

J’ai un pool énorme de documents mal foutu (en .doc ou .html) et je veux les garder utilisables dans le futur (pérennité), et je veux même en créer d’autres de la même manière parce que j’y suis habitué. Je veux aussi créer un paquet de trucs qui les utilise parce que les contenus de tous ces documents sont la source de l’intelligence que je veux utiliser.

En fait, ce qui fait qu’il est difficile de ne plus utiliser l’écosystème Word, ce n’est pas ou peu le format .doc, mais bien les couches applicatives par dessus. De la même manière, on pourrait utiliser un format libre et ouvert (mettons comme le HTML) le rendre suffisamment moche pour avoir besoin de créer des couches par dessus pour faire du vrai travail et ensuite c’est cette couche sur lequel un écosystème se créer et qui ensuite peut forcer à utiliser certains produits faisant parti de cet écosystème. Il faudrait que cette couche par dessus soit aussi ouverte et standardisée que celle en dessous et n’appartienne à aucun revendeur. En fait, lorsqu’on travaille avec des outils de portail, c’est un peu aussi ce qui se passe. Pour être capable de faire fonctionner la personnalisation (comme exemple les boîtes minimisables dans un portail) on ajoute un paquet de javascript dont l’utilisation se fait par génération (outils de portlets de base, JSF sur les portails Java, ou encore du .net comme les Web parts de Sharepoint).

Ces morceaux s’intégrent mal au concept de flux de documents et sont difficilement personnalisables (je parle en termes de programmation CSS) et il faut utiliser les outils des revendeurs au lieu des standards HTML et CSS que l’on serait supposé utiliser normalement. Et je ne parle pas des problèmes que cela cause aux outils d’accessibilité, parce que ceux-ci sont plogués sur le standard de la technologie de base et non pas celle de la couche au dessus. Quoique cela pourrait changer. En fait j’imagine un jour ou l’on pourrait ploguer une technologie d’assistance à l’une de ces couches applicatives au lieu de HTML et rendre cette couche plus accessible que le HTML lui même. Ce serait vraiment Mal de faire cela et j’espère n’avoir donné l’idée à personne. Par contre, j’ai l’impression que ce serait pour le moins très compliqué…

Les outils de portails n’ont pas tellement bien fonctionné en industrie sauf dans les cas où l’on met l’effort nécessaire (c’est pourquoi ceux qui comprennent que mettre beaucoup d’énergie et de gouvernance dans un projet portail d’entreprise (et de comprendre leurs limitations et leurs forcent) finissent par réussir à avoir qqch de fonctionnel et qui réponds aux besoins, je le sais j’ai réussi deux fois dans ma carrière à contribuer à faire marcher Websphere Portal, et là je vais peut-être m’attaquer à Sharepoint - watch this space).

Pour dire que si l’on veut gagner les coeurs de tout le monde, pas juste les architectes d’entreprise, il va falloir trouver une couche applicative par dessus le HTML qui est intéressante pour les développeurs autant pour les technos propriétaires que libres. Attention, la techno elle-même pourrait être libre et ça ne changerait rien, si elle se plogue super facilement aux services de qqun (du cloud computing tiens!) et qu’elle facilite l’appropriation des données (et c’est là le champs de bataille) on va tous être pris à utiliser cet écosystème dans le futur. Dans un autre ordre d’idée, même si tout le monde pourrait revendre par exemple JBoss, personne le fait parce que l’expertise du produit appartient à une seule compagnie. Si la création elle même de la couche applicative est suffisamment complexe, pas personne d’autres que son créateur va pouvoir se l’approprier. Pour qu’elle soit complexe, cela va prendre une couche de base moche et mal foutue, c’est-à-dire HTML + CSS + Javascript + DOM.

Cette pattente là super compliqué, mais facile à utiliser sera accessible par trois morceaux de technologies : les navigateurs (équivalent de Word), les moteurs de recherches (le système d’exploitation) et les outil de cloud computing (l’équivalent de toutes les applications qui font parti de l’écosystème). (Bon ok, ma comparaison est bouetteuse, mais bon… je voulais montrer un point). Cette couche applicative devra être aussi facile d’utilisation que Visual Basic si on veut qu’elle réussisse (je pense que Visual Basic est l’une des raisons pourquoi l’écosystème Word est si grand en ce moment, mettons que c’est .NET maintenant, une très bonne évolution).

La même raison pourquoi le format .doc est si mal foutu, accable le HTML, le don’t break the Web, ou en français la rétrocompatibilité. Aussi le pave the cowpath, ou encore en français, le continuer à faire les mêmes erreurs parce que c’est plus facile. (Bon, je l’ai dit ce que je pensais des orientations du WG de HTML et pourquoi je ne me sens pas capable d’y participer intelligemment et positivement).

XHTML a essayé de briser ce cercle vicieux et à échoué lamentablement, je dirais qu’à cause de manque de support de application/xml+xhtml des outils de l’écosystème Word (les gestionnaires de contenus où le copy paste Word est mandaté, à commencer par Frontpage). Ben oui, encore Word, on est chanceux que l’encodage de base du Web ne soit pas Windows-1252.

Il faudrait donc, que quelqu’un crée cette couche avant qu’un revendeur le fasse, la rende facilement utilisable avec un support génial chez tous les éléments de l’écosystème et out-Microsfter Microsoft et Google. Je pensais que HTML5 serait cette technologie et qu’on aurait pas besoin de créer une couche applicative je suis de moins en moins certain que c’est possible. Je pense que HTML 5 + CSS 4 + Javascript x devraient avoir des composants natifs qui font la même chose qu’un GWT, un JSF ou un ASP.NET et standards + un mapping avec un langage côté serveur qui remplacerait la partie vue des JSP, ASP et PHP de ce monde. (Imaginez, le langage de vue, (dans le sens modèle vue contrôleur) serait le même que vous travailliez en Java, en PHP, en C# ou en Ruby… ça ça serait cool! Pour voir à quoi je pense que ce langage devrait ressembler, regarder la technologie Facelets (ça se plogue avec JSF). Mais pour faire cela, ça prendrait de la vision et beaucoup beaucoup beaucoup d’énergie et d’argent, du genre à ce qui a servi à créer Java dans les années 90s.

Tout ça aussi pour dire que pour sortir IE 6 des entreprises (et par conséquent Windows XP) va falloir beaucoup d’effort encore et que cela va prendre du temps! et que pour faire mieux que HTML 5 faudrait encore plus d’efforts et de temps (et probablement une vision moins fermée du Web que celle des revendeurs de navigateur Web) ! Finalement Karl a raison, nous sommes tous dans nos grottes.

2009-07-02

Discussion aux RMLL autour des applications/données libres

2009-07-02 David Larlet - BioloGeek.com - xmlfr

Sous le titre un peu provocateur L’inutilité des logiciels libres à l’heure du Web 2.0, j'aurais la chance de pouvoir m'exprimer sur le thème suivant :

Libristes convaincus, où stockez-vous vos données ? N’êtes-vous pas en train de donner bien volontiers d’une main ce que vous vous acharnez à récupérer de l’autre ? Comment le Libre peut-il encore tirer son épingle d’un jeu qui suit actuellement les règles de Google, Facebook, Amazon & Co ?

C'est à Nantes, le samedi 11 juillet et ça commence à 15h mais il y a plein de confs super intéressantes toute la semaine donc n'hésitez pas à passer une partie de vos vacances dans notre merveilleuse Bretagne (oui j'ai un quart breton, ce qui explique certaines choses. Ou pas.) J'y serais dès le vendredi si vous voulez discuter de choses et d'autres :-).

Logo biologeek Discussion aux RMLL autour des applications/données libres a été rédigé par David Larlet pour biologeek.com et a été originellement posté le 02 juillet 2009. À part exceptions, c'est ©2004-2009 David Larlet et sous licence (presque) libre autorisant la reproduction, la distribution et la modification sous certaines conditions. Veuillez les respecter.

Améliorer les temps de réponse des requêtes PostgreSQL avec EXPLAIN

Un des pièges de SQL est que c'est un langage de haut niveau. Le rapport entre la commande qu'on tape et le travail que doit faire la machine est beaucoup moins direct et beaucoup plus dur à saisir qu'avec l'assembleur. Il est donc fréquent qu'une requête SQL qui n'aie pas l'air bien méchante prenne des heures à s'exécuter. Heureusement, PostgreSQL dispose d'une excellent commande qui explique, avant même qu'on exécute la commande, ce qu'elle va faire et ce qui va prendre du temps.

Un excellent exposé d'introduction est Explaining EXPLAIN mais, uniquement avec les transparents, c'est un peu court. Voyons des exemples d'utilisation d'EXPLAIN sur la base de données de StackOverflow.

Je commence par une requête triviale, SELECT * FROM Votes et je la fais précéder de EXPLAIN pour demander à PostgreSQL de m'expliquer :

so=> EXPLAIN SELECT * FROM Votes;
                           QUERY PLAN                           
----------------------------------------------------------------
 Seq Scan on votes  (cost=0.00..36658.37 rows=2379537 width=16)
(1 row)
On apprend que PostgreSQL va faire une recherche séquentielle (Seq Scan), ce qui est normal, puisqu'il faudra tout trouver, que 2379537 tuples (lignes de la table SQL) sont à examiner. Et que le coût sera entre... zéro et 36658,37. Pourquoi zéro ? Parce que PostgreSQL affiche le coût de récupérer le premier tuple (important si on traite les données au fur et à mesure, ce qui est souvent le cas en OLTP) et celui de récupérer tous les tuples. (Utiliser LIMIT ne change rien, PostgreSQL calcule les coûts comme si LIMIT n'était pas là.)

Et le 36658,37 ? C'est 36658,37 quoi ? Pommes, bananes, euros, bons points ? Ce coût est exprimé dans une unité arbitraire qui dépend notamment de la puissance de la machine. Avant de lire toute la documentation sur le calcul des coûts, faisons une autre requête :

so=> EXPLAIN SELECT count(*) FROM Votes;
                             QUERY PLAN                              
---------------------------------------------------------------------
 Aggregate  (cost=42607.21..42607.22 rows=1 width=0)
   ->  Seq Scan on votes  (cost=0.00..36658.37 rows=2379537 width=0)
(2 rows)
Cette fois, le coût du premier tuple est le même que le coût total, ce qui est logique, puisque les fonctions d'agrégation comme count() nécessitent de récupérer toutes les données.

Les coûts qu'affiche EXPLAIN ne sont que des coûts estimés, sans faire effectivement tourner la requête (donc, EXPLAIN est en général très rapide). Si on veut les temps réels, on peut ajouter le mot-clé ANALYZE :

so=> EXPLAIN ANALYZE SELECT * FROM Votes;
                                                    QUERY PLAN                                                     
-------------------------------------------------------------------------------------------------------------------
 Seq Scan on votes  (cost=0.00..36658.37 rows=2379537 width=16) (actual time=0.042..3036.302 rows=2379537 loops=1)
 Total runtime: 5973.786 ms
(2 rows)
Cette fois, on a le temps effectif, trois secondes. On peut en déduire que, sur cette machine, l'unité de coût de PostgreSQL vaut environ 0,08 milli-secondes (3036,302 / 36658,37). Sur un serveur identique, mais avec des disques de modèle différent et un autre système de fichiers, on arrive à une valeur quasiment identique. Mais sur un simple portable, je mesure un facteur de 0,5 milli-secondes par unité de coût.

De toute façon, il faut faire attention : ce facteur d'échelle dépend de beaucoup de choses, à commencer par les réglages du SGBD. Est-ce que ce ratio de 0,08 milli-secondes peut nous aider à prévoir le temps d'exécution d'une requête ? Voyons une requête plus compliquée qui compte le nombre de votes ayant eu lieu dans les 24 heures ayant suivi le message :

so=> EXPLAIN SELECT count(votes.id) FROM votes, posts WHERE votes.post = posts.id AND 
so->                             votes.creation <= posts.creation + interval '1 day';
                                   QUERY PLAN                                    
---------------------------------------------------------------------------------
 Aggregate  (cost=147911.94..147911.95 rows=1 width=4)
   ->  Hash Join  (cost=31161.46..145928.99 rows=793179 width=4)
         Hash Cond: (votes.post = posts.id)
         Join Filter: (votes.creation <= (posts.creation + '1 day'::interval))
         ->  Seq Scan on votes  (cost=0.00..36658.37 rows=2379537 width=12)
         ->  Hash  (cost=15834.65..15834.65 rows=881665 width=12)
               ->  Seq Scan on posts  (cost=0.00..15834.65 rows=881665 width=12)
(7 rows)
PostgreSQL affiche un coût de 147911,95 soit 11,8 secondes. Et le résultat effectif est :
so=> EXPLAIN ANALYZE SELECT count(votes.id) FROM votes, posts WHERE votes.post = posts.id AND 
                            votes.creation <= posts.creation + interval '1 day';
                                                            QUERY PLAN                                                             
-----------------------------------------------------------------------------------------------------------------------------------
 Aggregate  (cost=147911.94..147911.95 rows=1 width=4) (actual time=15125.455..15125.456 rows=1 loops=1)
...
soit 15 secondes au lieu des 11 prévues, ce qui n'est pas trop mal, pour une fonction de coût qui agrège beaucoup de choses différentes.

Que voit-on d'autre sur la sortie de EXPLAIN pour cette requête ? Que les coûts s'additionnent (regardez bien l'indentation des lignes commençant par -> pour voir comment faire l'addition). La recherche séquentielle la plus interne (sur la table Posts) coûte 15834,65, le hachage coûte le même prix (il n'a rien ajouté), l'autre recherche séquentielle (sur la table Votes) a un coût de 36658,37 et ces deux coûts vont s'ajouter, ainsi que le filtrage et le test de jointure, pour donner 145928,99, le coût de la jointure. Ensuite, un petit coût supplémentaire restera à payer pour l'agrégat (count()) nous emmenant à 147911,95.

L'addition des coûts se voit encore mieux sur cette requête :

so=> EXPLAIN SELECT count(votes.id)*100/(SELECT count(votes.id) FROM Posts, Votes 
so(>                                 WHERE Votes.post = Posts.id) AS percent
so->        FROM votes, posts WHERE 
so->                    votes.post = posts.id AND 
so->                    votes.creation > (posts.creation + interval '1 day')::date;
                                             QUERY PLAN                                             
----------------------------------------------------------------------------------------------------
 Aggregate  (cost=287472.95..287472.97 rows=1 width=4)
   InitPlan
     ->  Aggregate  (cost=133612.15..133612.16 rows=1 width=4)
           ->  Hash Join  (cost=30300.46..127663.31 rows=2379537 width=4)
                 Hash Cond: (public.votes.post = public.posts.id)
                 ->  Seq Scan on votes  (cost=0.00..36658.37 rows=2379537 width=8)
                 ->  Hash  (cost=15834.65..15834.65 rows=881665 width=4)
                       ->  Seq Scan on posts  (cost=0.00..15834.65 rows=881665 width=4)
   ->  Hash Join  (cost=31161.46..151877.84 rows=793179 width=4)
         Hash Cond: (public.votes.post = public.posts.id)
         Join Filter: (public.votes.creation > ((public.posts.creation + '1 day'::interval))::date)
         ->  Seq Scan on votes  (cost=0.00..36658.37 rows=2379537 width=12)
         ->  Hash  (cost=15834.65..15834.65 rows=881665 width=12)
               ->  Seq Scan on posts  (cost=0.00..15834.65 rows=881665 width=12)
(14 rows)

dont le temps d'exécution effectif est de 30 secondes, très proche des 23 secondes calculées en multipliant le coût total de 287472,97 par le facteur d'échelle de 0,08 millisecondes.

Plusieurs essais avec des bases très différentes montrent que le facteur d'échelle (la valeur en milli-secondes d'une unité de coût) est plutôt stable. Voici un résultat avec la base de DNSmezzo :

dnsmezzo2=> EXPLAIN ANALYZE SELECT DISTINCT substr(registered_domain,1,43) AS domain,count(registered_domain) AS num FROM DNS_packets WHERE file=3 AND NOT query AND rcode= 3 GROUP BY registered_domain ORDER BY count(registered_domain) DESC;
                                                                            QUERY PLAN                                                                            
------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Unique  (cost=496460.23..496460.31 rows=10 width=12) (actual time=41233.482..42472.861 rows=234779 loops=1)
   ->  Sort  (cost=496460.23..496460.26 rows=10 width=12) (actual time=41233.478..41867.259 rows=234780 loops=1)
         Sort Key: (count(registered_domain)), (substr(registered_domain, 1, 43))
         Sort Method:  external merge  Disk: 11352kB
         ->  HashAggregate  (cost=496459.91..496460.06 rows=10 width=12) (actual time=38954.395..39462.324 rows=234780 loops=1)
               ->  Bitmap Heap Scan on dns_packets  (cost=197782.55..496245.34 rows=42914 width=12) (actual time=34594.268..38306.833 rows=250006 loops=1)
                     Recheck Cond: ((rcode = 3) AND (file = 3))
                     Filter: (NOT query)
                     ->  BitmapAnd  (cost=197782.55..197782.55 rows=87519 width=0) (actual time=34590.468..34590.468 rows=0 loops=1)
                           ->  Bitmap Index Scan on rcode_idx  (cost=0.00..74228.75 rows=1250275 width=0) (actual time=28144.654..28144.654 rows=1290694 loops=1)
                                 Index Cond: (rcode = 3)
                           ->  Bitmap Index Scan on pcap_idx  (cost=0.00..123532.10 rows=2083791 width=0) (actual time=6393.187..6393.187 rows=2233781 loops=1)
                                 Index Cond: (file = 3)
 Total runtime: 42788.863 ms
(14 rows)

RFC 1498: On the Naming and Binding of Network Destinations

Les discussions d'architecture des réseaux à l'IETF ou dans d'autres communautés techniques achoppent souvent sur le vocabulaire. Qu'est-ce que le nom d'une machine ? Qu'identifie t-il réellement ? La clé publique SSH d'une machine est-elle un nom ? D'ailleurs, faut-il identifier les machines ? Pourquoi pas les processus ? Ou les utilisateurs ? Et l'adresse ? Quel est son statut ? http://www.foo.example:8080/toto est-il une adresse bien qu'il inclus un nom ? Il ne s'agit pas uniquement de pinaillage philosophique. C'est en partie à cause du flou sur les concepts que les discussions d'architecture tournent en rond et s'éternisent.

D'innombrables documents, dont ce RFC, ont été produits pour tenter de clarifier la situation. Mais aucune terminologie cohérente n'a été adoptée. Notre RFC 1498 est donc une étape, une des plus souvent citées, dans cette longue liste. Quels sont ses points essentiels ? (Attention si vous distribuez ce document, c'est un des rares RFC qui a une licence qui n'autorise pas une distribution libre.)

Le RFC essaie d'appliquer les principes des systèmes d'exploitation aux réseaux. Les systèmes d'exploitation, eux aussi, doivent identifier les fichiers, les utilisateurs, les disques, les partitions, les parties de la mémoire, etc. Le RFC reprend la terminologie classique (mais très peu appliquée en pratique) de John Shoch, que tous les étudiants des années 1980 et 1990 ont apprise par cœur (Shoch, « A note on Inter-Network Naming, Addressing, and Routing », une copie est disponible sous le nom d'IEN 19 ) :

  • Un nom identifie ce qu'on veut,
  • Une adresse identifie où cela se trouve,
  • Une route identifie comment y aller.
À noter que cette terminologie, dans notre RFC, ne ne fait pas référence à la forme des identificateurs. Ainsi, un nom peut aussi bien être une suite de lettres ayant un sens qu'une série de chiffres opaques (contrairement à une vision trop simpliste selon laquelle les noms sont juste une forme conviviale des adresses). La terminologie de ce RFC ne sépare donc pas les identificateurs qu'un humain peut traiter et ceux qu'une machine peut traiter.

On peut voir tout de suite (ce point ne figure pas dans le RFC) que cette terminologie ne s'applique pas du tout à l'Internet. Une adresse IP, par exemple, n'identifie pas une position dans la topologie de l'Internet, puisqu'il existe des adresses PI, il y a l'anycast, etc. Un URL est un mélange de nom (la ressource que je veux) et d'adresse (puisqu'il indique où trouver la ressource, avec pas mal de détails de bas niveau comme le numéro de port).

J. Saltzer, donc, procède autrement. Il distingue quatre types d'objets qu'on peut avoir envie d'identifier :

  • Les services et les utilisateurs. Les services sont, par exemple, un service de synchronisation d'horloge.
  • Les nœuds du réseau (en gros, les machines).
  • Les points d'attachement au réseau. Ce sont les endroits où une machine se connecte et, dans la terminologie de Shoch, ce sont les adresses. Une machine IP multihomée aura ainsi plusieurs points d'attachement au réseau.
  • Les chemins (ou routes) entre points d'attachement.
Et Saltzer insiste sur le fait qu'un nom peut prendre plusieurs formes (par exemple une binaire sur le câble et une lisible pour les documentations et les fichiers de configuration), sa nature ne dépend pas de sa forme.

Là encore, même si ce point n'est pas abordé dans le RFC, on peut s'amuser à chercher une correspondance entre ces types et les identificateurs utilisés sur l'Internet :

  • Les services ou utilisateurs sont typiquement identifiés par un URI (ou parfois par une forme dégénérée, uniquement le nom de domaine, comme lorsqu'on dit "fr.wikipedia.org" au lieu de "http://fr.wikipedia.org/"),
  • Les nœuds n'ont pas vraiment d'identificateurs, à part dans certains protocoles comme SSH et HIP,
  • Les points d'attachement sont vaguement identifiés par les adresses IP mais des techniques comme l'anycast ou des mécanismes d'allocation comme les adresses PI brouillent sérieusement les choses (avec l'anycast, l'adresse IP est plutôt un identificateur de service),
  • Les chemins sont la liste des adresses IP des routeurs traversés, celle qu'affiche traceroute.

Pour notre RFC, les quatre types d'objets cités ci-dessus ont chacun une identité. Cette identité se maintient même si l'objet change ses liaisons avec les autres objets. Ainsi, un service ne devrait pas changer de nom lorsqu'il migre d'une machine à une autre, une machine (un nœud) ne devrait pas changer de nom lorsqu'il migre d'un point d'attachement à un autre, etc.

L'essentiel, donc, dit le RFC, est la liaison (binding) qui est faite entre un type d'objets et un autre. Ainsi, il doit exister un mécanisme de découverte qui permet de faire la liaison entre un service et la machine sur laquelle il opère. Un autre mécanisme de liaison permet de passer de la machine au point d'attachement. Un dernier fait passer du point d'attachement au chemin. Chacun de ces mécanismes doit également effectuer un choix, car il existe souvent plusieurs réponses.

Dans l'Internet actuel, en l'absence de vrai identificateur de machine, il y a plutôt un mécanisme unique, le DNS, qui sert aux deux premiers rôles. BGP, lui, prend en charge le dernier. (Ils ne sont pas cités dans le RFC.)

Il existe aussi parfois un autre mécanisme préalable aux autres, celui qui permet de trouver l'identificateur du service, c'est par exemple un moteur de recherche. La question est discutée dans le RFC, qui note qu'il n'y a pas toujours une liaison explicite, dans une table, entre l'idée humaine d'un service et son nom formel. Ainsi, changer un nom formel est très difficile (voir l'excellent article Cool URIs don't change).

Le RFC discute ensuite quelques cas de réseaux réels, en tenant de les mettre en correspondance avec les notions de types d'objets et de liaisons. Dans le cas d'Ethernet, l'adresse MAC est très mal nommée puisqu'elle est constante et ne dépend pas de la localisation. C'est en fait plutôt un nom et elle est utilisée comme telle par certains logiciels, par exemple pour le contrôle de la licence d'utilisation. Le cas est en fait plus complexe, par exemple parce qu'une machine a deux cartes Ethernet et peut se connecter à un réseau Ethernet en deux points. Les réseaux réels n'ont pas été conçus selon une architecture propre...

Un autre exemple est le vieux NCP où l'identificateur appelé « nom » était en fait dépendant de la position de la machine. En l'absence de mécanisme de résolution commun, la liaison entre un nom et un point d'attachement était câblée en dur dans toutes les machines du réseau. Changer une machine de place imposait donc de changer son nom... ou de mettre à jour toutes les machines du réseau, ce qui n'est pas mieux. Saltzer argumente donc que la nature d'un identificateur dépend de l'existence ou nom d'un mécanisme de résolution, et donc de l'existence d'une vraie liaison avec les identificateurs des autres types d'objet (Un autre exemple aurait pu être Fidonet.)

Donc, pour résumer ce brillant document :

  • Il existe plusieurs types d'objet à identifier,
  • Un mécanisme de liaison est nécessaire pour passer des identificateurs d'un type aux identificateurs d'un autre type,
  • Les réseaux réels comme l'Internet ne collent jamais parfaitement aux modèles.

RFC 1122: Requirements for Internet Hosts - Communication Layers

Compagnon du RFC 1123, ce document normalise ce que toute machine terminale (host, par opposition à routeur) connectée à l'Internet devrait savoir. Le RFC 1123 fixait les règles des « couches hautes » (notamment la couche application), notre RFC s'attaque aux « couches basses », notamment réseau et transport).

Le résultat est un document épais (116 pages), décrivant en détail tout ce qu'IP et TCP doivent faire sur une machine terminale (les routeurs sont, eux, traités dans le RFC 1812). La section 1.4 note que les discussions sur ce RFC avaient duré dix-huit mois et généré trois méga-octets de courrier, ce qui était considérable à l'époque mais est moins qu'un document MS-Word d'une page d'aujourd'hui.

Ce RFC n'avait pas pour but de changer les normes existantes (comme le RFC 791 pour IPv4 ou RFC 793 pour TCP) mais de les résumer et les préciser. Comme le note la section 1, « une mise en œuvre de bonne foi des protocoles TCP/IP, faite en lisant les normes, ne doit différer de ce RFC 1122 que par des détails ».

Aujourd'hui, plusieurs de ses sections sont bien dépassées mais il reste la norme officielle, personne n'a eu le courage de mettre ce travail à jour.

Il n'est donc pas possible de résumer tout le RFC et j'ai donc sélectionné arbitrairement quelques points qui me semblaient intéressants.

La section 1.1 rappelle l'architecture de l'Internet et la section 1.1.1 revient sur la notion de machine terminale (host dans le RFC). La section 1.1.2 note notamment que :

  • L'Internet est un réseau de réseaux. Une machine terminale ne se connecte donc pas réellement à l'Internet, elle se connecte à un réseau connecté à Internet. Cette connexion se fait avec les mêmes protocoles, qu'on communique avec des machines du même réseau ou bien avec des machines lointaines. (La section 1.1.3 en donne une liste partielle, du protocole IPv4 pour les couches basses aux protocoles d'application comme telnet ou SMTP.)
  • Les routeurs (le RFC utilise encore souvent le vieux terme de « passerelle » - gateway - qui n'est plus utilisé aujourd'hui que pour les engins travaillant dans la couche 7) n'ont pas de mémoire, ils routent chaque paquet indépendamment des autres. Les machines terminales ont donc à faire tout le travail d'établissement et de maintien des connexions.
  • Le routage, par contre, ne doit être fait que par les routeurs. Il doit y avoir une stricte séparation entre machines terminales et routeurs. (Certains systèmes d'exploitation comme les Unix BSD routaient autrefois automatiquement dès qu'ils étaient connectés à deux réseaux. La section 1.1.4 explique pourquoi c'est une mauvaise idée. Voir aussi la discussion à la fin de la 3.3.4.2)

La section 1.2 pose les grands principes comme le célébrissime Principe de Robustesse (section 1.2.2), « Soyez tolérant pour ce que vous recevez et exigeant pour ce que vous envoyez », principe qu'on trouve dans plusieurs autres RFC. Ainsi, un programmeur doit résister à la tentation d'exploiter les cas spécifiques d'une norme, pour éviter de perturber les autres implémentations.

La section 1.2.4 détaille la configuration des machines terminales. Elle se faisait entièrement à la main à l'époque. Aujourd'hui, avec la disponibilité fréquente de DHCP (RFC 2131), il vaut mieux oublier cette section et lire le dernier document sur la configuration, le RFC 5505.

Ensuite, le RFC suit le modèle en couches (section 1.3.1), ainsi que le vocabulaire spécifique de chaque couche pour désigner une unité de transmission de données sur le réseau (frame pour la couche 2, packet ou datagram - selon que la fragmentation aie eu lieu ou pas - pour la couche 3, message - segment pour TCP - pour la couche 4).

La section 2 concerne donc la couche de même rang. C'est ici que se trouve ARP (section 2.3.2, qui insiste que l'expiration des entrées du cache ARP est obligatoire, ce qui n'était pas assez clair dans le RFC 826). C'est aussi dans cette section (en 2.3.3) que l'on rappelle que l'encapsulation normale des paquets IP sur Ethernet est celle du RFC 894, où le troisième champ de l'en-tête Ethernet est le type du protocole de couche 3 (0x800 pour IPv4) pas celle, bien plus complexe, du RFC 1042, où la longueur de la trame se trouve à cet endroit.

Évidemment, la section 3, consacrée à la couche équivalente, est bien plus longue. Elle porte aussi son âge, par exemple en consacrant une section 3.2.1.3 aux classes d'adresse, supprimées depuis.

Parmi les nombreux points abordés, le choix du TTL à mettre dans les paquets (section 3.2.1.7). Une machine terminale ne doit pas émettre un paquet avec un TTL déjà à zéro. La mise en œuvre d'IP doit permettre aux applications de fixer le TTL (sur une machine Posix, cela se fait normalement avec (), voir « Tester quels bits de l'en-tête IP on peut changer »).

Mais il y a aussi des exigences du RFC qui ne sont plus du tout suivies aujourd'hui. La section 3.2.1.8 obligeait toute mise en œuvre d'IP à permettre le routage par la source alors que, pour des raisons de sécurité, quasiment plus aucun routeur ne l'accepte.

ICMP (RFC 792) faisant conceptuellement partie de la couche 3, il a droit à une sous-section de la section 3. Elle rappelle par exemple qu'un paquet ICMP d'erreur ne doit jamais être envoyé lorsque le paquet original était lui-même un paquet ICMP d'erreur, pour éviter les boucles. (On lit souvent cette règle énoncée comme « Un paquet ICMP ne doit jamais être envoyé en réponse à un paquet ICMP », ce qui est complètement faux, voir par exemple ping avec les ICMP echo, revus en section 3.2.2.6.)

Parmi les autres sujets abordés, la détection d'un routeur mort, qui ne transmet plus les paquets. Comme les machines terminales n'ont pas (ou plus) de protocole de routage (comme, par exemple, RIP), comment savent-elles que le routeur, en panne, est devenu un trou noir ? La méthode recommandée est, formellement, une violation du modèle en couches, mais c'est la seule qui marche dans tous les cas : les couches hautes doivent informer IP qu'elles ne reçoivent plus rien. (La section 3.3.1.4 est une passionnante discussion des autres options possibles. À lire par tout ingénieur qui s'intéresse aux réseaux.)

Le multihoming, la connexion d'une machine (ou d'un réseau) à plusieurs réseaux, a toujours été un problème difficile pour IP. La section 3.3.4 tente de fixer certaines règles. Par exemple, lors d'une réponse, l'adresse IP source de la réponse doit être l'adresse IP de destination où a été envoyée la question. Ou encore, une application cliente doit avoir la possibilité de choisir son adresse IP source (directive BindAddress de OpenSSH ou bien tcp_outgoing_address de Squid). Et que faire en l'absence de telles directives ? C'est l'objet de la section 3.3.4.3 qui demande de privilégier, si possible, une adresse source située dans le même réseau physique que l'adresse de destination (notez que le RFC 3684 a depuis fourni une solution plus générale à cette question de sélection d'adresse source, pour le protocole IPv6). Par exemple, une machine choisira comme adresse IP source 127.0.0.1 si elle doit contacter localhost et son adresse globale si elle doit contacter une autre machine.

Au sommet de la couche 3 se trouve l'interface avec la couche 4. La section 3.4 détaille les services que doit rendre cette interface. Par exemple, la couche 3 doit fournir un moyen de fixer (pour un paquet émis) et d'interroger (pour un paquet reçu) des paramètres comme le TTL ou le TOS (depuis rebaptisé DSCP par le RFC 2474). Cette section est rédigée sous forme d'une API virtuelle (les API de programmation réseau réelles ont suivi un autre modèle, mais fournissent les mêmes services, cf. le livre de Stevens). Cette API comporte des méthodes comme SEND(src, dst, prot, TOS, TTL, BufPTR, len, Id, DF, opt) (envoi d'un paquet en fixant chaque paramètre).

Finalement, un tableau synthétique, en section 3.5, résume tout ce que doit implémenter le programmeur qui réalise une mise en œuvre d'IP.

La couche 4 est ensuite traitée dans la section 4. Suivant le modèle en sablier, une machine connectée à Internet a un grand choix de couches 2 et de supports physiques, une seule couche 3, IP, et à nouveau un choix en couche 4. À l'époque de notre RFC, il n'y avait qu'UDP (RFC 768) et TCP (RFC 793). Depuis, plusieurs autres ont rejoint ces deux pionniers.

Parmi les exigences pour UDP, le RFC cite une forte recommandation d'activer la somme de contrôle (section 4.1.3.4). Celle-ci est en effet facultative en UDP et plusieurs protocoles ont souffert d'avoir cru qu'ils pouvaient s'en passer (notamment NFS et le DNS pour lequel la version 1 de Zonecheck testait que cette somme de contrôle était bien activée).

TCP est bien plus riche et fait donc l'option d'une section nettement plus longue, la 4.2. À l'époque comme aujourd'hui, il est le protocole de transport le plus utilisé.

Le RFC commence (section 4.2.2) par une discussions sur le rôle des ports, en rappelant que la seule distinction normalisée entre les ports est celle entre ceux inférieurs à 255 (services normalisés) et les autres. La distinction entre les ports privilégiés (inférieurs à 1024) et les autres n'est pas normalisée, en pratique, elle est spécifique à Unix. Le RFC ne s'oppose pas à cette distinction mais note à juste titre qu'elle ne vaut pas grand'chose en matière de sécurité puisque rien ne dit que la machine avec qui on correspond applique les mêmes règles. En outre, depuis la publication du RFC 1122, la vaste diffusion des ordinateurs fait qu'un éventuel attaquant a probablement sa propre machine, sur laquelle il est root. La très relative protection sur laquelle comptaient rlogin (en vérifiant que le port source était 513) et le DNS (qui utilisait à une époque lointaine un port source fixe, 53), ne vaut donc plus rien.

Il y a plein d'autres détails intéressants à couvrir comme l'option PUSH (section 4.2.2.2) dont le RFC rappelle qu'elle ne fournit pas un marquer de fin de message mais qu'elle indique juste un souhait que les données soient transmises « le plus vite possible » (TCP attend normalement un peu pour voir si d'autres données n'arrivent pas, cette optimisation, l'algorithme de Nagle est à nouveau discutée en section 4.2.3.4).

Finalement, un tableau synthétique, en section 4.2.5, résume tout ce que doit implémenter le programmeur qui réalise une mise en œuvre de TCP.

2009-07-01

5 ans : un petit défilé et 1984

Le titre de cet article est assez explicite, au moins pour son début : ce sont les 5 ans de Formats-Ouverts.org.

En utilisant un format court, je pourrais m'arrêter là, mais cela serait tout de même un peu trop court (et vous pourriez être décu-e-s).

En effet voilà l'occasion de faire un bilan avec quelques informations, mais sans tomber dans l'excès d'information (c'est un fin dosage à trouver).

Donc pour le premier jour de juillet, adoptons un des formats de l'été : le défilé. Il est militaire en juillet, mais aussi religieux, revendicatif, de mode ou de chars fleuris. Pour cet article, il sera textuel et triple : quelques chiffres, quelques réflexions et 1984...

Voilà pour ce qui est du titre et du début d'article que j'espère assez accrocheur (mais sans être aguicheur). Voyons maintenant défiler ces quelques informations :

Cela fait donc 5 ans que Formats-Ouverts.org (FOo en abrégé, format plus intime) a été lancé, une demi décennie... Une tranche de vie (numérique ou pas) d'un lustre (au sens des Romains). Vous aurez remarqué les 3 formats différents pour désigner les 60 mois écoulés (et voilà le quatrième !).

Entre le 1er juillet 2004 (un jeudi) et le 30 juin 2009 (un mardi), le total est de 1981 articles publiés, soit une moyenne de 33 articles mensuels... + 1 ! Ce + 1 n'est pas un intrus, il est volontaire (j'y reviendrai) et s'appelle Firefox 3.5 sorti le dernier jour de juin 2009.

L'idée de départ est restée tout au long des mois : 1 article par jour à propos des formats. L'objectif a même été dépassé : 1827 jours se sont écoulés et 1984 articles ont été publiés (celui-ci compris). Mais il serait plus exact d'écrire « 1 article en date de chaque jour », car un certain « décalage » a pu apparaître parfois entre la date indiquée dans l'article et la date réelle du calendrier...

Pour ce qui est du « à propos des formats », la petite crainte au départ était de ne pas avoir assez de matière : vous lisez bien... Elle a été totalement dissipée : l'actualité est (trop) riche en sujets sur les formats, et il y a bien plus de sujets non-publiés (mais notés sur papier ou dans un fichier) que d'articles en ligne. J'assume la déformation (!) en écrivant qu'il y a des formats partout !

Dans la même durée quinquennale, ce sont près de 100 interventions (conférences, cours, télé, chat, table ronde,...) que j'ai faites. Avec au final plus de 2000 heures de vol à piloter le site. Car cela représente du travail et du temps pour faire de la veille, noter, sélectionner puis écrire, sans oublier un volet essentiel : les sources. Cela signifie vérifier les informations, trouver le communiqué de presse (ou l'article) à l'origine de l'annonce, pour donner les références précises (et j'ai chaque fois une pensée pour les documentalistes et les archivistes dont c'est un aspect du travail).

Un mot sur les images : il y en a eu peu, moins de 1% des articles (soit une quinzaine) ! C'est le format texte qui a très largement primé.

Pour d'autres statistiques, il y a celles publiées chaque premier du mois. La vedette incontestée des articles est celui sur la définition des standarts ouverts dans la loi LCEN. Pour ce qui est d'un classement plus personnel, il est constitué de la dernière utilisatrice morte, du Conte du parapheur, du logement que l'on quitte, du Prisonnier d'une capsule, de Randy Pausch et de la Note de synthèse sur les liens hypertextes.

Si les « pas » vous intéressent, outre le pas assez de temps, il y a sans doute un pas assez de communication (ou pub ou push, comme vous voulez l'appeler) et le pas encore de livre (Mathieu, David, Chloé et Alexis le savent).

Côté technique et éditorial, il faut citer 3 noms : Dotclear (la version 1 depuis 5 ans), Wikipédia et Sylvain Lhullier (la version Sylvain depuis 5 ans aussi). Merci à eux : l'équipe de cet excellent logiciel qu'est Dotclear (et libre), le projet Wikipédia (que j'utilisais dès 2004, alors que le site n'était pas encore aussi logiquement incontournable) et Sylvain, grand maître des coulisses techniques.

La vie du site a connu des péripéties, parfois en lien direct avec des aspects personnels : un vol d'ordinateur en juillet 2005, une ligne téléphonique qui ne fonctionne pas à l'été 2006, un second vol d'ordinateur en septembre 2008. Sans oublier une liquidation judiciaire début décembre 2008.

Mais pourquoi 1984 ? Si cette question vous tracasse depuis la lecture du titre, la réponse est : comme 1984 !

Permettez moi tout d'abord une petite explication sous forme d'un petit calcul : 33 articles par mois, cela donne 1980 articles en 60 mois (les 5 ans). L'objectif était d'écrire l'article n°1984 pour cet anniversaire. Il manquait donc 4 articles. En ajoutant celui de la table de juillet, celui du bilan de juin et celui que vous lisez, cela ne faisait que 1983. Heureusement Firefox 3.5 est arrivé et a donné le 42e article de juin et le compte était bon !

Mais pourquoi arriver à 1984 articles pour ce bilan des 5 ans de Formats-Ouverts.org ? Parce que 1984. Relevez bien l'italique appliqué à ce nombre, comme déjà écrit plus haut. Il ne s'agit donc pas de l'année, mais d'un titre, celui du célèbre roman de Georges Orwell.

En 2009, pour ce cinquième anniversaire, l'impression se précise : 1984 semble assez présent... Les lois HADOPI ou LOPPSI, les fichiers Péricles ou Edwige, la surveillance des SMS ou des connexions, les cartes Navigo ou d'identité, le passeport biométrique, les log, le vote électronique, les données dans les nuages : ces sujets ne sont pas identiques mais peuvent constituer le grave revers de la puissance du numérique.

L'informatique (antique !) que j'ai commencé en 1992 à titre personnel, Internet que j'ai découvert en 1996 en me connectant pour la première fois, le mouvement du logiciel libre où j'ai plongé en 1998, le site Formats-Ouverts.org que j'ai co-lancé en 2004, tous ces univers n'étaient pas encore aussi enveloppés par des approches de filtrage, de traçage, de surveillance. Est-ce 1984 en 2009 ? Pas encore vraiment, mais les dangers existent. Avec comme garant des dérives et pour rester critique et vigilant, des formats ouverts (données et logiciels) et la formation et l'éducation des personnes (le meilleur métier du monde).

Cependant, malgré ce 1984, 1984 fois merci à toutes et à tous : pour utiliser les liens hypertextes, qui sont la base du Web et qui permettent d'accéder à Formats-Ouverts.org, de lire, de rétrolier, de commenter, de syndiquer, le tout sans aucune demande d'autorisation préalable. Bonne lecture, bonne diffusion et bonne utilisation. Vivent l'interopérabilité et les standards ouverts !

PS : Si certaines ou certains sont présents le jeudi 2 juillet au First Jeudi de Paris, ce sera l'occasion de boire un Perrier (parce que Perrier c'est FOo fou !). Ou alors à Nantes du 7 au 11, lors des 10e RMLL. Voire plus tard à l'occasion. Quant à la longueur du texte, il correspond un peu à l'importance de la date : on n'a pas tous les jours 5 ans !

Les précédents anniversaires de Formats-Ouverts.org :

Et sur Formats-Ouverts.org le 1er juillet :

Bilan de juin, le dernier mois...

2009-07-01 Thierry Stoehr - Formats-Ouverts.org - xmlfr, VieDuSite

Pour ce dernier mois de la cinquième année

Total mensuel : 42 ! Oui, 42 articles ont été publiés en juin 2009 (le soixantième mois) : un symbole (!) et un record, et avec des sujets comme la sélection ci-dessous si vous les avez manqués (dont 6 ont été publiés dans la dernière semaine) :

Pour les statistiques de juin

  • la table des 42 de juin, qui donne un total de 1981 articles ;
  • 3 conférences : Agen (le 6), Paris (Mandriva, le 20) et Paris (Fedora, le 27) ;
  • plus de 30 000 visiteurs différents (30 707) ;
  • plus de 135 000 visites (135 986) ;
  • près de 700 000 pages vues (687 137) ;
  • plus de 900 000 hits (890 445) ;
  • près de 30 Go de transfert (29,89).

Pour le palmarès des 6 articles les plus lus en juin

  1. Les normes et formats pour les photos d'identité
  2. LIFE et Playboy
  3. « Caramail sauvé »
  4. Le XML piégé
  5. Voilà le nouveau site du Premier Ministre !
  6. « Pourquoi les ordinateurs n'arrivent-ils pas à concurrencer les Post-it ? »

Le format habituel des articles à propos du mois écoulé se termine par Merci à... : ce ne sera pas le cas ici, car juin 2009 marquant la fin de la cinquième année, un article spécial 5 ans a été publié.

Et sur Formats-Ouverts.org le 1er juillet :

Table des articles de juillet 2009

2009-07-01 Thierry Stoehr - Formats-Ouverts.org - TableDesBillets

3 articles publiés pour juillet

1 dans Table des articles, 2 dans Vie du site

Table des articles de Formats-Ouverts.org :

2009-06-30

Firefox 3.5 est là, avec ses standards ouverts, dont la video !

La nouvelle version de Firefox est sortie le dernier jour de juin 2009 : donc en ce 30 (un mardi) voilà le navigateur Firefox 3.5 (le numéro 3.1 prévu initialement pouvait faire penser à un format de numéro Windows). Que retenir pour cette version ?

Il y a beaucoup de choses : techniques, économiques, sociologiques... mais aussi personnelles. Car il y a une certaine émotion à suivre « son » logiciel, utilisé depuis tant d'années, après les Netscape Navigator (pour Linux ou pas) des années 90 et les Firefox successifs... presque en parallèle de l'histoire (bien plus modeste !) de Formats-Ouverts.org (FOo) : le lancement de Firefox 1.0 en novembre 2004 (FOo avait 4 mois), puis Firefox 2.0 en octobre 2006 et Firefox 3.0 le 17 juin 2008. Sans oublier les 10 ans de Mozilla en mars 2008. Et voilà la version 3.5... la veille des 5 ans de FOo !

Formats-Ouverts.org traite à sa petite échelle des formats et fait la promotion des formats ouverts. Firefox s'appuie sur les standards ouverts du Web et en fait la promotion à l'échelle mondiale.

Enfin, s'il n'y avait qu'une chose à retenir dans la longue liste des améliorations pour les développeurs [1] ou pour les utilisateurs [2], c'est la video dans un format ouvert : après l'attente, elle est maintenant là !

En effet les formats Ogg Vorbis et Ogg Theora sont présents dans Firefox 3.5. Et ce sont des formats ouverts pour le son et surtout pour la video. Il a donc désormais pour la video « ouverte » un navigateur (et d'autres aussi) et des contenus (Dailymotion et Wikipedia par exemple). Les utilisateurs et les productions peuvent s'en emparer.

Bravo et merci à tout Mozilla (les Tristan, Paul, Pascal et tous les autres en Europe et dans le monde). Vive le Web ouvert grâce aux standards ouverts (et grâce entre autres à Firefox) !

Sources et liens :

Et sur Formats-Ouverts.org le 30 juin :

Des citations...

2009-06-30 Thierry Stoehr - Formats-Ouverts.org - Nonelectronique

...à propos de format, mais non-numérique (gras ajouté)

PIB « Un indicateur n'est jamais neutre, il intègre d'énormes options idéologiques. Non seulement il formate une vision du monde mais il tend à transformer la réalité : parce qu'il induit des politiques et que les énergies finissent par se concentrer et s'adapter à ces informations chiffrées. » Florence Jany-Catrice

Article A quand le bonheur intérieur brut ?, de Weronika Zarachowicz, le 17 juin 2009, Télérama n°3101, page 43, 2e colonne, http://www.telerama.fr/idees/a-quand-le-bonheur-interieur-brut,44144.php

TF1 (en 2008) « TF1 réfléchit. Elle a créé son propre laboratoire d'idées, « TF1 format », chargé d'inventer, comme son nom l'indique, de nouveaux formats. »

Article L'icône balayée par la tourmente TF1, de Emmanuelle Anizon, le 18 juin 2008, Télérama n°3049, page 40, 3e colonne

TF1 (en 2009) « Pendant des années, son équipe a eu comme objectif prioritaire de défendre son statut, de retarder les évolutions, de nier les ruptures socioculturelles et technologiques. Son ADN était fermé à la transformation. » Jean-Louis Missika

Article Il est moins une pour la Une, de Emmanuelle Anizon, le 17 juin 2009, Télérama n°3101, page 26, 2e colonne, http://television.telerama.fr/television/tf1-cherche-des-solutions-a-la-crise-desesperement,44015.php

Les émissions de télé « Aujourd'hui, les conditions économiques de la télévision sont telles que les chaînes françaises ne prennent plus de risques. Elles préfèrent reprendre des formats qui ont fait leurs preuves à l'étranger. Alors qu'il y a de très bons créateurs de jeux en France ! » Jacques Antoine

Article Tonton, une chanson !, de Richard Sénéjoux, le 20 mai 2009, Télérama n°3097, page 69, http://television.telerama.fr/television/tonton-une-chanson,43056.php

X femmes 2 : « Blanca Li, Anna Mouglalis, Tonie Marshall et Zoe Cassavetes déconstruisent le X, un genre ultraformaté », légende de l'illustration photo

Article X femmes 2, de Samuel Douhaire, le 24 juin 2009, Télérama n°3102, page 78

Et sur Formats-Ouverts.org le 30 juin :

Liens hypertextes : une note de synthèse

2009-06-30 Thierry Stoehr - Formats-Ouverts.org - xmlfr, Synthese

Texte destiné aux Services juridique, marketing, commercial (ou autres) et la Direction de votre site Web

Votre site indique dans ses Mentions légales, ou ses Conditions générales d'utilisation (CGU) qu'établir un lien hypertexte vers votre site demande une autorisation préalable, parfois même écrite et expresse.

Le texte ci-dessous regroupe les questions soulevées par cette approche et des conséquences possibles :

Les courriers électroniques : écrire l'adresse de votre site dans un courriel, c'est faire un lien vers lui. Toute personne qui diffuse de l'information ou qui fait de la veille ne pourra indiquer l'adresse de votre site qu'après demande d'autorisation et réponse favorable. Ou alors ne pas citer votre adresse sur les listes de diffusion ou à ses destinataires.

Les contributions sur des sites (forums, blogs, wiki...) et les chats : le simple fait d'écrire l'adresse de votre site dans des pages Web de commentaires établit un lien vers lui. C'est la même chose dans les messageries instantanées. Chaque auteur de commentaire et de messages doit donc demander l'autorisation préalable avant de vous citer. Chaque responsable de site Web, pour éviter tout problème, risque de supprimer les liens vers votre site.

Les signatures des courriers électroniques de vos employés : peuvent-ils indiquer l'adresse de votre site en plus de leurs coordonnées officielles ? Car écrire cette adresse établit un lien vers votre site. Ont-ils reçu l'autorisation préalable ou est-ce prévu dans leur contrat de travail ? Ou alors ils doivent tous demander l'autorisation et la recevoir tous.

Les documents bureautiques : de nos jours, quand on écrit une adresse de site Web dans un texte (articles, livres, rapports,...), dans un diaporama ou dans un tableur, cela établit un lien hypertexte vers le site mentionné. Chaque auteur de document doit donc penser à cette autorisation, ou ne pas vous citer.

Vos flux RSS : si votre site propose des flux RSS, cela signife que vous demandez aux internautes d'établir un lien vers la page de votre site qui les diffuse. Il faudrait indiquer sur la page des flux RSS que cela n'est pas contraire à la demande d'autorisation exigée pour les autres liens. Ou alors ne plus proposer de flux RSS.

Les signets, les favoris, les marque-pages (de son navigateur) et toutes les listes de sites : enregistrer l'adresse jugée intéressante de votre site signifie établir un lien vers lui. Partager ces adresses de sites est également possible. La demande d'autorisation de lien empêche le simple établissement de ses listes de sites.

Les moteurs de recherche : Google a-t-il reçu votre autorisation, ou Yahoo, ou Microsoft, ou Exalead, ou tous les moteurs de recherche ? Car ils donnent des réponses avec des liens qui mènent directement à vore site. La question leur a été ouvertement posée dans l'article précédent. Allez-vous demander à ce qu'ils ne proposent plus de lien car vous n'avez pas donner d'autorisation ? Et s'ils vous retirent de leurs réponses en appliquant à la lettre votre approche ?

Compléments : voici quelques liens vers des articles de Formats-Ouverts.org qui ont déjà traités de ce sujet des liens hypertextes.

Est-ce important ? Oui, car les liens hypertextes sont à la base du Web et Formats-Ouverts.org en a parlé dès sa création en juillet 2004 : premier article le 16 août (à propos des Jeux Olympiques d'Athènes). Mais il y a plus important, qui est encore plus le sujet de Formats-Ouverts.org : la question des formats, que ce soit pour vos données, pour vos logiciels et qui concerne par exemple vos archives, que vous soyez une structure récente ou pas. Ces formats sont-ils ouverts ou pas ?, telle est la question.

Et sur Formats-Ouverts.org le 30 juin :

Sur la légitimité des contenus générés par les utilisateurs

2009-06-30 Patrick Peccatte - Du bruit au signal (et inversement) - xmlfr, documentation, crowdsourcing, indexation sociale, redocumentarisation, travail collaboratif

[Première version le 30 juin 2009, dernière modification le 2 juillet 2009]

Le Web 2.0 est contributif. Les contenus générés par les utilisateurs constituent l'une de ses caractéristiques fondamentales. Dès leur apparition, on s'est interrogé sur la légitimité et la validité de ces contenus issus du crowdsourcing ainsi que sur l'absence d'autorités de référence lors de leur production. Ces interrogations qui prennent souvent la forme de critiques sont bien connues dans le cas des entreprises emblématiques comme Wikipedia - comparé aux encyclopédies classiques - ou encore pour le journalisme citoyen tel qu'il s'exprime notamment à travers les blogs politiques et d'actualités ou les services de micro-blogging comme Twitter. Ces questions méritent également d'être abordées en ce qui concerne des projets collaboratifs d'envergure et d'audience bien moindres mais dont les méthodes et les enjeux sont d'une toute autre nature. Ce billet décrit en détail le processus de validation qui s'est naturellement mis en place dans le cadre du projet PhotosNormandie et examine en conséquence la question de la légitimité des contenus générés par les utilisateurs dans ce travail.

PhotosNormandie est un projet collaboratif portant sur 2763 photos historiques. Le projet est actif depuis janvier 2007 et a pour but d'améliorer la description documentaire des photos en utilisant les possibilités de la plate-forme de partage Flickr. Nous avons complété et corrigé au total plus de 4500 légendes. Ce nombre plus élevé que celui des... Lire Sur la légitimité des contenus générés par les utilisateurs

Quelques commandes MySQL : Parce que je m’en rappelle jamais

2009-06-30 Benoit Piette - Réingénierie cognitive - Développement Web, Parce que je m'en rappelle jamai, mysql, reference

Bienvenue sur une nouvelle série sur mon blogue qui sera peut-être ou pas éphémère : Les parce que je m’en rappelle jamais. Cette série se veut un hommage au manque de mémoire et au déficit d’attention. Vous n’y trouverez pas des bonnes pratiques, mais simplement des exemples de commandes que j’ai eu besoin de faire un moment donné. Sans plus tarder, une première mouture : Quelques commandes MySQL :

Partir l’interpréteur / moniteur MySQL :
mysql --user=le_nom_de_l_utilisateur le_nom_de_la_bd
Créer un utilisateur dans MySQL :
CREATE USER le_nom_user IDENTIFIED BY 'motdepasse'
Faire que MySQL écoute sur le port 3306 sous Unix
dans my.cnf (peut être dans /etc/my.cnf)

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
port=3306
bind-address=l'adresseipduserveurmysql
Restarter le serveur MySQL sous CentOS :
/etc/init.d/mysqld restart
Droits des utilisateurs pour se connecter à distance à partir de partout (ne pas faire cela sur un serveur de prod) :
GRANT ALL ON *.* to 'root'@'%';

Petite note pour moi : Faut que je refasse les css de code, dl et pre. Merci.

strlen et l'optimisation

Comme le savent les lecteurs de ce blog, je suis en général très méfiant vis-à-vis de l'optimisation prématurée des programmes. Pas seulement parce que la plupart des programmeurs qui parlent de performance tout de suite ne mesurent pas le résultat de leurs bricolages mais aussi parce que cette « optimisation » est souvent un prétexte pour faire du code imbittable et inmaintenable. Mais, comme avec toute règle, il y a des exceptions.

Par exemple, si une fonction donnée est appelée très souvent, elle est évidemment une bonne candidate pour des optimisations très poussées. C'est le cas de , fonction de la libc qui mesure la longueur d'une chaîne de caractères en C. Les programmes écrits en C (ce qui inclue les implémentations des langages comme Ruby ou Perl) appellent strlen tout le temps. On peut donc, une fois une mise en œuvre correcte de strlen produite, chercher des optimisations de bas niveau.

Il est par exemple amusant de comparer les deux versions produites par OpenBSD :

  • La version portable (http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/string/strlen.c?rev=1.7;content-type=text%2Fplain ), triviale,
  • et la version optimisée (http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/arch/i386/string/strlen.S?rev=1.3;content-type=text%2Fplain) pour les processeurs i386, en assembleur.
La GNU libc dispose également d'une telle version optimisée sur les i386 (version en assembleur pour i586 et plus). Voir aussi un bon article sur l'écriture en assembleur de strlen. Évidemment, serait encore plus intéressante à étudier, car plus complexe (les deux chaînes n'ont pas forcément la même longueur).

Une autre curiosité pour les amateurs d'optimisation est la discussion sur un strlen() rapide pour UTF-8.

Merci à Victor Stinner pour ses intéressants ajouts.

Pourquoi le DNS, qu'est-ce qu'il apporte par rapport aux adresses IP ?

2009-06-30 Stéphane Bortzmeyer - xmlfr

Le DNS est souvent présenté comme utile, car permettant d'utiliser des identificateurs « conviviaux » (les noms de domaine) plutôt que des suites de chiffres (les adresses IP). Cette explication n'est pas fausse mais elle est très incomplète.

On trouve une justification du DNS analogue à celle-ci en beaucoup d'endroits. L'article de Wikipédia dit « Il n'est pas évident pour un humain de retenir ce numéro lorsque l'on désire accéder à un ordinateur d'Internet. C'est pourquoi un mécanisme a été mis en place pour permettre d'associer à une adresse IP un nom intelligible, humainement plus simple à retenir, appelé nom de domaine.  ». Sur le site de l'AFNIC, on trouve « Sans le DNS, il faudrait mémoriser l'adresse d'un site ou une adresse électronique sous la forme de l'adresse IP du domaine (qui est une suite de chiffres. Exemple : mon-correspondant@[192.134.4.35]) ! ». Et, en anglais, on voit sur le site de l'ICANN « Because IP addresses (which are strings of numbers) are hard to remember, the DNS allows a familiar string of letters (the "domain name") to be used instead. So rather than typing "192.0.34.163," you can type "www.icann.org." ». Mais ce n'est pas parce que tout le monde répète quelque chose que c'est complètement vrai. D'abord, le fait que des identificateurs composés uniquement de chiffres soient moins pratiques n'est pas si évident que cela. Ainsi, les numéros de téléphone restent largement utilisés et n'ont (malheureusement) pas été remplacés par les URL SIP comme sip:helpdesk@voip.apnic.net. (Curiosité : il existe même une proposition de remplacer les noms de domaine par des numéros de téléphone, ENUM.)

Personnellement, je pense que les noms de domaine sont plus simples, car plus mémorisables et plus porteurs d'identité mais, manifestement, tout le monde n'est pas d'accord, sinon les numéros de téléphone auraient disparu depuis longtemps (supprimant également le problème de la portabilité).

Les noms « conviviaux » ont un autre problème : comme ils ont une sémantique, ils font l'objet de conflits. Tout le monde veut et la multinationale Kraft Foods peut empêcher Mme Milka de garder son nom de domaine s'il correspond à une marque déposée de ladite multinationale.

Néanmoins, le DNS est le système d'identificateur le plus fréquent sur l'Internet. Quasiment toutes les transactions sur le réseau passent par lui, et le trafic sur les serveurs de noms ne cesse pas d'augmenter. C'est parce que les noms de domaine fournissent un service bien plus utile que la « convivialité » des noms : ils fournissent de la stabilité. La plupart des sites Internet reçoivent des adresses IP liées au fournisseur d'accès ou à un hébergeur. Ce sont des adresses PA, dont il faut changer si on change de prestataire. Si je fait de la publicité pour mon blog en annonçant http://208.75.84.80/, son adresse IP actuelle, ce n'est pas seulement « moins joli » et « moins mémorisable » que http://www.bortzmeyer.org/, c'est surtout moins stable. L'adresse IP 208.75.84.80 est liée à l'hébergeur actuel, Slicehost, et devra changer si je passe à un autre hébergeur comme OVH. Et je devrais prévenir tous mes lecteurs, faire corriger tous les articles qui parlaient de ce blog, demander à Google de changer l'URL (tout en gardant mon PageRank), etc.

Bien sûr, il existe des adresses IP indépendantes du fournisseur, les adresses PI. Mais elles ne sont pas forcément faciles à obtenir et, surtout, elles ne résolvent pas complètement la question de la stabilité. Si deux services sont sur la même machine, et ont donc la même adresse IP, et que j'en déménage un seul, il devra bien changer d'adresse, même si l'ancienne et la nouvelle étaient indépendantes du prestataire. En application du principe « Cool URIs don't change », les noms de domaine permettent la permanence des identificateurs.

Et ne parlons même pas de la transition d'adresses IPv4 aux adresses IPv6. Sans l'intermédiaire des noms de domaine, cette transition serait encore plus pénible qu'elle ne l'est.

(Certaines personnes relativisent l'importance de la stabilité des URL en affirmant que les moteurs de recherche permettent de toute façon de retrouver la page Web. D'abord, les noms de domaine ne servent pas qu'au Web. Ensuite, le moteur de recherche ne permet justement aucune stabilité : un jour, taper « hôtel luchon » dans Google mènera à l'hôtel Majestic, un jour à un autre hôtel...)

La version 10 de BIND avance

La prochaine version de BIND, le serveur de noms le plus répandu sur l'Internet, est désormais en phase active de développement, financée par des organisations comme l'AFNIC. Cette version sera marquée par plusieurs changements majeurs, notamment un mode de développement nettement plus ouvert (BIND 9 avait toujours été géré de manière très privée).

Une liste résumée des principaux changements est en ligne. La nouvelle version sera écrite en C++, avec Python pour les extensions et les scripts. Il existe aussi déjà un Trac public, en https://bind10.isc.org/. Pour l'instant, il contient surtout du remue-méninges. Et il existe une liste de diffusion des développeurs et personnes intéressées.

2009-06-29

Liens hypertextes : questions ouvertes aux moteurs de recherche

En tant que moteur de recherche, vous proposez des réponses aux requêtes avec des liens hypertextes actifs (c'est-à-dire cliquables) vers des pages de sites Web.

Un certain nombre de sites Web indiquent dans leurs Mentions légales ou leurs Conditions générales d'utilisation (CGU) qu'il faut une autorisation préalable (parfois écrite et expresse) avant d'établir un lien hypertexte vers leur site.

Quelle est votre position par rapport à cette approche des liens hypertextes qui sont la base du Web et la base de votre activité ? Plus précisément :

  • avez-vous demandé et reçu (ou reçu spontanément) des autorisations pour établir des liens hypertextes vers les sites demandant une autorisation ?
  • si vous n'avez pas d'autorisation, en appliquant les mentions de ces sites à la lettre, pourriez-vous ne donner que des liens inactifs (c'est-à-dire à copier-coller) vers les sites concernés ? voire retirer ces sites des réponses fournies ?

Lire aussi sur ce sujet des liens hypertextes la Note de synthèse.

Et sur Formats-Ouverts.org le 29 juin :

Liens hypertextes : six sites qui les utilisent

Au lieu de ne signaler que des sites qui n'utilisent pas naturellement les liens hypertextes, voici au contraire 6 sites qui citent clairement des conditions logiques pour lier :

Le Conseil Constitutionnel à la page Avertissement important : statut de l'information disponible sur le site, http://www.conseil-constitutionnel.fr/conseil-constitutionnel/francais/liens-de-bas-de-page/statut-de-l-information/avertissement-important-statut-de-l-information-disponible-sur-le-site.150.html

L'établissement de liens hypertextes est autorisé, à condition de mentionner leur source et sous réserve des droits attachés aux images et illustrations proposées. Ces pages ne doivent cependant pas être utilisées à des fins commerciales ou publicitaires. En cas de doute, vous pouvez consulter les services du Conseil.

Sodexo, à la page Mentions Légales, http://fr.sodexo.com/frfr/mentions-legales.asp

Le site www.sodexo.com autorise la mise en place d'un lien hypertexte pointant vers son contenu, sous réserve de : Ne pas utiliser la technique du lien profond ("deep linking"), c'est-à-dire que les pages du site www.sodexo.com ne doivent pas être imbriquées à l'intérieur des pages d'un autre site, mais accessible par l'ouverture d'une fenêtre ; mentionner la source www.sodexo.com du contenu visé.

Cette autorisation ne s'applique pas aux sites Internet diffusant des informations à caractère polémique, pornographique, xénophobe ou pouvant, dans une plus large mesure, porter atteinte à la sensibilité du plus grand nombre ou à l'ordre public.

Le Ministère de l'Écologie, de l'Énergie, du Développement durable et de la Mer, à la page Info Editeur, http://www.developpement-durable.gouv.fr/article.php3?id_article=224&forcer_lang=true

Tout site public ou privé est autorisé à établir, sans autorisation préalable, un lien vers les informations diffusées par le Ministère de l'Écologie, de l'Énergie, du Développement durable et de l'Aménagement du territoire. En revanche, les pages du site developpement-durable.gouv.fr ne doivent pas être imbriquées à l'intérieur des pages d'un autre site.

L'autorisation de mise en place d'un lien est valable pour tout support, à l'exception de ceux diffusant des informations à caractère polémique, pornographique, xénophobe ou pouvant, dans une plus large mesure porter atteinte à la sensibilité du plus grand nombre.

Sciences Po, à la page Mentions légales, http://www.sciences-po.fr/portail/fr-fr/a-propos/mentions-legales.html

Le site de Sciences Po autorise la mise en place d'un lien hypertexte pointant vers son contenu, sous réserve de : ne pas utiliser la technique du lien profond ("deep linking"), c'est-à-dire que les pages du site www.sciences-po.fr ne doivent pas être imbriquées à l'intérieur des pages d'un autre site, mais accessibles par l'ouverture d'une fenêtre ; mentionner la source qui pointera grâce à un lien hypertexte directement sur le contenu visé.

Les 12 000, Sécurité routière, depuis la page d'accueil en Flash, dans Mentions légales, http://www.les12000.fr/ :

Tout site public ou privé est autorisé à établir, sans autorisation préalable, un lien vers les informations diffusées dans ce site.

McDonald's France, depuis la page d'accueil en Flash, dans Mentions légales, http://www.mcdonalds.fr

Il est possible de créer un lien vers un site sans autorisation expresse de l'éditeur, à la seule condition que le site ouvre une nouvelle fenêtre du navigateur. Toutefois, le GIE McDONALD'S FORCE se réserve le droit de demander la suppression d'un lien qu'il estime non conforme à sa politique éditoriale.

Lire aussi sur ce sujet des liens hypertextes la Note de synthèse.

Et sur Formats-Ouverts.org le 29 juin :

Députés et sénateurs : leurs sites Web, leurs courriers électroniques...

Assemblée nationale-Sénat : bien, mais peut mieux faire pour le second

Le 22 juin 2009 (un lundi) s'est tenu à Versailles le Congrès du Parlement pour écouter le discours du Président de la République [1]. Les 577 députés et les 343 sénateurs étaient donc réunis (du moins en théorie). Une occasion pour faire une petite comparaison numérique entre ces 2 chambres et leurs élus...

Le site Web de l'Assemblée nationale propose depuis fin 2008 les archives des débats du début de la Ve République en 1958 à nos jours. Celui du Sénat n'a pas cette richesse (du moins pour l'instant...).

Les liens hypertextes vers le site de l'Assemblée nationale [2] et vers celui du Sénat [3] sont autorisés : très bien. Cependant pour le Sénat, il faut que « les auteurs du lien en aient préalablement informé le webmestre du Sénat » (du moins pour l'instant...). Informer pour chaque lien établi (depuis un forum, dans un commentaire, dans un courriel, dans un texte,...) cela n'est pas très pratique...

Les ordinateurs des députés utilisent des logiciels libres depuis le début de la XIIIe législature, une décision prise fin novembre 2006. Cette mesure n'a pas d'équivalent pour les sénateurs (du moins pour l'instant...).

Le courrier électronique : 100% des députés ont une adresse de courrier électronique et l'indiquent sur leur page de présentation. En revanche pour les sénateurs, le courriel n'est parfois pas le bienvenu... (du moins pour l'instant...) :

Seuls les sénateurs qui l'ont souhaité disposent d'une adresse électronique. Vous pouvez rechercher cette adresse sur la fiche personnelle de chaque sénateur à partir des listes de sénateurs classées selon de multiples critères. [4] (gras ajouté)

Il y a là un décalage avec les députés, voire tout simplement avec les moyens modernes de communication. Bientôt le courriel utilisé aussi par 100% des sénateurs ? Espérons, avec des standards ouverts et de l'interopérabilité.

Devoir de vacances possible : qui ne « souhaite » pas de courriel ? combien de sénateurs ? combien de sénatrices ? de quels partis ? avec quelles fonctions ? y a-t-il des départements entiers aux sénateurs sans courriel ?...

Sources et liens :

Et sur Formats-Ouverts.org le 29 juin :

2009-06-28

Du Web social... mais sans Web ouvert

Cela ressemble à du Web (d'ailleurs cela s'appele du Web social).

Cela a la couleur du Web (d'ailleurs cela utilise certains protocoles ouverts du Web).

Cela a le goût du Web (d'ailleurs cela se trouve sur le Web).

Mais ce n'est pas du Web (ouvert).

Facebook envisage de ne plus se servir de navigateurs Web pour utiliser ses services. L'idée est d'avoir son propre logiciel pour accéder à son compte (et à son réseau). Avec même la possibilité de naviguer sur le Web à l'intérieur de ce logiciel ! [1]

C'est un renversement de situation, c'est la mise en place de silos fermés avec un Web propriétaire et découpé. C'est l'opposé de l'approche du Web, mais c'est le rêve d'avoir des utilisateurs captifs. C'est le contraire des standards ouverts et de l'interopérabilité.

Sources et liens :

Et sur Formats-Ouverts.org le 28 juin :

Un logiciel (récent) et son moteur (pas du tout adapté)...

2009-06-28 Thierry Stoehr - Formats-Ouverts.org - xmlfr, Logiciel

Quand vous lisez un courrier électronique écrit en HTML (ce qui n'est pas l'usage dans l'absolu), le texte s'affiche grâce au moteur de rendu.

Le logiciel Outlook 2010 de Microsoft utilise un moteur de rendu HTML : c'est celui... de Word, son traitement de texte !

Et cela est une surprise et une déception (voire pire) : en effet le moteur de Word est incapable par exemple de traiter correctement la technologie ouverte CSS récente.

Pourtant il existe un moteur de rendu traitant assez correctement les technologies modernes : celui d'Internet Explorer 8 (IE8), présent dans le dernier navigateur de Microsoft. Mais, il n'a pas été mis dans Outlook 2010... Cela serait-il dû à l'impossibilité de la division Outlook « d'acheter » en interne ce moteur à la division d'Internet Explorer, comme l'indiquent certaines rumeurs ? [1]

Toujours est-il qu'il y a ce décalage : un logiciel a priori moderne mais avec des rouages dépassés.

Sources et liens :

Et sur Formats-Ouverts.org le 28 juin :

Quelle affinité avec Michael Jackson ?

2009-06-28 Christian Fauré - Défaut, mémoire

J’ai passé ces derniers jours à revoir pas mal de ses vidéos. Un peu comme quand on monte au grenier et qu’on se laisse aller à rêvasser en prenant les vieux objets un par un et en se refaisant l’histoire que chacun porte en lui.

Ce n’est pas sa mort qui m’a « choqué» – il était mort depuis longtemps pour moi – c’est plutôt la force avec laquelle j’ai ressenti ce besoin de tout revoir et de me re-faire le film.

Je suis allé vers ces archives, ces supports de mémoire, parce que, comme beaucoup, je voulais savoir quelle était l’affinité que j’avais avec lui. En revoyant ces images et en ré-écoutant ses chansons je pensais peut-être arriver à donner un nom et à caractériser cette fameuse affinité.
Je suis à présent le premier surpris d’écrire que le sentiment qui prédomine, c’est celui de la culpabilité.  Je me sens coupable d’avoir dansé de joie jusqu’à épuisement sur ses chansons, coupable d’avoir chanté à tue-tête pendant des heures jusqu’à me persuader que j’étais arrivé à chanter comme lui, mais surtout coupable de ne pas avoir vu ce qui aujourd’hui me saute aux yeux.

Je me sens coupable d’avoir « consommé»  Michael Jackson. Dans ses oeuvres, je suis allé chercher ce dont j’avais besoin tout comme l’on choisi ses produits dans les rayons d’un supermarché : un peu de joie par ci, de la fièvre pour danser par là, de la nostalgie pour accompagner des moments de solitude, etc. Je prenais comme un consommateur qui ne donne rien en retour.

J’ai l’impression que sa voix est comme le chant d’un oiseau en cage, qui chante pour attirer votre attention, pour que vous le libériez. Seulement voilà, l’oiseau chante et danse si bien que, si l’on approche de la cage, ce n’est pas pour le libérer mais pour le regarder et l’écouter égoïstement, en l’applaudissant, mais sans le libérer. Un comportement de consommateur.

Est-ce un hasard si le premier album 33t que j’ai acheté est un disque de Jackson ? Et est-ce un hasard si je l’ai acheté dans un supermarché alors que les grandes surfaces commençaient à peine à vendre des « produits culturels»  ?

Mais pourquoi cette culpabilité ? Cela paraît être étrange de se sentir coupable d’avoir apprécié un artiste. Quelle faute peut-il y avoir ?

Je me sens coupable parce que je n’ai pas vu ce qui m’a frappé ces dernières heures. J’y vois à présent ce qui me met en affinité avec lui. Je vois un enfant terrorisé, comme après avoir été arraché à lui-même, mais qui se force à sourire.

Comme si on l’avait littéralement poussé sur scène, sous les éclairages et face au public et que, face à cette situation terrible, sa réaction avait été d’essayer le charme, même forcé, d’un sourire. En de telles circonstances, d’autres auraient pu pleurer, crier, bouder, s’enfuir, s’effondrer, voire même être enthousiasmé. Non, lui était tellement terrorisé qu’il a simplement souri, seul léger mouvement musculaire qu’autorise notre système nerveux quand il est paralysé par la peur.

Et si ses fameux ooohs, formes de soubresauts vocaux qui faisaient son empreinte vocale, n’étaient rien d’autre que les bruits que fait un enfant qui sanglote ?

Il me sera difficile à présent de ne pas ressentir une certaine forme de gêne en le ré-écoutant, de ne pas voir surgir à chaque fois l’image de l’enfant qui appelle à l’aide mais que le talent nous empêche d’entendre, comme sur cet enregistrement d’un concert en 1972 (à Paris, en première partie de Bob Marley) où il chantait Ben :

Lui qui souriait en répétant « I love you»  à son public et ses fans qui le consumaient.

??? ??? ??? ??? ???
???