Choisissez bien les dépendances de vos projets

Cet article a été publié depuis plus de 6 mois, cela signifie que le contenu peut ne plus être d'actualité.

La semaine dernière, une équipe à côté de laquelle je me trouvais faisait le point sur un projet. Il y avait alors un échange concernant l'utilisation d'une dépendance qui n'était pas compatible PHP 7, la version de PHP choisie pour démarrer ce dernier. Il en a résulté que l'équipe a été obligé de développer le projet en 5.6, ce qui m'a fortement fait réagir. Bien qu'il puisse y avoir des raisons qui peuvent conduire à prendre une telle décision, mais dans le cas présent, je trouve cela aberrant.

Pourquoi ? Tout d'abord parce que la dépendance en question devait être mise en place pour intégrer Elasticsearch dans le projet. Il existe une multitude de composants permettant cela et le client officiel est très bien fait. Je peux comprendre que dans le cas présent, l'équipe souhaitait un bundle Symfony qui ait quelques fonctionnalités supplémentaires, mais vu l'envergure du projet, n'était-il possible de simplement utiliser la librairie de base ? Mais si le bundle était si important pour l'équipe, n'était-il pas possible de faire une PR pour apporter la compatibilité sur la branche 7 de PHP et d'en faire profiter la communauté ?

Mais au-delà de tout ça, essayons de se poser les bonnes questions. En effet, PHP 5.6 est en fin de vie. Cette version n'a plus de support actif et reçoit donc maintenant que des correctifs de sécurité. PHP 7.0 est sortie il y a maintenant plus de deux ans et PHP 7.1 il y a un an. Si un composant PHP n'est pas compatible PHP 7, nous sommes alors en droit de se demander si ce dernier est encore actif et/ou maintenu ? Est-ce vraiment judicieux de démarrer un nouveau projet dans ces conditions ? Est-ce un pari gagnant dans le long terme ?

Pour ma part, la réponse est clairement non, surtout pour un projet qui est amené à être créé maintenant. Il est primordial de bien choisir les dépendances que l'on ajoute à un projet et d'avoir également une vision à long terme dans les phases de conceptions et réflexions autour du projet.

Si l'on devait conclure ce billet, et si vous n'aviez qu'une seule phrase à retenir, ça serait :

Ne démarrez pas vos projets sur des versions de PHP déjà obsolètes et utilisez des dépendances connues et maintenues !

Votre équipe vous en remerciera, car comme je le tweetais cette semaine :