La question revient régulièrement. Avec Symfony2 qui vient tout juste d’arriver et symfony 1 à qui il reste seulement un an de support officiel, les projets Web qui se montent en cette fin d’année 2011 ne savent pas sur quel pied danser. Voici un point sur la situation d’un des frameworks PHP5 les plus importants.
Il est de bon aloi de rappeler quelques critères décisifs lors du choix d’un framework de développement.
- Sa stabilité : où en est le projet ? Alpha, bêta, RC, stable ?
- Sa documentation : est ce qu’il y a une documentation complète et de qualité ?
- Son support : combien de temps cette version est-elle supportée ? Par qui ?
- Sa communauté : est-ce que la communauté est importante et active ?
Ce choix est la base de tous les développements futurs, il est déterminant pour la viabilité, la pérennité et la réussite de votre projet. Symfony est l’un de ces frameworks, il a aujourd’hui acquis une place de premier choix dans l’univers PHP et sa nouvelle version remet en question cette liste de critères.
symfony 1 n’est pas mort !
Qu’est ce que symfony ?
Symfony est un framework PHP5 full-stack RaD dont la première version stable est apparue en février 2007 et la dernière version majeure (1.4) en décembre 2009. Pour tout nouveau développement avec symfony 1, c’est cette dernière qu’il faut utiliser et c’est donc à celle-ci que notre article fait référence.
_ Ce framework est principalement l’oeuvre de Fabien Potencier et est supporté par la société qu’il a co-fondé : Sensio.
Stable ? Documenté ? Supporté ?
La première version considérée comme stable est sortie il y a plus de 4 ans. La version actuelle (1.4) bénéficie du LTS[Long Term Support : Support officiel pendant 3 ans]]. Elle est donc officiellement maintenue par l’équipe de développement jusqu’en novembre 2012. En d’autres termes, toutes les failles de sécurité ou bugs signalés jusqu’à cette date seront corrigés et une nouvelle version mineure sera déployée. La 1.4 a déjà connu une [quinzaine de ces mises à jour mineures.
_ La documentation a fait ses preuves, il existe des exemples pour débuter[[Jobeet en est l’exemple parfait]], une documentation complète de l’API, un forum et des groupes de discussions sont accessibles, et on trouve des articles pour une utilisation plus pointue du framework[[More with symfony]].
_ La communauté est un autre point fort qu’il faut citer, on trouve en effet de nombreux blogs parlant de symfony, de sujets sur des forums d’entraide, etc.
Après Novembre 2012 ?
Quel avenir pour symfony 1 après cette date ? Est-ce que tous nos sites sous symfony 1 vont arrêter de fonctionner ? Il n’en est rien, bien entendu. Sauf faille de sécurité majeure (ce qui est peu probable) il n’y a aucun risque à rester en 1.4.
La communauté autour du framework est très forte, en Europe mais aussi aux État-Unis et en Asie (la documentation est d’ailleurs traduite en Japonais, Espagnol et Russe). Ce sont des milliers de sites Web qui sont aujourd’hui en ligne grâce à cette solution. La probabilité que cette communauté reprenne en main le framework est donc élevée, mais pourrait nécessiter une coopération de Sensio, afin de transmettre les alertes de sécurité à la communauté de façon discrète, ou juste d’annoncer les nouvelles mises à jours. La possibilité d’un fork, envisagé par certains, n’est elle non plus pas à écarter. Qualifier et traiter les tickets remontés dans le Trac de symfony 1, et appliquer l’ensemble des patches proposés par les contributeurs, permettrait déjà de faire une version 1.5 de grande qualité !
Dans un an, le nombre de sites Web sous symfony 1 sera toujours en progression et il est hors de propos de migrer tous ces sites vers la version 2, la migration est d’ailleurs fort complexe tant l’architecture et la philosophie des deux solutions sont différentes.
Symfony2 ça va être super !
Qu’est ce que Symfony2 ?
Annoncé en février 2010 (bientôt 2 ans !), l’expérience et le travail de centaines de contributeurs (327 à l’heure où ces lignes sont écrites) font de Symfony2 la « licorne sur un double arc-en-ciel » des frameworks PHP.
_ Symfony2 est un ensemble de briques logicielles découplées[[SoC : le framework implémente la « Separation of concerns »]], réutilisables de manière autonome, mais c’est surtout un ensemble qui tente de répondre au mieux aux problématiques du développement Web.
_ La magie a disparu mais le leitmotiv est toujours tendre à un respect des bonnes pratiques. Le framework a par ailleurs réussi à imposer de nouveaux standards dans le monde PHP :
- [PSR-0->https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md]
- PhpUnit
- Composer
- PHPCR
- …
Sa construction découplée en fait aussi une collection de librairies indépendantes très intéressantes pour d’autres projets, Drupal 8 en utilisera certaines. On s’inscrit donc ici dans un développement robuste et fait pour durer.
Il faut aussi noter que Symfony2 n’est pas aussi RAD que l’était symfony 1. En effet, l’admin-generator de son grand frère ne fait plus partie intégrante du framework. Il faut maintenant se tourner vers des Bundles tiers[[il en existe quelques uns, comme SonataAdminBundle, AdmingeneratorGeneratorBundle, WhiteOctoberAdminBundle, LyraAdminBundle…]], qui, par conséquent, ne bénéficient pas du support officiel – et ne sont pour l’instant pas aussi aboutis que celui de la version précédente.
De plus, la courbe d’apprentissage de la technologie par les développeurs n’est pas aussi douce qu’avec symfony, et la philosophie des deux solutions étant très différentes, les acquis de symfony 1 ne sont pas exploitables dans Symfony2.
Stable ? Documenté ? Supporté ?
Bien que la version 2.0 soit disponible, on ne peut pas parler d’une version stable. Certains composants sensibles du framework sont encore en cours de développement ou n’ont pas été suffisamment testés :
Config
Form
: un des composants les plus importants dans une application WebSecurity
Serializer
- etc.
La documentation est de qualité, mais reste beaucoup moins mature que la documentation de symfony 1, on trouve des parties en cours de rédaction, beaucoup moins d’exemples, …
_ La forte communauté qui gravite autour du projet est une véritable force de frappe et le développement avance vite.
Et la LTS ?
Une version 2.1 devrait sortir prochainement, mais elle ne sera pas marquée comme LTS. En effet, seuls certains des composants cités ci-dessus seront ajoutés à la liste des API stables (Form et Config à prioris[source]).
_ Il faudra donc attendre la version 2.2 si l’étiquette LTS est requise pour votre projet.
Cela étant dit, toutes les modifications cassant la compatibilité entre deux versions sont soigneusement consignées afin de faciliter les mises à jours. Il est donc tout à fait possible de mettre à jour facilement la solution au cours du développement.
Et je le fais en quoi mon site ?
Il n’y a pas de réponse ferme à cette question, comme vous avez pu le constater à la lecture de cet article, les deux solutions ont leurs avantages et leurs inconvénients, mais les deux restent viables.
Si votre projet s’inscrit dans le long terme, et que vous avez le temps et les compétences pour absorber les aléas que peut engendrer l’utilisation d’un nouveau framework, alors utilisez Symfony2. L’équipe de développement devra faire face à de nombreux problèmes dus à toutes les nouveautés qu’apportent Symfony2 (et Doctrine 2), mais le défi n’en sera que plus grand, et donc le projet plus intéressant !
Si votre projet ne présente pas beaucoup de marge en termes de délais, un développement sur la version 1.4 reste tout à fait viable. Votre équipe de développement ayant les connaissances sur cet outil, elle ne sera pas déstabilisée et le projet se déroulera dans un cadre plus sûr et pérenne.
Bernard
1 décembre 2011
OH, J’AI CRU VOIR PASSER UN GROS PONEY.
Joel Wurtz
2 décembre 2011
Ca manque de poney :(
Le passage de symfony1 à Symfony2 est double car en plus du nouveau framework c’est aussi la découverte pour de nombreux développeurs de nouvelles fonctionnalités dans php 5.3 (pour n’en citer qu’une : les namespaces)
Il faut aussi prendre en compte que Symfony2 utilise un maximum de RFC existantes, comme pour le composant Http (HTTP/1.1) ou encore le composant Validation (JSR BEAN)
Ce choix de respect des normes va lui assurer une durée de vie bien plus longue que symfony 1.
Si vous êtes sur un projet en symfony 1 il peut être intéressant d’utiliser certaines briques de Symfony2 pour un apprentissage en douceur :
Une intégration de « Serializer » si vous voulez ajouter une api rest à votre projet, ou encore le Finder pour un besoin fort de manipulation de fichier.
pocky
6 décembre 2011
J’ai personnellement opté pour une transition « douce » vers Symfony2 et j’aurais tendance à la conseiller à tous ceux qui n’ose pas quitter symfony directement mais qui veulent bénéficier de certaines nouveautés.
Il faut n’utiliser que certains composants que l’on apprend à découvrir à travers leurs utilisations métier (comme on pourrait le faire avec ZF) et la transition se fait plus facilement (il ne reste que les gros pavés comme l’injection de dépendance, Twig, Form, Doctrine2) tout en permettant de jeter un coup d’oeil sur l’autoloader, les namespaces…
Pour ma part j’utilise donc les composants suivants de Symfony2 dans mon appli symfony (sur laquelle j’ai mon bon gros bo et mes routines confortables) :
– BrowserKit
– CssSelector
– DomCrawler
– Finder
(même chose avec certains composants du Zf2 d’ailleurs).