janvier 2006

Archives

Entries list

vendredi 27 janvier 2006

Solutions Linux 2006

Mozilla Europe sera présent à Solutions Linux 2006 dans le village des associations, n'hésitez pas à venir nous rendre visite pour nous poser des questions, nous présenter vos projets ou juste venir nous dire bonjour :)

Solutions Linux c'est au CNIT, à la Défense, du mardi 31 janvier au jeudi 2 février.

mardi 24 janvier 2006

ping, pong

Récemment, Darin Fisher a introduit dans mozilla le support de l'attribut ping pour les liens en html. L'attribut ping est une des propositions du groupe de travail WHAT dont l'objectif est de moderniser le HTML actuel afin d'arriver à un HTML5, tout en restant totalement compatible avec le HTML4.01 actuel. Ce groupe s'est créé pour pallier au fait que le W3C n'est plus intéressé par une évolution du HTML depuis plusieurs années, les membres de ce groupe sont essentiellement des développeurs Mozilla, Opera et Apple.

Ping, de quoi s'agit-'il ?

Le principe de fonctionnement de ce nouvel attribut pour les balises a est que si l'on clique sur un lien ayant un attribut ping, le navigateur effectuera une requête http vers les urls présentes dans cet attribut. Il s'agit donc d'un moyen d'informer des serveurs que le lien a été cliqué, serveurs pouvant être le serveur d'origine ou (surtout en fait) des serveurs externes qui collectent ces informations pour les étudier (liens les plus populaires, comptabilité des clics pour la rémunération des bannières publicitaires...). Il s'agit donc d'un procédé supplémentaire de pistage des clics des utilisateurs sur une page.

L'idée derrière l'ajout de l'attribut ping est de fournir une solution aux publicitaires pour comptabiliser les clics de leurs partenaires et récupérer des informations sur l'agent utilisateur utilisé sans avoir à effectuer une redirection sur le serveur et donc mettre une page intermédiaire à cet effet, concrètement, il s'agit de remplacer des liens du type : <a href="http://serveurpub.com/redirect.php?id=123">lien vers toto.fr</a>

par des liens comme celui ci :

<a href="http://www.toto.fr/" ping="http://partenairepub1 http://partenairepub2">lien vers toto.fr</a>

Pour être clair, actuellement les sites comptabilisant les clics actuellement travaillent de la manière suivante :

  1. clic sur un lien du type <a href="http://serveurpub.com/redirect.php?id=123">lien vers toto.fr</a>
  2. le navigateur fait un passage par la page http://serveurpub.com/redirect.php?id=123 qui s'occupe de comptabiliser le clic dans une base de données avec les entêtes http classiques envoyés par le navigateur (je viens de telle page, je suis tel navigateur, ma langue par défaut est le français...)
  3. la page ci-dessus vous redirige vers la page que vous voulez vraiment visiter, c'est à dire toto.fr

L'idée est donc de demander au navigateur de contacter directement le site, ce qui offre théoriquement les avantages suivants (avantages essentiellement mis en avant par Darin et Ian Hickson qui a eu l'idée de ping au départ) :

  • le chargement de page est plus rapide puisqu'on va directement sur la page de destination (les pings sont faits en arrière-plan en asynchrone)
  • il y a une plus grande transparence puisque l'on voit dans le code html quels sont les pages contactées et on peut donc prévoir un mécanisme pour l'afficher dans le navigateur. Dans le cas de la redirection côté serveur on ne sait pas quels sites collectent ces infos.
  • l'utilisateur pourra désactiver la fonction dans les préférences de firefox

Voici le message ayant lancé la création de l'attribut ping : <a href="" ping="">.

Pourquoi je pense que c'est une fausse bonne idée

Le principal problème de cette proposition de nouvel attribut est que les avantages pour l'utilisateur n'apparaîtront que dans un seul cas : si cette méthode remplace la méthode actuelle de redirection côté serveur. C'est une énorme hypothèse qui personnellement me semble tout à fait irréalisable pour les raisons suivantes :

  • la méthode actuelle fonctionne pour tous les navigateurs, 100% de réussite, puisqu'elle ne dépend pas de la configuration et des possibilités des différents navigateur mais uniquement du serveur publicitaire. Pourquoi un site commercial abandonnerait-il un système qui fonctionne parfaitement pour tous les navigateurs pour le remplacer par un système qui ne marchera que pour 10, 20 ou 30% des visiteurs ?
  • les utilisateurs pouvant désactiver les pings, pourquoi les annonceurs remplacerait une méthode qui permet de comptabiliser tout le monde à coup sûr par une méthode où le client final peut ne pas être comptabilisé?
  • même si firefox, opera et safari (tous membres du whatwg) intègrent cette fonctionnalité, Internet explorer ne l'intègre pas et la majorité des utilisateurs seraient donc invisibles pour tout annonceur sauf si... il conserve son système actuel de redirection serveur. Même dans le cas improbable ou le futur IE7 intégrerait l'attribut ping (sience-fiction), IE6 ne l'intègre pas, IE6 est encore là pour un bon bout de temps, ce n'est pas demain que l'on vera un IE6 à un taux inférieur à 5% de part de marché...

Est-il raisonnable de penser que les entreprises dont les revenus dépendent entièrement de la comptabilité des liens cliqués vont abandonner un système parfaitement fiable, dont personne ne se plaint vraiment, pour un système ne fonctionnant que chez très peu de gens et qu'ils ne pourront pas contrôler ? je ne pense pas.

Pourtant, ce sont les publicitaires eux mêmes qui ont demandé si un tel système pourrait être intégré à HTML5 :

> - Nobody would really make use of it.

The suggestion for this originally came to me from Web advertisers, so I'm not sure this is necessarily true.

(Ian Hickson répondant à une critique sur la liste de discussion)

Il est clair que des boîtes de pub sont intéressés par l'intégration d'un tel système, et comme commercial et codeur amateur je peux comprendre pourquoi. Ce n'est pas dans le remplacement de leur technique actuelle côté serveur que je vois un intérêt marketing, c'est en complément de celui-ci pour des usages nouveaux. Avoir la possibilité de comptabiliser les clics sans passer par une redirection serveur permettra de proposer des accords commerciaux avec des gens refusant de voir leur site promu par une direction passant par un serveur externe car cela nuit à leur stratégie de référencement. On peut aussi imaginer sans difficulté que faire effectuer le boulot côté client permettra de profiter des avantages d'un navigateur, à savoir la possibilité de manipuler ces liens avec attributs ping par javascript et de changer leur apparence par css. Il sera ainsi possible de proposer de nouvelles formes de partenariat pubicitaires à des sites à base uniquement de javascript et de css, un simple include d'un fichier javascript et d'une feuille de style dans les entêtes d'un portail et il sera possible de modifier tous les liens pointant vers le site partenaire du jour sans avoir à toucher au contenu (ajout des attributs ping sur les liens déjà existants par parcours du DOM) et en plus de les styler de manière "promotionnelle". Il ne faudra pas longtemps pour voir des feuilles de style insérées par les agences de pub dans leurs sites partenaite contenant des trucs du genre a[ping="alcatel.google.com"]:after {content:" (nouveau site!)"}.

En fait, c'est même assez génial comme technique puisque ça permettrait à un site d'ajouter un système de comptage des liens pour une opération commerciale et de les styler de manière à les distinguer des autres sans avoir à toucher à son contenu (très important quand le contenu est syndiqué et produit par une autre équipe). On peut imaginer de nouveaux types de liens promotionnels destinés à une nouvelle clientèle de gens qui trouvent les système d'affiliation à des programmes publicitaires trop lourds car soit trop intrusif dans leur site (bannières, google ads...), soit trop complexes à mettre en place (liens avec redirections nécessitant une modification du html+langage serveur). Un nouveau système de comptabilisation des liens, plus réactif, plus facile à mettre en place, liens stylables à distance sans intervention aucune sur le corps HTML, visant une cible de geeks (les utilisateurs de Firefox) c'est tout simplement toute une gamme de nouveaux services publicitaires à proposer.

Dans tout cela, les avantages pour l'utilisateur final sont minimes (s'ils existent) et dans le meilleur des cas, on aura des internautes beaucoup mieux informés certes mais aussi beaucoup plus pistés à mon avis.

Les autres problèmes possibles

