Kiwix-JS 2.1, portage sur Windows Mobile et Ubuntu Touch, et perspectives

L’activité est très soutenue ces derniers temps sur Kiwix.

On a sorti une version 2.1 avec quelques améliorations, et surtout il y a de nouveaux contributeurs qui sont très actifs. Ca fait plaisir et devrait déboucher sur des améliorations de performances et des portages sur Windows 10 mobile et Ubuntu Touch.

    

Version 2.1

Elle est sortie début juin. En plus de quelques correctifs et améliorations mineurs, elle inclut un important refactoring du code pour faciliter la compréhension pour les nouveaux contributeurs.

Entre autres, la compatibilité avec le format d’archive d’Evopedia a été abandonnée, ainsi que du code inutilisé. Cf https://github.com/kiwix/kiwix-js/releases/tag/2.1.0.

Renommage

On a renommé le projet pour que ce soit plus proche de la réalité : « Kiwix JS » plutôt que « Kiwix HTML5 ».

Nouveaux contributeurs

Plusieurs personnes se sont intéressées au projet ces derniers temps : sharun-s, puis Jaifroid. Ils sont bien rentré dans le sujet, et ont contribué du code de qualité. Et puis dattaz a travaillé aussi sur l’utilisation de WebAssembly, qui parait une piste très prometteuse.

Moi qui me trouvais seul, me voilà très sollicité par des questions, des issues, des Pull Requests etc. Ce qui fait que mon activité de développement est supplantée par une activité de coordination/organisation (« Project Leader », pour être un peu prétentieux…).

Ca change un peu, et surtout c’est très motivant de voir que le projet suscite de l’intérêt ! Un grand merci à ces contributeurs de participer à le faire vivre.

Version pour Windows 10 mobile

Jaifroid a déjà une version qui fonctionne pas mal. Il compte proposer l’application sur le store Microsoft très prochainement.

Cette application (de type UWP) pourra également fonctionner sur Windows desktop. Mais, sur desktop, et malgré les optimisations en court, elle sera certainement plus lente et aura moins de fonctionnalités que la version classique de Kiwix (développée en C). Pour éviter que les 2 applis soient confondues, elle sera probablement nommée « Light » ou quelque chose de similaire. Par contre, elle devrait avoir l’avantage de pouvoir tourner sur Windows 10 S (qui ne permet que l’installation d’applications depuis le store Microsoft).

Jaifroid a proposé plusieurs patchs qui ont été fusionnés dans kiwix-js. Mais il reste des choses spécifiques à Windows (l’encodage des fichiers en UTF-8 avec BOM, par exemple), qui sont dans un repository à part : https://github.com/kiwix/kiwix-js-windows/.

Version pour Ubuntu Touch

ernesst a fait une application pour Ubuntu Phone, à partir du code de kiwix-js (sans le modifier). Elle est déjà disponible sur https://open.uappexplorer.com/app/kiwix, même si elle ne s’appuie pas encore sur une version releasée. On a réussi à ajouter la génération du package (.click) pour Ubuntu Touch dans l’intégration continue du projet (sur Travis).

Vous allez me dire que Ubuntu Phone a été abandonné par Canonical : c’est vrai. Ce n’est probablement pas ce portage qui va ramener beaucoup d’utilisateurs (même si https://ubports.com/ permet de continuer à l’utiliser), mais peu importe.

Améliorations en cours

En plus de diverses améliorations techniques ou ergonomiques, Jaifroid et sharun-s se concentrent surtout sur la partie performance. Ca tombe bien, il y a une bonne marge de progression sur ce sujet.

Les essais qu’ils font donnent déjà d’excellents résultats. La difficulté va être de choisir les optimisations les plus appropriées, et les intégrer proprement dans le code.

On peut espérer que cette future version 2.2 apporte des gains significatifs.

Perspectives

Une partie du travail actuel sur les performances se focalise sur le mode jQuery (qui est encore le mode par défaut). Ce mode a le gros avantage de fonctionner partout. Les ServiceWorkers ne sont pas encore supportés par Edge (le moteur du portage Windows), ni par les extensions Firefox, et ça reste à vérifier sur Ubuntu Touch. Donc on n’a pas trop le choix pour l’instant.

Mais sur le moyen/long terme, je pense que l’avenir reste :

  • côté backend : la compilation de la libzim en WebAssembly. Si on y arrive, ça permettrait de bénéficier de toute la richesse fonctionnelle de la libzim, ses optimisations etc. Mais ce n’est pas encore supporté par tous les navigateurs/moteurs
  • côté IHM : le passage sur des solutions techniques plus adaptées que jQuery pour l’injection des ressources : ServiceWorker et/ou WebRequest (la techno proposée par Mozilla en remplacement des ServiceWorkers qu’ils ne supportent pas dans une extension)
  • côté appareils mobiles : l’utilisation d’Apache Cordova pour avoir des APIs génériques permettant de lire les fichiers ZIM sans intervention utilisateur, et éviter les implémentations spécifiques à une plateforme

Il est également envisageable de créer des « custom apps » comme c’est fait sur Android. C’est-à-dire une appli Kiwix qui embarque le contenu ZIM avec. Cela a eu du succès sur Android (ex : Wikimed avec des données médicales : https://play.google.com/store/apps/details?id=org.kiwix.kiwixcustomwikimed). Un avantage est que ça éviterait à l’utilisateur de devoir télécharger puis sélectionner son fichier ZIM (on devrait pouvoir le lire directement). Mais ça ne pourrait fonctionner qu’avec des fichiers ZIM peu volumineux.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *