Planète

Par Artusamak
Julien Dubois

Drupal et Scrum depuis les tranchées - Gérer le backlog du sprint

Drupal et Scrum depuis les tranchées - Gérer le backlog du sprint

Votre backlog de sprint est prêt, l'équipe s'est engagée à livrer le périmètre convenu et n'attend plus qu'une chose, poser les mains sur son clavier pour coder ! Lâchez les fauves, l'heure est venue de les laisser s'exprimer.

La prochaine grande étape du projet va résider dans le pilotage des deux ou trois semaines qui composent le sprint. L'équipe va passer beaucoup de temps avec le backlog du sprint, il doit respirer au rythme des commits et des échanges entre les équipiers. Une des valeurs importantes des méthodes agiles est l'auto-gestion, chaque personne doit être pro-active pour s'attribuer du travail et lever les obstacles qu'elle rencontre lors de la réalisation des stories techniques ou fonctionnelles. Il est capital qu'à chaque fois qu'une story est démarrée, change d'état pour être envoyée en testing ou se termine, le backlog du sprint soit mis à jour en conséquence. Le backlog permet d'un simple coup d'oeil de savoir qui travaille sur quoi et de suivre l'état d'avancement du sprint sans avoir à solliciter une personne.

Pour les gens pressés : TL;DR.

Identifier les goulots d'étranglement

Parfois l'équipe a beau se montrer concernée, elle a le sentiment de faire du sur place. Il y a 6 ou 7 stories qui n'arrivent pas à démarrer. Comment comprendre ce qui bloque ? Les stories pourront-elles vraiment être traitées dans ce sprint ? Pour répondre à ces questions, gardez le numéro de votre marabout préféré dans votre poche, on va plutôt chercher à répondre à cela de façon analytique.
Deux outils (au moins) sont à notre disposition pour mesurer notre activité, le burndown chart et le cumulative flow chart.

Le premier est une courbe illustrée ci-dessous sur laquelle on rapporte le nombre de jours écoulés en abscisse et le nombre de points de complexité en ordonnée. Chaque jour nous allons rapporter le nombre de points de complexité restant à faire. On démarre au premier jour à 120 si c'est la valeur de l'engagement de l'équipe et on soustrait tous les jours le nombre de points de complexité que l'équipe a réussi à fermer. Le but du jeu étant d'arriver à 0 avant le dernier jour du sprint. Cette courbe s'appelle un burdown si vous partez de 120 pour aller à 0, elle s'appelle un burnup si vous partez de 0 pour aller à 120 avant le dernier jour. On représente souvent le rythme idéal sur la courbe pour comparer la vitesse de progression réelle.

Crédits images : I8abug CC BY-SA 3.0 / Clarios Technologie

Oui mais voilà, le burndown ne montre pas tout, comment se rendre compte si de nombreuses stories sont coincées en attente de tests ou en attente de réponse ? Dans ce cas là nous devons nous appuyer sur un autre outil, le cumulative flow chart. Qu'est ce que c'est ? Ne faites pas cette tête, c'est très simple. Il s'agit un graphique qui représente le cumul des points de complexité pour toutes les stories du sprint. De cette façon vous savez si vous avez un grand écart entre le nombre de stories en cours de développement, de test ou en attente de réponse. Cela permet de repérer les goulots d'étranglement. Une image valant mille mots, en voici un exemple.


Crédit image : Clarios Technologie

Dans l'exemple présenté, on ne voit à aucun moment une masse prendre le dessus sur l'autre, s'il y avait une prédominance du testing on demanderait à l'équipe de donner un coup de main en testing afin de fermer des stories avant d'en commencer d'autres. Le but étant je vous le rappelle de livrer le plus de valeur ajoutée possible. Avoir des stories commencées mais non terminées ne nous avancerait pas.

Quel flux de travail pour mes stories ?

Un point important pour que l'équipe avance sans à-coups est qu'elle connaisse le flux de travail que les stories doivent suivent. Il n'y a pas UN flux de travail à suivre, c'est à vous de l'adapter au projet et à l'équipe mais je vais vous présenter les états qui composent celui que l'on suit chez Happyculture.

  • A faire : Etat par défaut d'une story.
  • En cours : Utilisé dès qu'un développeur choisi de travailler sur une story.
  • Résolu : Sert à indiquer que les développements sont terminés mais pas encore disponibles pour être testés, la story reste assignée au développeur tant qu'elle n'est pas prête à être testée. Cela nous sert principalement à cause de la revue de code, une fonctionnalité n'est pas disponible sur les environnements de test tant qu'elle n'a pas été intégrée au dépôt principal.
  • Besoin d'informations : Un développeur a une question sur un point précis ou le product owner pendant ses tests veut vérifier quelque chose. La personne qui se voit assignée la tache est celle qui doit répondre à la question.
  • A tester : La story est prête à être testée, le lien vers la page précise et les instructions pour clore la tache sont précisées en même temps que la story est assignée au product owner.
  • Fermé : Tout le monde a bien fait son travail, la story fonctionne comme prévu.

