Drupal

Drupal au CodeFest 2.1 de PHP Québec

En fin de semaine, PHP Québec organise CodeFest 2.1, un évènement où programmeurs de tous horizons et de tous niveaux seront accueillis pour participer au développement de leur logiciel libre préféré. Une très belle occasion de découvrir les techniques employées par différents projets, de rencontrer d'autres programmeurs et, d'une manière générale, de simplement se motiver à se jeter à l'eau avec un projet!

L'un des thèmes de l'évènement concerne l'implémentation de test automatisés, un thème qui tombe à point compte tenu de la récente intégration de la plateforme de tests automatisés SimpleTest dans le noyau du futur Drupal 7.

CodeFest 2.1 arrive alors que je n'ai même pas encore eu le temps de conclure sur le récent sprint de recherche auquel j'ai eu la chance de participer, mais je compte bien utiliser ce nouvel évènement comme prétexte pour compléter quelques tests en rapport avec le moteur de recherche de Drupal.

Je serai donc présent samedi et heureux d'aider quiconque souhaiterait mettre la main à la pâte avec Drupal 7! Patrick Fournier, mon associé à Whisky Echo Bravo, sera aussi sur place.

L'évènement est tenu simultanément à Montréal et Sherbrooke. Même si j'aime beaucoup la ville où j'ai étudié, pour des raisons pratique c'est bien sûr à Montréal que je serai. ;)

Si l'évènement vous intéresse, n'hésitez pas à vous inscrire sur la fiche Drupal de l'événement!

En direct du Minnesota

North Star Blankets

Ces jours-ci, la mention «live from the Minnesota Search Sprint» (en direct du sprint de recherche du Minnesota) apparaît régulièrement en en-tête des soumissions de modifications apportées au moteur de recherche de Drupal.

En effet, tel que je l'avais annoncé récemment, une petite équipe de programmeurs (Earnest Berry, Robert Douglass, Chad Fennell, Doug Green, Djun Kim, Blake Lucchesi et moi-même) se trouve maintenant en plein «sprint» de programmation pour enrichir le module search de Drupal. Notre centre d'opérations se trouve sur l'immense campus de l'Université du Minnesota à Minneapolis, où Chad Fennell a gentiment pris soin de la logistique.

Notre principal défi consiste à atteindre un bon équilibre entre les réalisations concrètes et la vision globale du projet. Établir une feuille de route pour l'avenir est important, mais dans l'univers du logiciel libre, la seule chose vraie c'est le code! Les plans à long terme sont particulièrement difficiles à tenir dans cet univers, puisque Drupal évolue avec les disponibilités des contributeurs et les priorités des projets qui financent leur travail. La vélocité même du développement de Drupal en fait une cible particulièrement mouvante.

Par conséquent, ces deux derniers jours nous avons alterné entre la réalisation de tâches simples (pour les résultats concrets) et les remue-méninges (pour les enjeux de plus grande envergure), avec un souci d'aligner même les tâches mineures sur les objectifs plus importants, histoire d'aller dans la bonne direction, petit pas par petit pas. Il s'agit d'un réel puzzle; des pièces insignifiantes en elles-mêmes prendront, une fois accolées aux autres, tout leur sens.

Quelques pistes...

