Kiwix au jour le jour

Aller au contenu | Aller au menu | Aller à la recherche

Tag - Wikimédia France

Fil des billets - Fil des commentaires

vendredi 2 septembre 2011

5 ans déjà !

Il y a cinq ans le projet Kiwix était lancé. Cela faisait déjà 6 mois à l'époque que c'était dans les cartons et après quelques tentatives de faire financer la chose par Wikimédia France, il a bien fallu se rendre à l'évidence : cela ne se ferait pas de cette manière.

Comme dit le diction On n'est jamais aussi bien servi que par soi même, je lançais donc le projet par moi même.

Où en sommes-nous aujourd'hui :

  • L'intérêt pour l'accès à nos contenus hors-ligne est plus grand que jamais. Kiwix et openZIM occupent une place de choix parmi les solutions techniques proposées.
  • Nous avons maintenant une solution tout à fait viable pour Windows, OSX et GNU/Linux avec pas mal de fonctionnalités intéressantes. Bref, nous sommes bien plus loin que nos objectifs initiaux.
  • Kiwix a fusionné complètement avec Moulinwiki et nous sommes désormais un peu plus nombreux à travailler sur le logiciel, même si nous sommes vraiment encore trop peu.
  • Nous avons une audience honorable et en croissance constante avec au dernier recensement environ 300 visiteurs uniques et 120 téléchargements du logiciel par jour.
  • Kiwix est soutenu par plusieurs chapters très concrètement et par la WMF, ainsi que des organisations extérieures au mouvement.

Statistiques de Fréquentation de http://www.kiwix.org

Sur quoi travaillons nous :

  • Nous voulons sortir la version 0.9 finale d'ici la fin de l'année et investissons beaucoup pour améliorer l'ergonomie du logiciel et sa stabilité.
  • On cherche en parallèle à augmenter le nombre de plateformes supportées avec plus de binaires, des packages et de nouveaux ports (pour Sugar par exemple, mais nous tentons aussi de trouver des solutions pour Android).
  • Nous voulons aussi absolument améliorer la version serveur http de Kiwix et développer une solution clef-en-main pour Plug computers.
  • Améliorer la communication et faire participer plus de gens (amélioration du site Web, meilleur communication avec l'aide de la WMF, utilisation de Translatewiki, mise en place d'un système de Feedback, …).
  • Développer des outils pour rendre la création de ZIM beaucoup plus simple.
  • Documenter et faciliter les déploiements massifs de Kiwix.

Face à tous ces challenges, il faut tous ensemble faire un effort et toutes les bonnes volontés sont le bienvenu. Pour ma part je travaillerai à partir d'octobre à temps plein sur Kiwix.

vendredi 11 février 2011

Kiwix 1.0 : Quels enjeux ? Quelles solutions ?

Kiwix 0.9 a à peine entamé son cycle de betas que nous commençons en parallèle à sérieusement penser la version 1.0. Deux raisons à cela : la musique s'accélère pour Kiwix et nous ne voulons surtout pas avoir la tête dans le guidon.

Kiwix 1.0 apportera comme fonctionnalité principale, la gestion intégrée des contenus (pour faire simple : fichiers ZIM et indexes de recherche). Cela signifie que le téléchargement, le partage, l'organisation, la suppression des différents contenus se fera dans Kiwix et non à l'aide de logiciels externes. Nous pensons que c'est nécessaire pour simplifier la vie de l'utilisateur, mais aussi pour favoriser la distribution des contenus.

Nous pourrions évidement implémenter et intégrer un simple téléchargement HTTP ; mais cela ne serait à notre avis pas pleinement satisfaisant. Voici les quelques défis que nous pensons nécessaires de relever :

  • Il faut que le téléchargement de nouveaux contenus soit simple et puisse se faire depuis Kiwix directement.
  • Il faut que la solution logicielle soit robuste et rapide.
  • Il faut que même si la plateforme de téléchargement ainsi que ses miroirs tombent (ou sont censurés), que l'utilisateur puisse continuer à télécharger/partager des contenus.
  • Il faut que la plateforme de téléchargement reste bon marché, même dans le cas de très nombreux téléchargements.
  • Il faut que les contenus soient téléchargeables et partageables facilement, même dans un réseau local coupé d'internet.