Comment gérer les demandes à côté ?

Il peut arriver au cours des tests de stories que le / la product owner tombe sur un bug d'intégration ou sur une phrase à reformuler. Pour gérer ces demandes particulières nous ne ré-ouvrons pas des stories qui auraient pu être candidates à recevoir ces demandes, on s'appuie plutôt sur une story particulière qui se promène de sprint en sprint et qui est un agrégat de toutes les petits demandes du genre. L'équipe y consacre quelques points de complexité à chaque sprint selon les priorités. Si certaines taches sont plus grosses, on ouvre une story dédiée qui sera intégrée au sprint suivant si nécessaire.

Au final, le backlog du sprint est au cœur de l'activité, il permet de s'assurer que tout le monde avance sur ses stories et permet de constater qu'aucun goulot d'étranglement ne se forme, si tel est le cas il est de la responsabilité de l'équipe de trouver les solutions, le scrum quotidien est là pour ça.

TL;DR

  • Le backlog du sprint doit à tout moment résumer l'état réel du projet
  • C'est l'équipe qui met à jour le backlog
  • Le burndown ou burnup combiné au cumulative flow chart permet de contrôler finement le rythme d'avancée de l'équipe
  • Si des goulots d'étranglement apparaissent, l'équipe réagit
  • L'équipe connaît et suit un flux de travail clair
  • Si des demandes non prévues se présentent on les regroupe au sein d'une story spéciale
Par Kgaut
Kevin Gautreau

Installer drush sous linux via composer

Drush est un outil indispensable pour développer sous drupal, il permet de contrôler son instance de site via le terminal pour les taches quotidiennes sur un site : téléchargement, activation de modules, vidage de cache, mise à jours de modules ou du core... Une fois que l'on y a goûté, on ne peut plus s'en passer.

Il existe un tas de méthode pour installer drush et il est parfois difficile de s'y retrouver : via les dépôts, PEAR, installation manuelle... Mais maintenant le moyen de plus simple est d'utiliser composer.

Si vous n'avez pas composer d'installé :

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Ensuite on peut installer Drush :

Pour la version 6 (compatible avec drupal 6 et 7) :

composer global require drush/drush:6.*

Pour la version 7-dev (compatible avec drupal 6, 7 et 8, mais en cours de développement) :

composer global require drush/drush:dev-master

Personnellement j'utilise la version 7 de drush (vu que je commence à faire mumuse avec la version 8 de drupal)

Quelques liens sur drush que je vous conseille :

Tags: 

Drupal SA-CORE-2014-005, mise en perspective et enseignements

photo d'un phare

Le mercredi 15 octobre 2014, la Drupal Security team a publié un avis de sécurité critique, sous la référence SA-CORE-2014-005 (CVE-2014-3704), concernant une vulnérabilité hautement critique permettant à un attaquant anonyme de compromettre n'importe quel site Drupal 7 par une attaque de type injection SQL. Faisons un petit retour sur la chronologie de l'évènement pour le mettre en perspective et essayer d'en dégager quelques enseignements.

Thème 
Drupal
Sécurité
Sécurité Drupal

Par Kgaut
Kevin Gautreau

À la découverte de drupal 8 - #1 : Ma première entité

Ayant l'envie de tester Drupal 8, sans prendre trop de risques, je me suis décidé à prendre comme prétexte la création d'un site de pronostics pour l'euro 2016 (oui je m'y prends tôt).

Un petit coup de modélisation de mon schéma de données, et hop c'est parti.

Pour info, je vais tenter de faire plusieurs notes comme celle là, et autant en faire profiter tout le monde, mon code sera sur Github, au fur et à mesure, car cela évitera d'avoir des posts de 4km de long, l'adresse du projet sur Github : https://github.com/kgaut/mespronos

Le contexte

Installation du Drupal, je suis parti sur la beta 2.

Petites modifications dans le fichier settings.php pour sortir les dossiers de configurations de Drupal en dehors du docroot (donc non accessible via le web) :

$config_directories['active'] = '../config/active';
$config_directories['staging'] = '../config/staging';

Ensuite on rentre dans le vif du sujet avec la création de ma première entité drupal 8.

Je vous présente l'entité "League" qui contiendra les différentes compétitions de sport sur lesquelles des concours de pronostics seront organisés.

  • lid : Clé primaire
  • name : le nom de la compétition. Ex : "Ligue 1 2014-2015"
  • classement : doit-on calculer le classement pour ce concours ? (oui pour un championnat, non pour un mondial ou un euro)
  • status : archivé, en cours, terminé...

Mon entité sera contenue dans un module qui s’appellera "mespronos_leagues", car j'aime bien avoir un module par fonctionnalité.

Let's generate !

Pour la génération du module ainsi que de l'entité j'ai utilisé le super projet "console", que j'ai installé via composer. Je vous invite à découvrir l'installation et l'utilisation de ce module via ce tutoriel à l'adresse suivante : Créer un module Drupal 8 en 30 secondes | Flocon de toile.