Voici quelques-unes des pistes que nous explorons dans ce sprint :

  • Unification du processus d'analyse lexicale appliqué à l'indexage et lors de la recherche.
  • Analyse lexicale au moyen d'une chaîne de traitements personnalisable, basée sur la même architecture que les filtres d'entrée de Drupal.
  • Varier l'analyse lexicale en fonction de paramètres tels la langue ou le format du contenu. Par exemple, des algorithmes de lexémisation distincts s'appliqueraient en fonction de la langue.
  • Calcul de classement des résultats extensible. Hormis les facteurs de base déjà prévus pour établir le classement des résultats, de nouveaux facteurs pourront être programmés dans des modules tiers et activés à la demande par l'administrateur d'un site. Par exemple, un site de commerce électronique pourrait rehausser le classement d'un produit en fonction de son volume de ventes.
  • Possibilité d'activer ou de désactiver différents modules de recherche séparément. Dans Drupal 5 et 6, activer le module search active toutes les fonctions de recherche, sur les noeuds et les utilisateurs, même si toutes ne sont pas pertinentes au site.
  • Abstraire la représentation des résultats pour éventuellement permettre la construction de facettes à partir d'un ensemble arbitraire de noeuds, qu'ils proviennent, par exemple, d'une recherche ou d'une vue.
  • Utiliser un objet plus «intelligent» qu'une chaîne de caractères pour représenter la requête, tout au long du processus de recherche. Cet objet pourrait être construit via une interface de programmation (accessible à n'importe quel module) ou via une chaîne de caractères. Il pourrait également produire la chaîne de caractères qui lui correspond en sortie, pour génération d'hyperliens. Présentement, les modules Faceted Search et ApacheSolr ont tous deux des éléments qui s'approchent de ceci. Ultimement, si cet objet pouvait représenter une requête du module Views, un grand pas serait accompli pour que des facettes puissent se rattacher directement à une vue...
  • Scinder la logique d'indexation de la logique de recherche. Les fonctions de recherche de base sont un fardeau inutile pour les site utilisant Faceted Search ou les filtres de recherche de Views 2 — ces modules utilisent l'index de base, mais implémentent leur propre logique de recherche.
  • Unifier la recherche d'éléments hétérogènes dans une seule page de résultats. Ceci pourrait rendre particulièrement utile l'éventuelle indexation d'éléments comme les blocs, les vues (du module Views) et les panneaux (du module Panels).
  • Indexer des données qui sont présentement omises de l'index afin d'augmenter la pertinence des résultats : Chemin (URL) du contenu, nom de l'élément de menu associé au contenu, etc.
  • Abstraire le système d'indexation des contenus afin de pouvoir lui substituer l'indexation par un moteur externe, par exemple Solr ou Sphinx.

Participer, en savoir plus...

Que vous soyez sur place ou non, il est facile de participer à ces travaux ou de les suivre de plus près! Il suffit d'examiner les propositions, les réviser, les tester, les commenter!

Demain sera, déjà, la dernière journée du sprint. En plus de poursuivre certaines des pistes présentées ci-haut, nous comptons examiner les questions de performance d'exécution. À suivre!

Journée portes ouvertes Design Montréal

Montréal vivait hier sa seconde édition des journées portes ouvertes Design Montréal. Grâce à l'agence de création, cliente et amie, Bluesponge, j'ai eu la chance de participer à l'évènement! En effet, depuis l'automne dernier, mon associé au sein de Whisky Echo Bravo (notre nouvelle boite de développement Drupal) et moi-même sommes «colocs» de Bluesponge qui, après son succès de l'année dernière, ne pouvait manquer l'occasion d'ouvrir grandes ses portes aux visiteurs.

Samedi, tandis que toute l'équipe de Bluesponge s'éclatait à transformer la salle de réunion en terrain de boulingrin, un bureau en autel de prière en faveur des Canadiens ou à mettre au point l'une des multiples installations interactives, nous avons, de notre côté, transformé un coin du bureau en point de rencontre avec Drupal.

Nous avons monté une petite forêt de ballons d'hélium auxquels étaient attachées de petites bribes d'information à propos de Drupal... Les curieux pouvaient tirer sur la corde retenant un ballon pour découvrir le propos qui y était rattaché. Quelques exemples : «Drupal vous rend autonome pour gérer votre site web», «Drupal est un logiciel libre», «plus de 250 000 sites reposent sur Drupal», «Drupal vous permet d'innover», «Drupal favorise la collaboration», et bien d'autres...

Dimanche, les visiteurs sont venus en grand nombre (malgré la pluie) découvrir notre milieu de travail quelque peu transformé, tout en se délectant de pancakes aux bleuets offertes par Bluesponge... Nous espérons que notre installation fut intéressante pour un public n'ayant même jamais entendu le nom «Drupal» auparavant et, en cette journée ludique, pas nécessairement intéressé à plonger dans des détails techniques ou à s'asseoir devant un écran d'ordinateur.

Chose certaine, Druplicon a charmé beaucoup de monde, puisque nos macarons à son effigie se sont envolés comme de petits pains chauds! Voici quelques images de l'évènement... On peut s'attendre à en voir plus bientôt sur le blogue des «Spongies».

Macarons Druplicon
Ballons
Ballons
Ballons
Bureaux
Bureaux
Écriture avec un contrôleur Wii
Projection vidéo
Boulingrin intérieur

Sujets: Design · Drupal · Montréal

Doter Drupal d'un moteur de recherche plus performant

Drupal possède un excellent moteur de recherche par mots-clés, le module search qui est fourni à la base avec Drupal. On peut employer plusieurs opérateurs de recherche, l'intersection de mots-clés (ET), l'union (OU), la négation (NON) de même que la recherche de phrases complètes. L'algorithme de classement tiens compte de plusieurs facteurs tels la fréquence du mot, son balisage HTML, la popularité et la date de publication du contenu. En étant détaché de la mise à jour des contenus via la commande cron, le processus d'indexation ne nuit pas au fonctionnement rapide du site. Par-dessus tout, le moteur est très facile à utiliser puisqu'il suffit de deux clics pour activer le module!

Par conséquent, le module search sert les besoins de milliers de sites. Cette popularité extrême en fait aussi un module fréquemment critiqué. On voudrait plus facilement personnaliser l'interface de recherche et les pages de résultats, accroître la vitesse sur les sites très lourdement chargés de contenus, brancher d'autres algorithmes de calcul du classement, rechercher des mots partiels, rechercher du texte dans des champs spécifiques, rechercher des plages de valeurs, se faire suggérer des termes similaires, rechercher dans les fichiers joints, etc. Bâtir un moteur de recherche qui répond à toutes les demandes n'est pas une mince affaire!

Plusieurs modules additionnels visent à répondre à certaines de ces demandes, notamment Faceted Search (je dois le mentionner :)), Views Fast Search, Apache Solr, Fuzzy Search et Swish-E.

À chaque nouvelle version de Drupal, le module search connaît son lot d'améliorations. Dans Drupal 6, les améliorations ont surtout concerné la vitesse d'exécution des requêtes de recherche. Pour le futur Drupal 7, la course aux améliorations est lancée et, à l'occasion d'un sprint inédit qui aura lieu du 9 au 11 mai prochain à l'Université du Minnesota, atteindra une vitesse folle! En effet, c'est à cette date que sera tenu le Search Sprint, une rencontre de plusieurs développeurs chevronnés impliqués dans le développement de Drupal et d'outils de recherche. J'aurai la chance d'y prendre part moi-même, avec l'appui du Laboratoire NT2 de l'UQAM — qui utilise mon moteur de recherche à facette dans de nombreux projets et qui souhaite poursuivre le développement d'outils de recherche avancés pour Drupal — et de Acquia. Les autres participants ayant confirmé leur présence jusqu'à présent : Earnest Berry, Robert Douglass, Chad Fennell, Doug Green, Michael Hess, Djun Kim, Blake Lucchesi.

Lors de la dernière conférence Drupalcon à Boston, j'ai pu constater à quel point réunir au même endroit des développeurs intéressés pouvait créer des synergies et orienter les efforts autour de directions communes. Semblable au Search Sprint, un sprint s'est tenu à Paris et vient de se terminer avec la mise en place d'un système de tests unitaires automatisés pour Drupal, un gain énorme qui permettra d'accélérer le développement de la plateforme sans risquer d'en compromettre la qualité. Bref, ce genre d'évènement a fait ses preuves et, malgré la nature décentralisée et géographiquement dispersée à laquelle nous sommes habitués dans l'univers Drupal, tout le monde s'entend sur les bénéfices de ces sprints!

Nous ne règlerons pas tous les enjeux de la recherche sous Drupal lors d'un sprint de 3 jours, mais on pourra s'attendre à des résultats plus qu'intéressants.

Photos de Drupalcon Boston 2008