Metalink Pour réussir, nous voulons combiner les avantages particuliers du téléchargement centralisé via FTP/HTTP (pour l'efficacité) et du P2P... en particulier du P2P décentralisé (pour la robustesse et le bas cout). Pour toutes ces raisons, notre choix technologique s'est porté sur Metalink.

Metalink est une norme XML qui permet de définir un contenu (en particulier à l'aide d'une somme de contrôle), des sources (HTTP, FTP, magnet, Bittorent) et des règles de priorité sur les sources (en fonction de la location géographique par exemple, ou tout simplement avec l'aide d'un système de note pour les miroirs). Le format est assez jeune encore, mais il est en cours de normalisation par l'IETF. Les avantages de Metalink sont clairs par rapport à des solutions plus traditionnelles uniques comme HTTP, FTP ou le P2P ; cette technologie permet de combiner les points forts de chacune d'entre elles tout en élimant les désavantages.

Pour utiliser Metalink, il faut :

  • une solution serveur capable de générer les fichiers .metalink, .torrent, les différents miroirs HTTP et FTP, etc. et
  • une solution client capable d'interpréter les fichiers .metalink, de gérer toutes les sources disponibles, de télécharger au mieux ainsi que d'assurer le partage.

La solution serveur s'appelle Mirrorbrain. Mirrorbrain est un logiciel développé à l'origine pour openSUSE, mais utilisé aujourd'hui par de nombreux autres gros projets. Mirrorbrain, c'est plusieurs choses :

  • un module pour Apache qui permet, pour un fichier donné, de sortir tout un tas de sommes de contrôle, un .metalink, un .torrent, un lien magnet et naturellement la liste des miroirs qui disposent du fichier en tenant compte de la localisation géographique du client (localisation par IP),
  • une liste d'outils pour savoir quel miroir possède quel fichier, est actuellement disponible, etc.

En utilisant Mirrorbrain, il ne nous restera à gérer:

  • la synchronisation des miroirs avec rsync,
  • le "superseeder" pour Bittorrent,
  • éventuellement un tracker Bittorrent et noeud DHT si on ne souhaite pas (seulement) utiliser les trackers/noeuds publics.

L'introduction de Mirrorbrain devrait donc être assez vite réalisée ; dans les faits elle est déjà bien entamée.

Coté client, la meilleure solution qui nous soit accessible se nomme Aria2. Aria2 est un logiciel de téléchargement en ligne de commande qui comprend les fichiers .metalink et gère tout. Aria2 est donc capable de télécharger, et partager lorsque c'est possible, en parallèle un même fichier depuis différentes sources et en utilisant différents protocoles. Il est activement développer depuis plusieurs années et est très léger. Il dispose d'une interface XML-RPC permettant de le contrôler depuis Kiwix. Là se trouve probablement le plus gros du boulot ; Il nous faudra rapidement faire un prototype pour valider ce choix.

Le dernier point en suspend semble être alors la question de la disponibilité des fichiers .metalink ; en-effet, que faire si les fichiers .metalink sont indispensables et que le serveur central est indisponible ? Notre idée est d'intégrer les .metalink dans les fichiers XML gérant la bibliothèque de Kiwix. Un tel fichier pourrait donc indistinctement lister des contenus présents sur la mémoire de masse, comme des contenus disponibles en ligne au téléchargement.

La question ultime concernerait alors la mise à disposition des ces fichiers bibliothèque. Un début serait déjà de les livrer par défaut avec Kiwix. Dans tous les cas de figures, distribuer un fichier de quelques milliers de kilooctets est bien moins problématique que de distribuer les contenus en eux mêmes qui font plusieurs gigaoctets.

mercredi 26 janvier 2011

La Wikimedia Foundation soutient Kiwix

Nous le souhaitions depuis longtemps, la Wikimedia Foundation soutient désormais officiellement Kiwix. Le blog technique de la Fondation l'avait laissé entendre quelques fois ces dernières semaines ; mais c'est grâce à un billet complet sur le sujet "Wikipedia offline" que la nouvelle a été annoncée.

Cette décision est le fruit du travail autour des futures orientations stratégiques qu'a lancé la Foundation il y a maintenant presque deux ans. Après avoir décidé que la priorité stratégique absolue était d'augmenter la taille du lectorat, la Wikimedia Foundation s'est donc logiquement intéressée aux solutions de mise à disposition hors-ligne des contenus. Kiwix a alors retenu son attention.

Cela nous réjouis naturellement beaucoup de pouvoir compter sur ce nouveau soutien. La première étape de cette collaboration a d'ors et déjà débuté : il s'agit d'un effort commun pour analyser et améliorer l'expérience utilisateur. Ce travail est prévu pour durer quelques mois et son aboutissement corrélera probablement avec la sortie finale de la version 0.9 de Kiwix.

L'autre excellente nouvelle, qui va certes un peu de soi, est que le projet OpenZIM que nous avons lancé a aussi retenu leur attention et est partie prenante des solutions choisies. Un contrat avec PediaPress a été conclu pour que très rapidement leur extension pour Mediawiki nommée "Collection" permette aussi de créer des fichiers ZIM.

Aujourd'hui, Kiwix fonctionne déjà très bien et il est maintenant aisé de faire des DVD avec des contenus issus de Wikipédia. Grâce à ce nouveau soutien, la promesse d'une distribution des contenus encore plus vaste, totalement libre et dénuée d'intérêts commerciaux sera probablement en mesure d'être tenue.

mardi 18 mai 2010

Sortie de Kiwix 0.9 alpha1, aussi pour Windows

Il y a toirs semaines j'ai publié la première ébauche de Kiwix 0.9, soit la version alpha1. Nous travaillions depuis l'été 2009 sur cette nouvelle version et c'est donc le premier pas vers une finalisation de cette branche 0.9. Cette release propose déjà environ 70% de l'ensemble des fonctionnalités qui seront présentes dans la version 0.9 finale. En particulier :

  • Il y a maintenant une version serveur Web dénommée kiwix-serve.
  • Le support de Windows fête son retour, et cette fois c'est permanent.
  • Support des dernières améliorations de ZIM, en particulier la compressions LZMA (plus rapide, moins gourmand en ressources)
  • Réintroduction du système de suggestions qui fonctionne directement avec ZIM (pas besoin d'avoir un index de recherche)
  • Création d'un installeur pour Windows (merci Wilfredo et Moulinwiki)
  • Système de signets

Voici le CHANGELOG complet de Kiwix 0.9 alpha1 en anglais:

  • ZIM library management outside the profile
  • Windows support & installer
  • Fix the Hebrew search issue with the doublequote character (ID: 2939690)
  • First version of the search suggest feature (ID: 2799913)
  • New icon (with white background) (ID: 2981323)
  • New ZIM HTTP server called "kiwix-serve"
  • New Command line indexation tool called "kiwix-index"
  • Allow drag&drop over the UI to open a ZIM file
  • Autodection of the UI locale at the first start (GNU/Linux only)
  • New "Recently open" menu
  • New internal library of ZIM (to be able to manage many ZIM files)
  • New Hebrew, Portuguese, Chinese and Persian localization
  • New Bookmarks and Notes system (coming from Moulinwiki)
  • New script to compact search engines indexes in the profile called "kiwix-compact.sh" (ID: 2834599)
  • Translate ISO code in the language sub-menu (ID: 2834600)
  • New "Save Page" (in files) feature (ID: 175508)
  • New "Print as PDF" feature
  • kiwix.sh check for current path (ID: 2850487)
  • First result is now only loaded with a pretty good score (ID: 2845850)
  • "Report a bug" and "request a feature" links in the UI
  • Fixing issue affecting ZIM file loading with accented paths (ID: 2905488)
  • New feature to clean the profile at the end of the session (optional)
  • Redesign of the "About" Dialog box

Du point de vue du code, la situation s'est aussi largement améliorée puisque le tout compile maintenant avec les GNU autotools et que le processus est bien documenté ; en particulier pour la compilation sous Windows. Une conséquence de ceci est que l'on peut penser maintenant fournir des paquets pour GNU/Linux et du travail a déjà été fourni dans ce sens. Un paquet DEB (Debian et Ubuntu) sera désormais systématiquement fourni au téléchargement... en attendant que Kiwix soit inséré officiellement dans Debian. Un paquet RPM pour Fedora est en cours.

Reste maintenant à faire :

  • Recherche multi-ZIM
  • Gestion de multiples tabs
  • Support de MacOS
  • ... et corriger les quelques bugs connus ;)

Liens :

mercredi 24 février 2010

Sortie de Kiwix 0.8

J'ai publié Kiwix 0.8 il y a quelques jours. C'est une version mineure pour l'utilisateur car elle apporte quasiment rien de nouveau en terme de fonctionnalités ; certaines même ont été supprimées. Depuis 6 mois les versions de test se sont succédées et comme plus aucun bug n'était signalé et que je travaillais depuis longtemps sur la version 0.9, je me suis décidé à le faire maintenant. Pour terminé, cette version fonctionne uniquement sous GNU/Linux ; ce qui est tout de même handicapant pour de nombreux utilisateurs en Occident... dans d'autres pays, cela l'ai beaucoup moins.

Cependant, d'un point de vue technique, la version 0.8 est un pas important :

  • Tout à été réécrit de manière beaucoup plus propre et modulaire et le code a été documenté.
  • Kiwix se base maintenant entièrement pour les contenus sur le format ZIM dont le développement est maintenant indépendant avec la création du projet openZIM. En clair cela veut dire que n'importe qui peut faire un ZIM et Kiwix pourra le lire.
  • Le moteur de recherche est désormais Xapian, un moteur de recherche éprouvé et libre qui bénéficie d'un bon support et offre de très nombreuses possibilités. Kiwix offre aussi maintenant un indexer intégré, cela signifie que si vous avez des ZIM, Kiwix peut facilement les indexer et offrir la fonctionnalité de recherche sur ces nouveaux contenus. Un autre point important est que toutes les recherches sont maintenant insensibles à la casse et aux accents grâce en particulier à la librairie libunac.
  • Le processus de localisation est maintenant stable et il y a de plus en plus de langues supportées.

Bref, avec la version 0.5, nous avions fait la preuve de la validité du concept. Avec la version 0.8 les bases sont jetés pour faire un logiciel réellement ouvert et de qualité professionnelle.

Voici le CHANGELOG presque complet :

  • Small improvement by the kiwix.sh launcher (should work now under Slackware (see https://sourceforge.net/forum/message.php?msg_id=7561932)
  • Fix sporadic segfault by indexing (ID: 2823597)
  • Fix dynlib linking issue affecting at least Slackware and Fedora
  • Use xapian-core-1.0.14
  • Fix the "no icons available" issue (ID: 2830824)
  • Fixed toolbar icons with RTL languages
  • Improved toolbar UI (added icons & tooltip)
  • Fixed window size/position restore
  • Fixed address-bar not displaying TOC URLs (ID: 2806208)
  • Fixed anchored link not working (ID: 2806207)
  • High reducing of the xapian index disk usage
  • Improvement of the history management
  • Ignore now, by indexing, HTML pages with the NOINDEX meta tag
  • French/Spanish/German/Arabic/Italian translation of the software help
  • Fixed language switch menu (ID: 2822178)
  • New logo and artworks
  • Bug fix by the indexing process observer (ID: 2811642)
  • Add a gray version of the buttons
  • Able to index a ZIM by itself
  • First version of a software help
  • Add a cache strategy
  • Use now ZIM
  • Random page feature (ID: 2799134)
  • Fix an issue concerning URLs with local anchors (ID: 2798769)
  • Localisation of Xulrunner builtins (ID: 2799815)
  • Rewrite the buggy MD5 code
  • Remember the window geometry (ID: 1671235)
  • 32 bits support for large ZIM file (ID: 2801839)
  • Use now Xapian

Pour rappel, telles étaient les versions précédentes de Kiwix :

  • v0.5 au printemps 2007
  • v0.7 à l'hiver 2008 (pas de support)

Comme on peut le voir le rythme des sorties n'est pas très élevé (c'est un euphémisme). Cela est en train de changer, j'ai repris en main le dev. du logiciel lui-même alors qu'auparavant je travaillais surtout sur les scripts de génération du HTML. J'ai par ailleurs de l'aide en ce moment. Par voie de conséquence, la version 0.9 est déjà très avancée et les premières versions alpha devraient sortir au mois d'avril avec en particulier le retour du support complet de Windows.

Pour plus d'informations :

mardi 26 janvier 2010

Avez-vous dit ZIM ?

Il y a un an environ, deux acolytes et moi-même fondions le projet openZIM. L'objectif était la spécification d'un format de données adapté au stockage des articles issus de Wikipédia ainsi que la création d'une bibliothèque logicielle et d'outils nécessaires à la manipulation dudit format.

Nous travaillons aujourd'hui sur les dernières améliorations de ce qui sera probablement la première version officielle. Cependant, avant de détailler le projet et le format, je souhaite revenir brièvement sur les conditions de sa création.

L'une des questions qui se pose assez rapidement lorsque l'on réfléchi sur comment rendre accessible une version statique de Wikipédia est Comment vais-je stocker ces quantités importantes d'information ? Le cahier des charges, formulé de manière simplifiée, étant :

  • mémoire de masse nécessaire la plus réduite possible
  • temps d'accès les plus réduits possible

Dans les faits, rien n'existait qui satisfasse vraiment ces contraintes. Les solutions de compression actuelles étant particulièrement incapables d'offrir des temps d'accès acceptables (un dixième de seconde maximum par ressource).

Chaque initiative a donc essayé de faire au mieux (sachant que cela n'était qu'un aspect parmi d'autres) et la meilleure des approches que j'ai pu voir consistait à compresser N articles par fichier (typiquement avec Bzip2 ou LZMA) et de tenir un index dans une base de données locale indépendante (type SQLite). Ce type de solutions souffre cependant des inconvénients suivant :

  • avoir à gérer séparément l'index et les fichiers de contenu
  • compresser des contenus qui éventuellement le sont déjà (typiquement JPEG ou PNG)
  • ne pas offrir de bibliothèque avec API simplifiée
  • avoir à gérer de nombreux fichiers
  • ne pas être correctement documentée
  • gestion native des catégories (dev. en cours)
  • gestion des meta-tags (dev. en cours)

Telle était la situation lorsque en 2007 nous nous sommes pour la première fois rencontrés : Manuel, Tommi et moi-même. Tommi nous a alors présenté quelque chose d'intéressant : il avait programmé un lecteur libre pour le format de données ZENO qu'utilisait Directmedia (la maison d'édition qui publiait les DVDs de Wikipédia en allemand). Le format ZENO était intéressant parce que tout était dans un fichier et que l'on avait maintenant une librairie pour le décoder.

Il restait deux gros défis :

  • augmenter l'efficacité de la compression
  • écrire un outil pour créer les ZENOs

En l'espace d'un an, Tommi ayant fait cela et Directmedia ayant décidait de ne plus publier de DVD en allemand et d'abandonner ZENO ; nous nous sommes dit qu'il y avait vraiment là quelque chose à faire. Nous avons alors conçu le projet openZIM et renommé le format, qui entre temps avait beaucoup évolué, en ZIM (pour Zeno IMproved).

Aujourd'hui le format et les outils sont meilleurs que jamais :

  • tout tient dans un fichier
  • tout type de contenus peut être introduit
  • compression LZMA
  • compression paramétrable en fonction du mime-type
  • portable
  • librairie de référence extrêmement efficace
  • Index par titre et par URI

Nous sommes subventionnés par Wikimedia CH qui couvre nos frais de serveur ainsi que ceux occasionnés par nos rencontres. Le format ainsi que les outils continuent d'évoluer rapidement et sont de loin la meilleure solution actuelle… Ce qui est assez compréhensible finalement puisqu'il n'y a pas de véritable alternative.

La fondation Wikimedia s'est montrée intéressée pour proposer des dumps au format ZIM et nous discutons les contraintes techniques d'un tel projet. Kiwix utilise évidement ZIM et propose déjà quelques fichiers ZIM à tester. Je suis aussi convaincu que de plus en plus de projets seront en mesure de travailler avec ce format.

Le travail n'est pour autant pas terminé. Il reste en particulier à implanter quelques fonctionnalités importantes et à régler quelques points problématiques. Il nous faut aussi stabiliser le format ; en-effet, le rythme des améliorations est toujours soutenu et la rétro-compatibilité a déjà été cassée par deux fois : une chose pourtant indispensable pour une utilisation plus large.

... mais le jeux en vaut la chandelle !

Pour plus d'informations :

mercredi 30 décembre 2009

Lancement du blog

Mise-à-jour : Le blog a été ajouté aujourd'hui au Planète Wikimédia francophone. Je remercie Johann pour son aide.

Depuis que je travaille sur Kiwix, et on approche des quatre ans, je m'interroge sur la nécessité de tenir un blog. Après avoir longtemps tergiversé, j'ai décidé de tenter l'aventure et de voir si cela en vaut la peine. J'espère que mes lecteurs, vous, me gratifierez au début de votre indulgence, voire de vos conseils, sachant que je suis débutant dans cet exercice.

Je pense publier ici en grande majorité des articles en français et probablement le plus souvent techniques. Je parlerai aussi évidement du projet openZIM que nous avons lancé en début d'année avec Manuel et Tommi, et qui me tient beaucoup à cœur.

Les lecteurs qui me lisent par l'entremise du planète de Wikimédia France ne doivent pour autant pas s'inquiéter : je ne les spammerai pas avec de nombreux articles loin de leur préoccupations. Les catégories et les tags sont à disposition pour permettre de satisfaire cette exigence ; au pire je m'autoriserai quelques digressions touchant la culture libre.

Pour ceux qui souhaitent suivre au plus près les développements de Kiwix :

  • Le site web où la page de garde est une bonne source d'informations. Les pages importantes sont pour la plupart traduites en anglais et espagnol.
  • Le fil de micro-blogging de identi.ca ; mais en anglais seulement et le plus souvent technique.
  • Le planet qui est multilingue... et encore un peu vide.
  • ... et maintenant ce blog.