La question revient à chaque lancement de projet ou avant vente chez Prestaconcept. Quelle version de Symfony pour ce projet ? La dernière long-term support (LTS) ou la dernière version courante sortie ?
Il faut d'abord comprendre la différence entre LTS ou pas.
Les versions de Symfony courantes, non LTS, sont supportées en termes de corrections et fix de sécurité durant huit mois. C'est-à-dire qu'en partant sur une version non LTS de Symfony, votre projet pourra être mis à jour facilement durant 8 mois au maximum si cette version vient juste de sortir. Au-delà, il faudra aux développeurs un petit effort (et donc du temps !) pour mettre à jour Symfony. Mais ces mises à jour sont vitales pour votre application, c'est un gage de stabilité, de sécurité et de pérennité donc.
Adopter une version courante c'est donc une stratégie de développement en continu, une nouvelle version de Symfony sortant tous les six mois. En contrepartie de l'effort de rester à jour au niveau version, votre équipe de développement va y gagner en confort de développement en restant toujours sur des pratiques récentes de développement. Et votre application profitera de versions de PHP à jour et bénéficiera des améliorations de Symfony et des nouveaux composants. Votre application y gagnera souvent en sécurité, en optimisations et donc de meilleures performances.
Une version LTS au rythme beaucoup plus lent.
C'est une version qui sera supportée 3 ans et même 4 ans pour les fix de sécurité. Une LTS, c'est donc une version sûre et éprouvée qui arrive en fin de cycle d'évolutions fortes de Symfony. Les mises à jour que vous ferez par la suite en gardant votre projet sur la LTS seront mineures et faciles. Vous resterez par contre dans cette version gage de tranquillité d'esprit mais sans bénéficier des avancées de Symfony jusqu'à ce qu'une nouvelle LTS sorte.
Une nouvelle LTS sort par contre tous les deux ans. Cela vous permet de mettre à jour votre LTS avec la suivante avant qu'elle ne soit plus maintenue. Si vous attendez les 4 ans de support de votre LTS pour mettre à jour, l'effort de mise à jour sera nettement plus important et vous fera même douter de l'intérêt de mettre à jour un projet aussi "vieux". Faire le choix d'une LTS, et de se tenir à l'actualiser quand une nouvelle LTS sort, est donc une stratégie de sérénité.
Le contexte temps est à prendre en compte.
Mais faire le choix entre LTS ou pas n'est en réalité pas aussi simple car cela dépend aussi de votre projet et dans un premier temps de sa durée et du moment où vous le lancez.
En fin de cycle de développement, quand on s'approche d'une prochaine LTS, il serait vraiment dommage de partir sur une LTS déjà datée. Si par exemple, alors que vous lancez votre projet, la dernière LTS est sortie il y a un an et demi, il serait dommage de la choisir. Surtout si votre projet nécessité six mois de développement. Il sortirait avec une version déjà dépassée. Et pourtant nous voyons parfois arriver en TMA ce genre de projet.
Mieux vaut en fait partir sur la version standard en cours et mettre à jour régulièrement sur la dernière version. Se posera alors la question de savoir s'il faut rester sur une LTS quand votre projet y sera et s'y tenir ou au contraire continuer de le mettre à jour.
La nature de votre projet joue.
Tous les projets ne sont pas égaux. Est-ce que votre application doit durer dans le temps et à quel horizon ? Avez-vous prévu d'internaliser ensuite la maintenance et comment ou le confiez-vous à une équipe comme la nôtre, habituée à l'exercice des mises à jour ? Votre projet est-il sensible voire critique ou doit-il s'adapter et évoluer au fil du temps ? Allez-vous avoir besoin de beaucoup de dépendances et lesquelles ? Sont-elles prêtes pour la dernière LTS et vont-elles suivre le rythme des mises à jour de Symfony ? Toutes ces questions nécessitent une réponse pour savoir identifier la meilleure stratégie à choisir.
Finalement, développer sur une LTS récente ou sur une version courante en attendant une prochaine LTS est toujours une bonne approche surtout en cours de développement. Une fois le projet en production, il faudra peut-être faire le choix de stabiliser le développement et rester sur une LTS suivant la nature de son projet et ses possibilités techniques.
Et, au-delà du choix de version, l'essentiel restera de ne surtout pas laisser son projet stagner sur une version improbable datant de plusieurs années, quand bien même c'était une LTS, mais en son temps.