Outre le problème central de la simple utilité de ce nouvel attribut html, il y a à moins avis plusieurs autres problèmes posés par cette nouveauté. Il est tard donc je les listerai rapidement :

  • Les attaques de sites pas deni de service (DoS). Darin a écarté assez rapidement cette possibilité dès le départ avec comme argument qu'il est déjà possible d'utiliser d'autres balises pour le faire (img, object et iframe en particulier) et donc que ce n'est pas une nouveauté. Oui mais... Le lien est la base du web, en fait le web ce sont les liens, il ne s'agit pas d'une balise quelquonque. La base de la plupart des outils de publication est la possibilité d'insérer des liens (blogs, commentaires, sites de nouvelles type digg, forums...), quand je lui ai signalé que si j'arrive à pousser un lien dans une série d'attributs ping en première page de slashdot je pourrais attaquer un site, il m'a dit que c'était de la responsabilité de slashdot de nettoyer la balise de lien avant publication; je veux bien mais ça veut dire que tous les systèmes de publication dans le monde vont devoir ajouter un système de nettoyage des liens insérés dans leurs pages parce que cet attribut n'existait lorsque leur CMS a été conçu? Et qu'est-ce qui se passe si un ver se propage et modifie les liens de milliers de sites en ajoutant des attributs pings sur tous les liens qu'il trouve ? Je veux bien croire que les attaques par DoS soit un fantasme mais alors pourquoi ça a été évoqué dans la discussion du WHAT lors de la création de l'attribut sans que personne ne démente formellement la possibilité ?
  • L'interface utilisateur. Ce nouvel attribut veut dire que d'une part il va falloir informer l'utilisateur sur les liens pingés (sinon ce n'est pas la pein de parler de transparence) et que d'autre part il faut rajouter la possibilité de le désactiver facilement, sans oublier que le minimum serait de pouvoir mettre certains sites sur liste noire. Pour la désactivation j'ose espérer que ce sera faisable depuis les préférences et pas depuis about:config, pour l'interface utilisateurs je n'ai aucune réponse claire à ce sujet. Comment informer l'utilisateur des liens pingués sans que ce soit pénible ? Si je dois voir une infobulle à chaque lien me présentant les liens pingués, à ce moment mon interface est moins agréable que mon Firefox actuel puisque pollué par des liens pseudo-informatifs (les annonceurs annoncent les pings qu'ils veulent après tout, rien n'empèche de pinger directement sur le site client d'autres sites différents...). Comment alourdir l'interface de Firefox pour rien...
  • Des implications légales ? Actuellement c'est le serveur de redirection qui se charge de pinger les sites, si c'est le client, ça veut dire que c'est la responsabilité du surfeur. Tous les utilisateurs de firefox ne vivent pas dans des démocraties après tout, je ne suis pas sûr que ça simplifiera la vie du surfeur qui vit dans une dictature si il doit se demander si sa machine ne va pas établir des requêtes avec des sites interdits dans son pays à chaque clic sur une page (genre des liens dans les pings vers des moteurs de recherche interdits en Chine). Si une attaque par déni de service utilisant ce nouvel attribut ping a lieu, est-ce que le projet mozilla ne pourrait pas avoir des problèmes et présenté comme seul responsable ? Finalement, on est en train d'implémenter quelque chose qui n'est pas encore standard, depuis une spécification d'un groupe de travail sans existence légale.
  • les dommages en termes d'image. Quoi qu'on en dise, même si les intentions sont bonnes, ce n'est qu'un système de tracking supplémentaire et si c'est implémenté dans Firefox, on verra rapidement les firewalls intégrer la possibilité de bloquer ping comme ils bloquent activex pour IE, ne serait-ce que pour ajouter un argument commercial ("nous bloquons les nouvelles menaces contre votre vie privée"). Ce n'est pour l'instant que dans des versions de travail de firefox et déjà on a eu droit à des articles extrèmement négatifs dans la presse technique à ce sujet et parmi les utilisateurs habituels de Firefox. Je n'ai aucun doute que la presse plus généraliste n'essaiera même pas d'analyser la fonction et criera au spyware, ça sera faux bien sûr, mais ça fait vendre et ça nous fait mal. Je vois déjà les titres du style "Firefox finance son développement par l'intégration d'outil destinés au publicitaires".

Finalement, la question est de savoir pour qui on fait un navigateur. Traditionnellement nous avons fait un navigateur pour deux cibles, les développeurs web et l'utilisateur final exigeant. Maintenant il faudrait aussi supporter les developpeurs web spécialisés dans la pub? On ne peut pas à mon avis courrir tous les lièvres à la fois, surtout quand les lièvres se battent pour la même carotte. Peut être aussi faut il reconnaître que les objectifs de nettoyage et de simplification du HTML sont peut être intéressants à long terme, mais qu'à court et moyen terme les redirections ne sont pas près de disparaître, ce n'est pas parce que c'est créé par le WHATWG qui a des projets d'amélioration du HTML à très long terme que c'est forcément bénéfique à Firefox qui a son propre ordre dui jour et des objectifs à court et moyen terme.

Personnellement, ping ne m'intéresse pas, je n'en vois vraiment pas l'intérêt comme utilisateur donc si un jour c'est intégré ma première réaction sera de le désactiver, c'est pas comme les cookies et javascript, ils peuvent être utilisés pour me pister mais ils ont aussi mille usages qui me sont bénéfiques. Pour ping je ne vois pas à quoi ça va me servir et d'ailleurs si c'était désactivé par défaut, personne ne s'en plaindrait ce qui prouve bien l'utilité de la chose... Je n'ai pas de désir particulier d'aider des gros portails et des boîtes de pub à enrichir leur offre commerciale en faisant le boulot depuis mon navigateur à la place de leurs serveurs, ou alors qu'ils me payent pour ça :).