J'ai donc crée mon module à l'aide de la commande suivantes

bin/console generate:module

une fois le module généré, il est temps de créer l'entité, toujours avec console, via la commande suivante : 

bin/console generate:entity:content

et là c'est magique, le contrôleur, les routes, l'entité, l'arborescence des dossiers... tout est généré automatiquement :

Encore une fois, sur la génération d'entités, tout est encore superbement expliqué sur ce site : Créer une entité Drupal 8 en 10 secondes top chrono | Flocon de toile

arborescence-entite-drupal8.png
 

il ne reste plus qu'à personnaliser selon nos besoins.

Ajout de propriétés

Une entité est "fieldable" c'est à dire que l'on peut très bien lui ajouter des champs via l'interface d'administration, comme l'on ferai avec un type de contenu. Mais comme vous le savez sûrement l'ajout d'un champ entraîne la création de deux tables (une pour la valeur, et une pour les révisions) ainsi une baisse de performance lors de l'affichage de notre contenu car cela génère forcement des jointures.

Une autre possibilité offerte par les entités est de définir des propriétés, c'est à dire des attributs qui seront présents directement dans la même table que notre entité.

Il faut pour cela modifier la méthode baseFieldDefinitions de notre entité (dans le fichier src/Entity/League.php)

Voici un exemple de code pour ajouter mon attribut "classement", qui est un booléen non affiché en front, mais présent sur le formulaire d'administration.

$fields['classement'] = BaseFieldDefinition::create('boolean')
  ->setLabel(t('Classement activé'))
  ->setDescription(t('Doit-on calculer le classement entre les équipes pour cette competitions'))
  ->setDisplayConfigurable('form', TRUE)
  ->setDisplayConfigurable('view', TRUE)
  ->setDefaultValue(TRUE)
  ->setDisplayOptions('form', array(
    'type' => 'boolean_checkbox',
    'settings' => array(
      'display_label' => TRUE,
    )
  ))
  ->setDisplayOptions('view', array(
    'type' => 'hidden',
  ));

Pour voir l'intégralité de mes modifications, vous pouvez consulter le fichier sur github : https://github.com/kgaut/mespronos/blob/master/modules/custom/mespronos_...

Personnalisation des routes et du menu

Dernier point que je souhaiter modifier, les routes et le menu. Dans drupal 8 le HOOK_menu n'existe plus, tout à été remplacé par de la configuration dans des fichiers YAML (welcome Symfony)

Les routes sont les chemins d'accès, et sont défini dans le fichier mespronos_leagues.routing.yml.

Les éléments de menu sont eux dispatchés dans plusieurs fichiers suivant leur type :

drupal7menutodrupal8.png

drupal7menutodrupal8.png, par https://www.drupal.org/node/2118147

Dans l'admin dans la partie contenu, je voulais un onglet menant à la liste de tous mes compétitions, comme cela :

Onglet dans drupal 8
 

J'ai donc pour cela modifié le fichier mespronos_leagues.routing.yml et ajouté les lignes suivantes :

league.list:
  title: 'Compétitions'
  route_name: league.list
  description: 'Liste de toutes les compétitions'
  base_route: system.admin_content

C'est tout pour aujourd'hui, n'hésitez pas à consulter mon code sur github, j'ai mis l'intégralité de ce module, et j'ajouterai au fur et à mesure la suite. Si vous voyez des erreurs, des améliorations, n'hésitez-pas à me faire des push-request.

Le projet sur github : https://github.com/kgaut/mespronos

Quelques liens qui m'ont beaucoup servis :

Tags: 

Par Kgaut
Kevin Gautreau

Drupal 8 > le thème d'administration Adminimal est disponible

Je fais un petit peu joujou avec la version 8 de Drupal (la seconde version beta est sortie il y a quelques jours).

Et pour info la version 8 du superbe thème d'administration "Adminimal" est disponible. J'avais déjà rapidement présenté le thème ici. Alors même si toutes les customisations de la version 7 ne sont pas encore disponible, son utilisation améliore encore l'experience d'administration de Drupal 8.

Plus d'information sur la page du projet : https://www.drupal.org/project/adminimal_theme

 

Tags: 

Créer une entité Drupal 8 en 10 secondes top chrono

Compteur vitesse voiture

Dans un précédent billet, nous avons découvert le projet Console qui permet d'automatiser la création de modules Drupal 8 et d'autres taches récurrentes. Découvrons ensemble quelques autres fonctionnalités très intéressantes, au travers notamment de la génération d'une entité Drupal 8 sur mesure.

Thème 
Drupal 8
Modules
Développement

Par Simon Georges
Simon Georges

Drupal, tous des experts ?

Comment faire du Drupal ? Faut-il utiliser ce module ou préférer le coder ? Mon budget permet-il de réaliser ces développements ? Ne vous posez plus ces questions et venez vous former avec des experts !

