Accueil / Blog / Métier / Archives / Compte-rendu DrupalCon 2011 (London)

Compte-rendu DrupalCon 2011 (London)

Par Simon Georges publié 02/09/2011, édité le 11/03/2015
Compte-rendu DrupalCon 2011 (London)

La semaine dernière avait lieu le DrupalCon (réunion bi-annuelle de la communauté Drupal) à Londres. Makina-Corpus était sponsor, et à ce titre, j'étais présent. Voici le compte-rendu des conférences auxquelles j'ai assisté. (Ce post sera mis à jour au fur et à mesure que je tape le compte-rendu ;-)).

Introduction

Cette fois-ci, pour la première fois, l'intégralité des conférences a été filmé, elles sont disponibles directement sur le site, vous pourrez donc assister à toutes celles que vous avez ratées, ou le suivre presque comme si vous y étiez. De plus, je ne parlerai pas des keynotes, qui sont des conférences plus générales, et ne concernent pas directement Drupal.

DrupalCon, jour 1 (mardi 23 août)

The Path to a Mobile Drupal: Techniques, Tools and Failure, par John Albin Wilkins (JohnAlbin)

La façon "traditionnelle" de réaliser un site mobile : détection & redirection, ce qui se fait très bien, par exemple avec un multi-site Drupal. Les outils pour ce type de site : Domain, WURFL, Mobile Tools, Themkey, MobileKey.

Le "nouveau" concept à la mode est le Responsive Design :

  1. Flexible Grid
  2. Flexible Images
  3. CSS3 Media Queries

Data Migration into Drupal, par Moshe Weitzman

Cette conférence présentait le module Migrate, son utilisation et ses avantages. Moshe, Son maintainer, fondateur de la société Cyrve (récemment absorbée par Acquia) expliquait qu'il a mis dans le module tout ce qui lui servait dans le cadre de son activité de migration.
Ses avantages : le module permet un développement rapide, itératif, et parallèle. Itératif, parce que le module gère les retours en arrière, on peut donc tester la migration à chaque instant du développement du site. Parallèle, parce qu'on peut décomposer la migration en plusieurs sous-migration (une par type de contenu, une pour les utilisateurs, ...), on peut donc avancer en parallèle de la construction du site. De plus, le module dispose d'une interface permettant de présenter les migrations, le mapping, les éventuels champs non mappés (avec un commentaire), ainsi qu'un lien potentiel vers l'interface de bug-tracking utilisée par le projet. Il est également possible d'introduire des dépendances entre différentes migrations.

Le code est extrêmement documenté, notamment au sein des modules d'exemples fournis avec le module. Les différentes sources possibles sont : base de données, CSV, XML, JSON. Les différentes destinations possibles sont : Node, User, Field, Term, ou une simple table de la base de données. Toutes ces données sont des plugins, il est donc possible d'en rajouter en étendant des classes abstraites. Migrate est donc compatible (via le module complémentaire Migrate Extras avec de nombreux modules tels que OG, Flag, Profile2, Rules, User Relationships...

Des hooks sont disponibles pour agir sur les données migrées (prepare(), complete()). Des commandes Drush sont également disponibles pour lancer les migrations, tout peut donc être automatisé. Migrate s'intègre à Devel et xhprof.

Les fonctionnalités avancées sont:

  • "Highwater tracking" : Migrate ne traite que les "nouvelles" données, vous pouvez lancer plusieurs fois une migration avec uniquement une mise à jour de la migration précédente ;
  • Système de "record" : dans le cas où par exemple seule une colonne de la donnée change, le reste des colonnes ne sera pas impactée par Migrate ;
  • "Stub entities" : dans le cas où vous migrez des entités qui en référencent d'autres et que celles-ci ne sont pas encore migrées, des entités "bouchon" seront créés, et rattachées aux autres entitées lors de leur migration ;
  • Gestion des fichiers ;
  • Timers, intégration xhprof ;
  • Migration de contenu dynamique (voir les modules d'example livrés avec Migrate)

Pour terminer, je rajoute que cette conférence nous a donné envie de l'utiliser pour la migration du contenu d'un site que Makina-Corpus refait actuellement (en Drupal 7). Nous en sommes pour le moment très content.

This Code Stinks, par Larry Garfield (Crell)

Cette session présente une série de 7 indices pour déterminer si un code devrait probablement être refactoré. Crell précise que le code de n'importe qui est toujours perfectible, et donne juste une série de guides faciles à repérer, en prenant parfois comme example de mauvais code des fonctions du cœur de Drupal.

  1. "And" (exemple de drupal_form_submit : "retrieve, populates AND processes a form"). Le code fait probablement trop de choses pour être clair et optimal ;
  2. "Or" : Cette fonction fait ceci, ou parfois cela. Une fonction doit être cohérente, renvoyer toujours le même type de sortie, traiter toujours le même type de donnée ;
  3. "If" (exemple de comment_node_view). La fonction devrait être découpée, ou utiliser un code object avec des méthodes d'instance ;
  4. "DrupalTestCase" : un test unitaire est un test de la plus petite partie testable de l'application. DrupalTestCase installe Drupal, c'est un test système, et non unitaire => Il n'y a en fait PAS de tests unitaires dans le cœur de Drupal ;-) Corollaire : si vous ne pouvez pas tester unitairement votre code, c'est qu'il est mauvais ! Crell conseille donc d'éviter les variables globales, statiques, et de privilégier l'injection de dépendances ;
  5. "Documentation" : si vous ne pouvez pas documentez votre code, c'est que vous ne le comprennez pas. Les raisons pour ne pas le documenter : paresse, manque de compréhension, indifférence, embarassement. Que doit-on documenter ? TOUT (fonction, méthode, classe, propriété d'un objet, constante, paramètre) ;
  6. "Innapropriate intimacy" (couplage fort) : Exposer des détails d'implémentation est mauvais, il FAUT utiliser des interfaces ;
  7. "Impurity" : les variables globales, ou tout code qui ne peut être répété (celui qui affiche quelque chose à l'écran, qui modifie un fichier). Un code pur, invoqué avec les mêmes paramètres d'entrée, renvoit TOUJOURS la même sortie, sans effets de bord. Toutes les fonctions ne doivent pas être pures, par exemple quand le but de la fonction EST l'effet de bord, mais il faut isoler ce genre de fonction le plus possible.

Workbench: Managing Content Management, par Ken Rickard (agentrickard) et George DeMet (gdemet)

Cette session présentait une introduction à la suite de modules Workbench que je ne peux que vous recommander si vous souhaitez gérer un workflow de publication sur votre site, ou une gestion éditoriale poussée par rubriques. Elle est particulièrement adaptée aux structures éditoriales parfaitement identifiées, type musée, école ou université. En gros, la suite remplace, via 5 modules, une trentaine de modules en Drupal 6, simplifiant la construction du site et unifiant l'interface utilisateur. L'objectif avoué est de masquer la relative complexité de Drupal à l'utilisateur en lui offrant dans son espace personnel une gestion de "ses" contenus, fichiers et médias. Il se concentre ainsi sur sa contribution, sans que la gestion du site vienne alourdir sa tache. Nous l'utilisons à Makina-Corpus depuis sa première version publique en mars et c'est, pour moi, la principale raison actuelle de construire un site en Drupal 7.

DrupalCon, jour 2 (mercredi 24 août)

Multilingual Drupal Solutions: Use Cases and Modules, par Florian Loretan (floretan) et Jose Antonio Reyero del Prado (Jose Reyero)

Le multilinguisme dépend souvent du contexte fonctionnel, chaque cas est donc différent, d'où la difficulté d'implémenter une solution fonctionnelle pour l'ensemble des sites. Le multilinguisme affecte la création, le stockage, la modération, le listing, l'affichage de contenu. Les langues ne fonctionnent pas toutes de la même façon... La conférence commence donc par une définition des différents concepts associés à l'internationalisation :

  • Localisation : associer une langue à un contenu ;
  • Traduction : traduire le contenu en plusieurs langues ;
  • Détection de la langue souhaitée : dans quelle langue doit-on renvoyer la page ?
  • Sélection du contenu : que doit-on afficher ?
  • Ensembles de traduction : différentes pièces de contenu concernent le même sujet, dans différentes langues ;
  • Workflow de traduction du contenu : qui doit-on prévenir quand un contenu est mis à jour, qui doit relire, ...

La suite de la conférence est un passage en revue de différentes situations (blog, brochure, communauté, ...) avec les modules impliqués. Je vous invite à la regarder pour découvrir comment ces mainteneurs du module i18nopèrent.

Damn Quick Drupal: How to Make Drupal Perform and Scale Like a Rockstar!, par Michael Cooper (soyarma)

A faire

Node.js and Drupal, par Justin Randell (beejeebus) et Howard Tyson (tizzo)

Node.js est à la mode, il y a bien sûr une intégration Drupal ! Qu'est ce que Node.js ?

  • du javascript côté serveur, basé sur Google V8 ;
  • dirigé par des événements ;
  • les appels d'entrées/sorties asynchrones sont gérées par des librairies.

Ce javascript gère un seul processus qui s'occupe de la boucle d'événement principale, gérant les connections au serveur (Apache a souvent un processus par connection, et consomme donc beaucoup de mémoire par rapport à node.js). Node.js est bon pour :

  • La concurrence ;
  • Entrées / sorties asynchrones ;
  • Applications réseaux ;
  • Avoir un serveur léger.

Côté Drupal, une seule fonction à connaître : nodejs_enqueue_message($message); La suite de la conférence est une démonstration du module Chatroom, recodé à partir de Node.js pour Drupal7.

DrupalCon, jour 3 (jeudi 25 août)

Content Staging and Deployments in Drupal 7, par Dick Olsson (dixon_) et Katherine Bailey (katbailey)

Cette conférence présente une démonstration du module Deploy. Grâce à ce module, vous pouvez saisir du contenu sur un site, les ajouter à un plan de déploiement, et via un simple clic, les déployer sur un site (par exemple de production). Deploy se base sur le module Services pour l'échange de données et l'authentification. Le module semble prometteur, tout n'est pas encore bien géré. Mais il évolue rapidement. A noter que c'est un module utilisé par l'équipe qui travaille sur le site d'Al Jazeera. A tester, donc !

OG7 - This Time It's On!, par Amitai Burstein (Amitaibu)

Je vous suggère de regarder cette conférence pour voir ce qu'est un vrai "show". Vous n'en apprendrez pas tant que ça sur Organic Groups, mais vous vous ferez plaisir. Pour ceux qui ont l'habitude d'OG en Drupal 6, de nombreuses nouveautés sont tout de même au programme : gestion de rôles et de permissions par groupe (ceux qui ont utilisé OG User Roles se souviennent peut-être de la souffrance que c'était il y a 2-3 ans, c'est désormais pleinement intégré au module), le groupe est une entité, l'appartenance à un groupe aussi, on peut donc ajouter des champs (tels que le message de requête d'appartenance à un groupe). En bref, le module est beaucoup plus riche et complet.

Bilan

Des conférences très variées, une ambiance extrêmement chaleureuse, l'opportunité de discuter plus avec la communauté française, une bouteille de champagne gagnée (merci à Evolving Web pour leurs mots croisés et pour le champagne !), un excellent DrupalCon, je recommande à tous ceux qui en ont la possibilité d'y aller la prochaine fois (le prochain est à Denver au printemps prochain, celui d'après à Munich l'été prochain). Mon seul regret : n'avoir pas fait plus de BoFs (des discussions organisées en parallèle des conférences, avec beaucoup plus d'interactions). Ce sera pour la prochaine fois !

ABONNEZ-VOUS À LA NEWSLETTER !
Voir aussi
Bien débuter avec les transactions SQL Bien débuter avec les transactions SQL 09/12/2015

BEGIN et COMMIT vous connaissez, mais ACID ou LOCK ça vous dit quelque chose ?

La roadmap Drupal 8 La roadmap Drupal 8 05/04/2017

Que va-t-il se passer dans le cœur du CMS Drupal dans les prochains mois ?

10 modules Drupal que vous n'utilisez (peut-être) pas assez 10 modules Drupal que vous n'utilisez (peut-être) pas assez 10/12/2014

Dans l'équipe Drupal de Makina Corpus, nous avons l'opportunité de travailler sur de nombreux ...

Gérer ses dépendances Drupal 7 avec Composer Gérer ses dépendances Drupal 7 avec Composer 08/12/2016

Drupal.org distribue maintenant les modules et thèmes dans son propre dépôt Packagist, voyons ...

Utiliser Migrate en Drupal 8 Utiliser Migrate en Drupal 8 20/12/2016

Trucs, astuces et points d'attention pour l'import de données avec Migrate en Drupal 8.