jeudi 5 janvier 2006

Paramétrer Firefox par rapport à sa configuration mémoire

Entre Firefox 1.0 et Firefox 1.5, de nombreuses optimisations ont été réalisées concernant la gestion de la mémoire (beaucoup de fuites mémoires réparées), ce qui a permis de libérer de la consommation mémoire pour intégrer dans la nouvelle version de Firefox un nouveau système de cache, très agressif, afin de rendre le surf plus rapide et fluide que jamais (sur le modèle d'Opera).

Le choix des dévelopeurs a donc été d'améliorer le surf avec une consommation mémoire équivalente à celle de la version 1.0, ce qui est après tout cohérent puisque même si la version était gourmande en mémoire, cela n'a pas empèché des dizaines de millions d'utilisateurs de l'installer et d'en faire leur navigateur par défaut.

Néanmoins, la version 1.5 peut parfaitement être paramétrée pour gérer le cache des pages de la même manière que la version 1.0, bien sûr vous perdez le bénéfice de linstant fastback" quand vous cliquez sur le bouton précédent ou suivant'', mais dans ce cas vous bénéficiez d'une consommation mémoire bien moindre ce qui permet d'installer Firefox 1.5 sur des configurations bien plus faibles que ne le permettait Firefox 1.0

Le principe du mécanisme de cache des pages est de prendre des "photos" des pages précédemment visitées et de les garder en mémoire, ainsi le navigateur n'a plus à redessiner la page lorsque vous revenez en arrière, il affiche littéralement un cliché de la visite effectuée quelques secondes plus tôt sur cette page.

Le mécanisme de cache essayant d'être intelligent, il ne cache pas le même nombre de pages selon votre configuration matérielle. Le nombre de "clichés" conservés en mémoire vive dépend de votre configuration :

  • 64Mo : 1 page
  • 128Mo : 2 pages
  • 256Mo : 3 pages
  • 512Mo : 5 pages
  • >=1Go : 8 pages

Evidemment le nombre de clichés pris est par onglet, et en gros chaque cliché prend 4Mo. Donc si vous avez 5 onglets ouverts et que dans chaque onglets vous avez visité 3 pages, ça fait une consommation mémoire supplémentaire de 5x3x4 = 60Mo, ce qui n'est pas négligeable du tout sur les machines qui n'ont que 256Mo, déjà 256 Mo pour faire tourner windows...

Si vous voulez désactiver le cache pour gagner de la mémoire, vous devez taper about:config dans la barre d'URL et modifier la ligne browser.sessionhistory.max_total_viewers. La valeur -1 correspond aux valeurs indiquées précédemment, si vous mettez zéro vous désactivez complètement le cache et si vous mettez un chiffre positif, cela correspond au nombre de pages à mettre dans le cache.

Ce que j'ai indiqué jusqu'à présent concerne le nouveau système de cache par prise de "clichés" des pages visitées, mais vous pouvez aussi régler le cache mémoire classique de Firefox

  • 32Mo -> cache mémoire de 2048Ko
  • 64Mo -> cache mémoire de 4096Ko
  • 128Mo -> cache mémoire de 8192Ko
  • 256Mo -> cache mémoire de 14336Ko
  • 512Mo -> cache mémoire de 22528Ko
  • 1Go -> cache mémoire de 32768Ko
  • 2Go -> cache mémoire de 45056Ko
  • 4Go -> cache mémoire de 59392Ko

Le paramètre à modifier est browser.cache.memory.capacity, par défaut il est à -1, ce qui correspond aux valeurs ci-dessus. Si vous le mettez à 0, vous coupez complètement la mise en cache des images. Si vous décidez d'une valeur différente, il faut juste remplacer -1 par 4096 par exemple. A vous d'expérimenter les valeurs du cache selon votre configuration, personnellement je trouve qu'au dessus de 30Mo le cache ne sert pas à grand chose et que déjà avec un cache de 8Mo on a l'essentiel de la fonctionnalité.

Pour conclure par un exemple, pour une machine avec peu de mémoire (256Mo) sous XP, moi je mettrais les paramètres suivants :

browser.cache.memory.capacity 2048
browser.sessionhistory.max_total_viewers 0

Evidemment, tout dépend de sa propre configuration et du type de sites que l'on visite, donc il faut expérimenter un peu pour trouver les paramètres les mieux adaptés.