Par admin

Forum PHP - Montrouge 23-24 octobre 2014

Le Forum PHP 2014, l'événement majeur de l'AFUP et la communauté PHP francophone depuis plus de 10 ans, aura lieu à Montrouge les 23 et 24 octobre.

Il s'agit d'un rendez-vous incontournable autour du langage PHP, avec cette année les grandes thématiques suivantes :

  • Retours d'expérience PHP à grande vitesse
  • Gagner du temps avec l'écosystème open-source PHP
  • Agile et Devops en PHP
  • Les solutions du développeur PHP rapide

et bien sur des têtes d'affiches célèbres, que vous retrouverez sur le programme de ce grand événement : http://afup.org/pages/forumphp2014/sessions.php

On y parlera de Drupal (Live coding : construisons ensemble notre premier site Drupal 8) ou d'outils intéressant Drupal et d'autres langages (platform.sh le PAAS qui résout le casse tête dev/staging/prod)

Les membres de l'association Drupal France et Francophonie, à jour de cotisation, peuvent bénéficier d'une remise sur le prix de l'entrée. Pour cela, il suffit d'envoyer un courriel au bureau (bureau [à] listes.drupalfr.org) pour que l'on vous communique le code "coupon".

Enfin, de nombreuses surprises vous attendent comme les ateliers pratiques, les cliniques co-organisés par les sponsors, une soirée communautaire, etc...

Taxonomy upgrade extras : 
En page d'accueil : 

Créer un module Drupal 8 en 30 secondes

Chronomètre

Avec l'intégration de composants de Symfony2, l'adoption du format YAML, la refonte complète de Drupal 8 vers la programmation orientée objet, etc. l'initialisation d'un module Drupal 8 est devenue plus complexe (au  sens chronophage) que sur Drupal 7 où il suffisait de déclarer son module (fichier .info) et de créer un fichier .module pour pouvoir commencer tout de suite à développer des fonctionnalités métier.

Thème 
Développement
Modules
Drupal 8

Par admin

Coupon de réduction pour Drupagora

L'association Drupal France et Francophonie (DrupalFR) est partenaire de Drupagora 2014. Il s'agit d'un événement dédié aux Chefs de Projets et DSI.

Pour l'édition 2014, un programme de qualité est proposé avec les thématiques suivantes :

  • Un cycle dédié à l’industrialisation
  • Un cycle dédié au e-commerce
  • Des conférences dédiées aux bonnes pratiques, au cloud et à la sécurité
  • De nombreux retours d’expérience

Drupagora

Enfin, grâce à l'association, vous pouvez bénéficier d'une remise sur le prix d'entrée de 50 % jusqu'au 24 octobre et après 30 %.
Ce coupon de réduction est disponible sur simple demande à bureau [ALT] listes [POINT] drupalfr [POINT] org, si vous êtes membre de l'association et à jour de votre cotisation

Le programme de Drupagora 2014
Site de l'événement Drupagora 2014

Manipuler les menus de Drupal 8 (le retour)







Dans un précédent billet, nous avions pu voir que l'API Drupal 8 pour manipuler les menus avait assez peu changé. Mais c'était encore avec une version alpha, et les choses ont quelque peu évolué depuis...et notamment la sortie de la première version bêta de Drupal 8. Repassons en revue quelques techniques pour pouvoir intervenir sur un menu sous Drupal 8.

Thème 
Menu
Thème
Drupal 8

Par juliendubreuil
julien dubreuil
Depuis 2009 maintenant, je développe avec le CMS/CMF Drupal. J’étais à la recherche d’un framework capable de remplacer un projet et je n’ai jamais arrêté de m’en servir depuis ce moment.

Liste des modules pour Drupal Commerce

Liste de module pour Drupal Commerce

Que vous soyez à la recherche d’un module pour un but précis, ou simplement à la recherche de nouvelles fonctionnalités pour votre site e-commerce il n’est pas simple de s’y retrouver dans tous ces modules. Ainsi chercher un module peu vite s’avérer long et fastidieux. Voici donc une petite liste de modules qui vous permettront de trouver votre chemin.

Comme avec le guide des modules pour Drupal 7, j’ai reparti les modules dédiés au e-commerce en différentes sections. Cette liste est une liste collaborative, ainsi, n’hésitez pas à commenter si vous trouvez des modules à ajouter !

E-commerce

Drupal Commerce est une suite de modules dédié au e-commerce qui s’est imposée sur Drupal.

Commerce VAT et Commerce EU VAT pour gérer les taxes en fonction du pays de votre client. Pensez à ne pas utiliser le module Taxe si vous utilisez ces deux modules. Ils sont bien maintenus et prennent en comptes les changements de lois.

Address book pour simplifier la vie de vos clients en leur permettant de créer un carnet d’adresse de façon ce qu’ils réutilisent leurs adresses dans le tunnel d’achat.

