REX Symfony World Online 2020 (1/2)

Veille
Le premier SymfonyWorld Online s'est tenu les 3 et 4 décembre dernier, faisant suite aux évènements à popularité croissante : SymfonyLive puis SymfonyCon. Une édition 100% en ligne retracée en deux parties par William, consultant Limougeaud :

Situation de crise sanitaire oblige, cette année aura été particulièrement difficile pour les salons du secteur numérique. La plupart d'entre eux ont été annulés, reportés ou organisés en ligne. C’est cette dernière option qu’a choisi Symfony, éditrice du framework PHP du même nom. C’est donc virtuellement que nous avons assisté au SymfonyWorld Online 2020 initialement prévu en juillet dernier à Paris.


William Pinaud, collaborateur investi au sein de notre agence de Limoges, vous propose de revenir sur les meilleurs moments de cette édition.


Au programme :

  • L'essentiel des conférences de Nicolas Grekas & Fabien Potencier
  • Elasticsearch with Symfony, from development to production par Alexandre
  • Keynote : What’s new in PHP 8.0 ? par Nikita Popov
  • Composer 2 par Nils Adermann et Jordi Boggiano
  • WebAuthn — Technology and integration in a Symfony project par Stefan Richter
  • Internationalize your Symfony application, the right way par Mathieu Santostefano
  • Get Social! Implementing Social Login in your Symfony Project par Pauline Vos
  • Keynote : For the Users — tech, ethics and you par Mark Nottingham

L'essentiel des conférences de Nicolas Grekas & Fabien Potencier

Il s’agissait ici de la conférence la plus attendue. C’est en général celle qui donne le ton et qui annonce une nouveauté, en l’occurrence : Symfony UX Initiative.

Fabien Potencier, cofondateur et CEO de Symfony a passé en revue tous les événements majeurs de l'évolution du framework, essentiellement liés à des composants notables ayant façonné son histoire.

L’annonce du nouveau composant est arrivée, accélérant l’activité sur le chat de l’événement. Il s‘agit d‘un nouveau composant de Symfony, nommé Symfony UX, dirigé et proposé par Titouan Galopin, Product Lead chez Symfony.


Pour résumer brièvement, il s'agit de proposer des composants frontend (JavaScript / HTML) sans opinion particulière, ni préférence des principales applications pouvant piloter un frontend, comme les SPA (React, Svelte, Vue, Ember etc.). En d'autres termes : proposer des composants PHP qui pourraient générer ces composants front. Comme vous pouvez le voir, il est toujours d’actualité pour Symfony d’être basé sur des composants découplés et en JavaScript + PHP cette fois-ci.