J'avais quatre journées pour immortaliser en images cette singulière congrégation de plus de 800 geeks à Drupalcon! Mais je me suis plutôt affairé à courir les présentations et les groupes de discussion... Heureusement, de nombreuses autres personnes se sont chargées de la chasse photographique, comme en témoignent les milliers de photos de Drupalcon Boston 2008 sur Flickr.

L'État de Drupal

Du 3 au 6 mars dernier, plus de 800 personnes intéressées par Drupal, concepteurs, programmeurs, designers, architectes de l'information, entrepreneurs et utilisateurs provenant de tous les coins de la planète (une dizaine venait de Montréal), ont convergé sur Boston pour la conférence Drupalcon Boston 2008. Voilà un évènement que je ne pouvais pas manquer!

Pour lancer la conférence, Dries Buytaert, fondateur du projet Drupal, a présenté son traditionnel discours "State of Drupal" faisant un tour d'horizon des plus récents accomplissements du projet et donnant un aperçu de ce qui s'en vient.

Des statistiques qu'il a présentées semblent confirmer une tendance ayant déjà été relevée par le passé: L'intérêt envers Drupal double à chaque nouvelle version majeure du logiciel. Drupal 6 a été lancé en février dernier après 9425 modifications au code source réalisées par 741 personnes. Un mois après son lancement, Drupal 6 avait déjà été téléchargé plus de 100 000 fois. En comparaison, le développement Drupal 5 avait sollicité 472 personnes pour 4927 modifications, tandis que cette version connaissait 50 000 téléchargements dès son premier mois d'existence.

Par ailleurs, à partir de sondages réalisés l'année dernière auprès de milliers de membres de la communauté Drupal, autant utilisateurs que développeurs, onze priorités ont été identifiées afin que le futur Drupal 7 réponde le mieux possible aux attentes exprimées:

  1. Améliorer la prise en charge des contenus multimédia.
  2. Intégrer la personnalisation des types de contenus.
  3. Intégrer l'édition WYSIWYG.
  4. Améliorer la performance.
  5. Améliorer les outils pour structurer et organiser les contenus.
  6. Intégrer une partie du module Views.
  7. Automatiser les mises à jour.
  8. Améliorer l'architecture de contrôle d'accès.
  9. Améliorer les interfaces internes de programmation.
  10. Améliorer les interfaces externes de programmation (importation/exportation, services Web).
  11. Améliorer la convivialité.

Bien qu'il y ait peu d'éléments nouveaux dans cette liste, l'idée maîtresse est de solidifier ces aspects au sein du noyau Drupal afin d'offrir une plateforme plus solide pour les modules tiers. Par choix délibéré, ces objectifs demeurent plutôt vagues. En effet, il s'agit ici de logiciel libre! Par conséquent, le développement se fera, comme d'habitude, au gré des participants, en fonction de leurs intérêts et de leurs besoins, ou de ceux de leurs clients.

En outre, une stratégie de développement fort judicieuse (et ambitieuse) a été proposée: Développer une suite complète de tests unitaires pour le noyau Drupal. Ce plan est motivé par l'hypothèse selon laquelle la phase de "stabilisation" précédant le lancement de Drupal 7 pourrait être réduite à seulement trois mois, si une telle suite de tests existait, au lieu des sept mois ayant été nécessaires lors du cycle de développement de Drupal 6. Le pari a de quoi faire jubiler n'importe quel programmeur: Le cycle complet ayant une durée d'environ 12 mois, au lieu de disposer de seulement cinq mois pour développer de nouvelles fonctionnalités cool et hallucinantes pour le noyau Drupal, c'est de 9 mois dont nous disposerions!

Enfin, Dries s'est longuement attardé sur l'importance accrue des données (par rapport aux fonctions) dans un contexte "post-Web 2.0". L'interopérabilité est primordiale, surtout si l'on considère Drupal comme une plateforme de services Web. À cet égard, RDF jouera vraisemblablement un rôle important. D'ailleurs, il m'est apparut, tout au long des quatre jours de la conférence, qu'un grand nombre de personnes s'intéressait à la question et travaillait activement à harnacher le Web sémantique. Ainsi, peut-être Drupal contribuera-t-il à grandement élargir la portée du Web sémantique?

RSS feed