Shipping fourni un système de calcul de prix de frais de port. Ce module est un framework que vous devrez utiliser avec les modules de livraisons de votre transporteur préféré.

Commerce billy et Commerce billy mail pour générer des factures depuis votre site au format PDF afin que vos clients puissent les télécharger.

Commerce search api couplé à Search api vous permettra d’indexer les entités Drupal Commerce dans un moteur de recherche. Vous pourrez alors construire vos pages de catalogues robustes et performantes.

Search API ranges pour donner à vos visiteurs la possibilité de réduire les résultats entre deux prix.

Commerce backoffice afin d’avoir une meilleure expérience utilisateur dans la gestion et l’administration de votre boutique. Si vous avez déjà installé Commerce Kickstart v2 vous avez pu noter que le backoffice était plus beau que la version précédente et c’est principalement grâce à ce module.

Commerce reports permet aux marchands d’avoir une idée de ce qu’il se passe sur leur site. Ce module fourni un dashboard de statistiques sur l’évolution des commandes, clients…

Google analytics pour Commerce couplé à Google analytics vous permettra de traquer vos ventes en plus de vos statistiques de visites depuis le dashboard Google Analytics.

Cart and Checkout

Commerce checkout redirect redirige vos utilisateurs non connectés vers une page de création de compte ou de login avant de rentrer dans le tunnel d’achat. Notez que forcer les utilisateurs à créer un compte peut être source d’abandon de paniers.

Commerce checkout complete registration offre la possibilité aux clients de compléter le tunnel d’achat en anonyme et de créer un compte après le paiement s’ils le souhaitent.

Commerce checkout progress affichera dans votre checkout une barre en haut de la page de façon à indiquer à vos clients à quelle étape du checkout ils sont.

Commerce cart expiration permet de définir une durée de validité pour un panier. Par défaut les paniers n’ont pas de limite de validité, or il peut être intéressant d’en définir une de façon à faire un peu de ménage tous les 15 jours. Ce module vous permettra de supprimer les paniers selon vos critères. Pensez à avertir vos clients qu’ils ont laissé un panier histoire de les relancer.

Commerce add to cart confirmation affichera une pop-in lors de l’ajout au panier d’un produit. Cette pop-in offrira à vos clients le choix de poursuivre leurs achats ou de commencer le tunnel d’achat.

Commerce ajax cart donnera à vos clients la possibilité d’avoir une idée de leur panier via un bloc en Ajax. Cette fonctionnalité est bien moins intrusive que la pop-in de confirmation.

Products

Commerce stock vous aidera à gérer vos stocks et ainsi les produits disponibles à la vente.

Commerce stock notification pour ne plus louper une vente lorsque vous êtes en rupture de stock ! En cas de rupture de produit, le champ stock de la fiche de produit sera remplacé par un formulaire afin que le client puisse soumettre son email afin d’être notifié lors du réapprovisionnement.

Retour de marchandises Il arrive des fois où tout ne se passe pas comme prévu dans la vente à distance. Ce module permettra à vos clients de faire une demande de retour de leurs produits directement depuis leur commande. Notez qu’avec la loi Hamon, vous devez permettre à vos clients de pouvoir faire une demande de retour via un formulaire sur votre site.

Wishlist est utile lorsque vous voulez permettre à vos visiteurs de créer des listes d’envies afin d’acheter plus tard. Un lien permettant d’ajouter le produit dans une liste de souhaits sera inséré sur chaque fiche produit. L’utilisateur pourra par la suite retrouver ses produits préférés depuis son compte.

Commerce productpopularity vous permettra d’afficher un bloc des produits les plus populaires sur votre site.

Commerce rec permet d’afficher une liste de produits que d’autres clients ont acheté en commandant ce produit. Pratique pour booster le panier moyen, cette fonctionnalité vous demandera d’avoir déjà réalisé un certain nombres de vente pour être efficace.

Marketing

Discounts et Coupon 2.x vous permettront de créer des offres spéciales pour vos clients. Vous pourrez alors faire des réductions sur des produits, des profils de clients avec ou sans limite dans le temps.

Imports / Exports

Si vous utilisez le module Features pour exporter la configuration de votre site, vous pourrez ajouter Commerce Features à votre projet pour exporter ce qui est relatif au module Commerce.

Deux solutions s’offrent à vous si vous voulez importer des données. La plus simple des solutions consiste à utiliser Feeds, Commerce Feeds, voir même Xpathparser pour Feeds. Simple et efficace vous pourrez créer un import pas trop compliqué.
Si vous souhaitez quelque chose de plus robuste je vous conseille d’utiliser le couple Migrate et Commerce Migrate. Plus compliqué à prendre en main vous pourrez néanmoins réaliser des imports/exports complexes.

Performances et développement

Commerce Devel et un module additionnel pour Devel qui vous aidera dans votre développement de tous les jours.

Commerce Entitycache vous permettra en complément de Entitycache d’améliorer les performances de votre site en ajoutant aux caches les entités Drupal Commerce.

Par LaboRouge