Le code se trouve sur Github. Il utilise Stimulus comme socle, Webpack (fourni via Encore) pour tout assembler et offre déjà quelques composants vraiment utiles. Swup est utilisé comme un outil de transition de page entre des actions appelées de manière asynchrone pour l’un des composants (réécriture de l'historique du navigateur comme le font les SPA). En gros, les développeurs écriront du HTML spécifique qui sera converti en « magie » (automatisé, en tout cas).


Pour les formulaires par exemple, cela ne nécessite pas beaucoup plus qu'un simple appel à add() avec un type d'élément spécifique. Tout cela est totalement intégrable dans n'importe quelle application SPA. Le code nécessaire est donné à titre d'exemple. Flex gère tous les pulls nécessaires et les contrôleurs JS existent désormais dans Symfony. Oui, vous nous lisez bien : Flex utilise désormais NPM. Quelle époque !


Les composants suivants sont d’ores et déjà disponibles et nécessitent la dernière version de Symfony 4.4 ou une installation 5.+ :

  • UX Chart.js : Chart.js une intégration de tableau dynamiques pour Symfony
  • UX Cropper.js : Cropper.js une intégration de redimensionnement d’image à la volée pour Symfony
  • UX Dropzone : une zone de drag and drop pour déposer des fichiers à insérer dans des formulaires Symfony
  • UX LazyImage : intégration de chargement progressif d’images avec des thumbnails définissables par data-uri (attributs HTML)
  • UX Swup : transition entre pages par réécriture d’historique navigateur, avec callbacks, basée sur Swup

Elasticsearch with Symfony, from development to production

Damien Alexandre, expert ElasticSearch et PHP chez JoliCode, a réalisé une démonstration rapide. Le spécialiste nous a donné beaucoup de conseils et de bonnes pratiques à connaître pour utiliser ElasticSearch avec Symfony, via notamment ses différents bundles de la contribution et la marche à suivre pour les mettre en place. Un point de vue intéressant sur le sujet, non seulement sur la mise en place, le développement, mais aussi sur des mois d’utilisation.


Quelques conseils et retours :

  • Une très bonne explication des structures ElasticSearch
  • Ne pas utiliser de mapping dynamique
  • Utiliser la synchronisation de data asynchrone
  • Il est possible d’utiliser Symfony Messenger pour gérer les différentes tâches
  • Il est intéressant de donner du sens sémantique aux emojis en utilisant un outil de conversion qu’ils ont créé
  • Ne pas héberger soi-même ElasticSearch
  • Kibana est toujours la meilleure interface pour visualiser ce qui est présent dans les datasets d’ElasticSearch

Keynote : What’s new in PHP 8.0 ?

Présenté par Nikita Popov, l'un des mainteneurs les plus actifs de PHP, cette conférence nous a présenté les nouveautés depuis PHP 8 et ce qu’il faut en retenir :

  • Nous allons avoir besoin de bon nombre de ces présentations pour bien faire le tour des nouveautés de PHP 8, mais aussi des manières de l’utiliser
  • Le compilateur JIT ne change toujours pas grand chose entre PHP 8 alpha et la version stable 8.0.0 pour des applications « realworld » web typiques
  • Nikita a rappelé l’importance des stubs (les fichiers qui contiennent les en-têtes de fonctions, méthodes, classes natives) pour PHP et les IDE. JetBrains a rappelé l’importance de celles qu’elle maintient pour PHPStorm

Nikita conclu sa keynote en rendant hommage à cette équipe travaillant sur PHP - toujours trop - petite à son/notre goût !

Composer 2

Une introduction et une mise au point sur tout ce qu’il y a à savoir sur Composer 2, un des outils fondamentaux sur lesquels tout l’écosystème PHP (ou presque) repose aujourd’hui. Une présentation animée par Nils Adermann et Jordi Boggiano.

  • Composer 2 a vu repensée sa manière de sélectionner les paquets éligibles, ce qui économise un bon nombre de branche mortes dans l’arbre de décision
  • Il a déjà permis d’économiser 30To de données en quelques semaines d’utilisation sur les serveurs de téléchargement
  • Les commandes update et install sont désormais totalement séparées
  • Il faut encore utiliser « ˗­­­˗ignore­­­˗platform­­­˗reqs=php » pour utiliser Composer 2 sur PHP 8
  • Composer 2 ne brûle plus les barrettes mémoire ni les CPUs
  • Les mises à jour sur des projets existants peuvent toujours donner des résultats erratiques à l’heure actuelle, mais c’est en voie de résolution très rapide pour la plupart des cas
  • Utiliser l’option « ­­­--2 » pour forcer la mise à jour vers la dernière version, ce qui n’est pas toujours fait autrement
  • Seulement 20% des projets utiliseraient Composer 2 à l’heure actuelle
  • Ce genre de mise à jour va permettre d’économiser un peu les ressources de notre planète : CPU, RAM, réseau

C'est ici que la première partie de notre retour d'expérience du SymfonyWorld Online 2020 s'achève. Restez attentifs car notre seconde partie sera disponible dès la semaine prochaine. Nous avons encore pleins de conférences à vous faire découvrir.


En attendant, nous vous souhaitons un joyeux Noël ! 


William,
Expert technique