function drupal_map_assoc()

Fonction méconnue, drupal_map_assoc() permet de former un tableau associatif à partir d'un tableau linéaire.

&lt;?php<br />
$fruits = array('pommes', 'oranges');<br />
drupal_map_assoc($fruits);<br />
// $fruits est maintenant un tableau ('pommes' =&gt; 'pommes', 'oranges' =&gt; 'oranges')<br />
?&gt;

Trés pratique lorsque l'on veut assigner une clé | valeur de manière automatique. 


Drupal


Drupal API


Fonctions

Par hellosct1

Le livre Drupal avancé au Meetup Drupal de Paris

Le CMS Drupal est très utilisé dans le milieu professionnel et il était important de répondre aux attentes des utilisateurs Français de ce CMS.

A cette occasion, je vais présenter mon nouveau livre "drupal avancé" que j'ai co-signé avec Vanessa 'Kowalski' David, au prochain Meetup Drupal à Paris, le 24 septembre dans les locaux de la fondation Mozilla

L'ouvrage s'intitule : «Drupal avancé : un CMS pour développeurs» et publié aux éditions Eyrolles. Il sera disponible très prochainement dans toutes les bonnes librairies et distributeurs et revendeurs webs. De plus, l'ouvrage a été préfacé par Frédéric G. MARAND qui est Core maintainer Drupal XML-RPC et les illustrations par Vincent Pontier (aka El Roubio), le créateur de la mascotte PHP.

drupal-avance.png

Le but de ce livre (en français) est de répondre à une certaine attente des utilisateurs, développeurs... qui souhaitent en faire plus avec le CMS Drupal pour progresser, à travers différentes astuces et des nombreuses bonnes pratiques qu'il est important de connaître et de ne pas oublier.

Bien entendu, l'événement de présentation est gratuit, ouvert à tous mais sur inscription :

http://www.meetup.com/drupal-france-francophonie/events/204874312/

Par juliendubreuil
julien dubreuil
Depuis 2009 maintenant, je développe avec le CMS/CMF Drupal. J’étais à la recherche d’un framework capable de remplacer un projet et je n’ai jamais arrêté de m’en servir depuis ce moment.

Développeurs, êtes-vous prêts pour Drupal 8 ?

Développeurs, soyez prêt pour Drupal 8 et les dernières nouveautés ajoutées au CMS

“It’s ready, when it’s ready!” Nous connaissons tous cette citation, qui fait partie de la communauté Drupal. Ce n’est un secret pour personne, Drupal 8 sera bien plus compliqué à appréhender que les versions précédentes. Malheureusement il est encore impossible de définir une date de sortie, néanmoins on peut se dire qu’il nous reste encore quelques mois devant nous. Utilisons ainsi ce temps pour comprendre et découvrir tous les pré-requis de cette nouvelle version.

Depuis quelques mois maintenant j’ai commencé à agréger une liste d’articles de façon à être au point sur les dernières nouveautés apportées par D8. Du coup, voici un résumé des meilleurs ressources que j’ai pu trouver.

Notez que dans ce billet je ne parlerai pas des nouveautés de Drupal 8 mais plutôt des bases à avoir pour commencer à développement avec Drupal 8.

Programmation PHP moderne

POO, Classes et objets.

La Programmation Orientée Objet n’a rien de nouveau et s’est standardisée dans tous les languages de développement et frameworks, pourtant c’est assez nouveau dans le monde de Drupal. Jusqu’à maintenant réservée à quelques spécificités, la POO fera partie intégrale de Drupal 8. Rien de tel que de revoir ses bases pour être au courant des dernières nouveautés, voici quelques liens qui pourront vous aider.

Ressources :

Namespace

Les namespaces sont arrivés avec PHP 5.3 afin de résoudre deux problèmes avec les fonctions et les classes quand on veut écrire du code réutilisable. Premièrement, la collision de même nom entre portion de code et deuxièmement la possibilité de créer des alias pour les noms longs de fonction ou de classe à rallonge. Avec cette nouvelle version de Drupal, vous trouverez l’utilisation des namespaces un peu partout.

Ressources :

Autoloaders, PSR-0 et PSR-4

PSR–0 est un standard de chargement de classe (l’autoloading) permettant de définir une façon automatique d’inclure des classes PHP sans avoir à utiliser les fonctions telles que require() ou include(). PSR-0 se base sur le namespace d’une classe afin de définir sa position dans le file system.

PSR-4 a pour objectif de réduire la structure des dossiers pour l’autoloader. Cela a fait couler pas mal d’encre dans sur drupal.org – Drupal and PSR-0/PSR-4 Class Loading.

Ressources :

Annotations

Les annotations sont des meta-datas qui peuvent être ajoutées à votre code afin d’être lues lors de l’execution de celui-ci. Cela sert pour la définition et la configuration mais les annotations n’affectent pas la sémantique du code.

Personnellement je ne suis pas un grand fan des annotations, pour moi les commentaires doivent rester des commentaires, de façon à donner des informations et de la description sur le comportement d’une fonction. Changer un commenta ire ne devrait pas changer le comportement d’une fonction.

Ressources :

Design patterns

Il y a de fortes chances que si vous avez à résoudre un problème de conception, un autre développeur l’ait déjà résolu. Ainsi les design patterns (En) sont des guides applicables à n’importe quel language de programmation de façon à solutionner un problème. L’avantage d’utiliser des design patterns est que cela rend votre code plus maintenable, et que cela offre une solution éprouvée.

Ressources :

Dependency injection

C’est certainement l’un des design patterns les plus compliqués à bien expliquer, toutefois c’est probablement l’un des plus simple à utiliser. Ok, le nom est effrayant, mais je suis sûr que vous l’appliquez sans le savoir. Pour bien comprendre ce que c’est, je vous suggère de regarder comment Fabien Potencier l’explique.

Ressources :

Symfony 2

Ce n’est plus la nouvelle de l’année, Drupal 8 utilisera quelques composants tout droit venus de Symfony 2. Comme souvent il y a du pour et du contre sur le fait d’apprendre Symfony 2 pour faire du Drupal 8. Personnellement, Je dirais qu’y jeter un coup d’oeil avant de jouer avec D8 ne vous tuera pas, au contraire cela vous permettra certainement de mieux comprendre certain concepts. En bref, quelques heures à regarder et découvrir Symfony 2 est un bon investissement.

Ressources :

Si vous souhaitez aller un peu plus loin et avoir une vue plus complète des composants SF2 inclus dans Drupal 8, je vous suggère de lire cet article you got Symfony in my Drupal 8 (En) ou celui-ci Symfony 2 in Drupal 8 (En)

Bibliothèques additionnelles ajoutées à D8

En plus de ce que l’on a déjà pu voir, Drupal 8 inclura des librairies externes de façon à ne pas réinventer ce qui existe. D’ailleurs quelques-unes de ces librairies sont utilisées dans l’écosystème Symfony.

Composer

Composer est un outil de gestion des dépendances qui a été adopté en D8 pour gérer les bibliothèques additionnelles telles que Symfony ou encore Twig.
A la racine de Drupal vous pourrez apercevoir un fichier nommé composer.json, structuré d’une certaine manière de façon à définir les dépendances ainsi que leurs versions.

Ressources :

Doctrine

Doctrine Database Abstraction Layer (DBAL) est une surcouche d’abstraction entre l’application et la base de données. Cette API permet de s’interfacer simplement avec la plupart des système de base de données.

N’ayez crainte, Doctrine ne fait pas vraiment parti de Drupal 8 (certainement pour D9), Drupal 8 utilise seulement le composant de lecture des annotations de Doctrine (Cf le commentaire de Chx sur drupal.stackexchange).

Ressources :

Easy RDF

EasyRdf est une bibliothèque PHP permettant de manipuler simplement et efficacement du RDF.

Ressources:

Guzzle

Guzzle est un client HTTP en Php qui permet de s’interfacer avec des applications tiers mettant à disposition des web-services.

Ressources :

PHPUnit

PHPUnit est un framework de test P-Sour PHP. Celui-ci à été choisi en remplacement de Simpletest comme nouvel outil afin d’assurer la qualité du code de D8. On ne le répétera jamais assez, mais les tests unitaires sont la meilleure méthode pour détecter une regression sur un projet.

Ressources :

Twig

Au revoir PHPTemplate, bonjour Twig! PHPTemplate nous aura bien rendu service mais il est maintenant temps pour lui de prendre sa retraite. Twig est un moteur de template moderne pour PHP qui peut être enrichi via un API. Il est facile d’utilisation, sécurisé et flexible.

Ressources :

YAML

Au lieu d’utiliser notre format de fichier maison, la décision a été prise pour D8 d’utiliser quelque chose de plus commun et standardisé. YAML est un standard pour la création de fichier de configuration.

Ressources :

Le mot de la fin

J’ai essayé de ne pas donner trop de lien et de sélectionner les meilleurs pour chaque sujet parce que cela représente beaucoup d’informations. Néanmoins si vous voulez proposer un article pour complémenter ce post, ce sera avec plaisir. En regardant la longueur de ce post de pré-requis, on peut dire que Drupal 8 a changé et est différent des précédentes versions. Cela montre aussi la volonté de plus de qualité et de professionnalisme de la part de la communauté.

Je continuerai de mettre à jour cette liste et en attendant, j’espère que vous y trouverez votre bonheur.

Par Artusamak
Julien Dubois

Drupal 8, une première beta et après ?

Drupal 8, une première beta et après ?

L'arrivée de la bêta 1 de Drupal 8 est imminente.

En effet, le dernier ticket marqué "bloquant" d'après les statistiques vient d'être corrigé le 19 septembre.

Alors, que va-t-il se passer ensuite ?

Sortie d'une Bêta

Avant la bêta, une dernière alpha va sortir, et si aucun "beta blocker" n'apparaît pendant 2 semaines alors une version bêta sera mise en ligne. À partir de là, l'effort communautaire se portera sur les bugs critiques (une centaine à l'heure actuelle) dans le but de sortir une première "Release Candidate".

Voila ce qu'il faut retenir de cette phase :

  • Seul les bugs critiques d'API seront corrigés. Les mainteneurs peuvent aider à les identifier en essayant de porter (encore) leurs modules ou thèmes pour Drupal 8.
  • Il ne faudra pas compter sur un chemin de montée de version sans bug entre les bêtas, en tout cas pas dans les premières versions bêta.
  • Les textes d'interfaces à traduire peuvent encore changer, la traduction complète n'est donc pas pour tout de suite

Sortie d'une "Release Candidate"

Une fois qu'il n'y aura plus de bugs ou tâches critiques, la première "Release Candidate" de Drupal 8 sera envisagée en fonction des bugs majeurs restants.

À partir de là, l'API, les interfaces et les textes ne devraient plus changer. Il sera temps de finir la traduction et de porter ses modules.

Enfin si pendant quelques semaines il n'y a aucun problème critique découvert, Drupal 8 sortira !

Alors, il sortira quand Drupal 8 ?

Et bien on ne sait toujours pas :)

On peut néanmoins se tourner vers l'histoire et regarder un petit peu ce qu'il s'est passé avant.

  • Drupal 5.0 est sorti le 15 janvier 2007
  • Drupal 6.0 est sorti le 23 février 2008 (soit 394 jours après Drupal 5, dont 151 jours en bêta et RC)
  • Drupal 7.0 est sorti le 5 janvier 2011 (soit 1057 jours après Drupal 6, donc 355 jours en alpha, bêta et RC)
  • Drupal 8 en est à 450 jours d'alpha.

Alors je me lance dans un délire personnel et en extrapolant les durées de bêta et de RC, en voyant que la communauté aime bien sortir une nouvelle version en début d'année et en maraboutant un peu, je propose une sortie de Drupal 8 autour du 29 janvier 2015. Les paris sont ouvert !

Plus sérieusement, comme nous l'avons déjà dit au drupalcamp soleil 2014 en mai dernier, si vous êtes un développeur il est déjà l'heure de se mettre à Drupal 8.

De notre côté, ce présent site est en Drupal 8 et pour le moment on vous avoue que la mise à jour nous fait suer. Nous travaillons sur notre offre de formation Drupal 8, et nous avons commencé à rassembler et partager les changements notables concernant les "fonctions courantes". Concernant ce dernier point, amis développeurs / themeurs n'hésitez pas à participer !

Et une fois Drupal 8 sorti

Un autre point important à aborder concerne les changements dans le cycle de mise à jour de Drupal 8. Tout cela est encore en pleine discussion mais voilà ce que l'on peut en dire :

  • Drupal 6 sera encore supporté pendant 3 mois une fois Drupal 8 sorti. Le temps de permettre une migration vers Drupal 8.
  • Une nouveauté, des versions mineures seront disponibles tous les 6 mois environ, et elles permettront le rajout de fonctionnalités. Jusqu'à maintenant les versions mineures ne servaient qu'à corriger les bugs et les failles de sécurité, mais il sera donc possible d'avoir des évolutions du core (ne cassant pas la compatibilité descendante).
  • Seules les dernières versions mineures de chaque version majeure seront supportée.
  • L'apparition d'un support long terme sur la dernière version mineur de chaque version majeur de Drupal.
  • La correction des bugs d'une version majeure sera assurée jusqu'à la prochaine version majeure plus 3 mois.
  • La correction des failles de sécurité jusqu'à 2 version majeures plus 3 mois (donc jusqu'à Drupal 10 pour la version 8).
  • La création d'une version majeure ne se fera que quand quelque chose de suffisamment conséquent pour la justifier sera accompli.

Comme on peut le voir certaines choses sont assez floues mais les idées principales sont d'apporter du rythme et de la prédictibilité dans la sortie des nouvelles versions tout en permettant l'innovation dans les fonctionnalités.

Mon point de vue

Il me semble que ces cycles plus rapprochés sont une bonne chose dans le fond. Dans la pratique il est possible que cela amène un peu plus de travail du côté de la maintenance, car il est possible qu'on ne puisse plus faire les mises à jour aussi simplement qu'avant. Le rajout de fonctionnalités, même modulaires, entraîne un encadrement de nos clients qui n'était pas forcément nécessaire lors des correctifs de sécurité ou de bugs.

Et pourtant, comment ne pas aussi voir l'avantage sur le long terme, on espère que ces mises à jour incrémentales qui s'inscrivent dans un développement agile, rendront le changement de version majeure plus doux et permettront d'impliquer encore plus de monde dans le développement de Drupal.

 

Plus d'informations dans le post d'annonce :

https://groups.drupal.org/node/443118

 

Crédit image : Last Call media

Pages