Tag cloud
lithium développement web ie6 CakePHP web pense-bête Méthode conférences framework twitter astuce conception référencement productivité behavior php mvc css java débogage motivation stage communauté logiciel pierre martin scrum MySQL xhtml outils loi wordpress ASP.NET routes migration open source jsf filezilla cakefest blog
-
Nate Abele
-
Pierre Martin


CakePHP n’est pas mort !
Vous n’avez pas pû passer à côté des tweets et articles de blogs à propos des récents mouvements au sein de la communauté CakePHP … si c’est le cas, il est temps de vous rattraper !
En quelques mots, le projet développé en secret et publié sous le nom initial de « Cake3″ (ce qui a été source de mésententes au sein de l’équipe) a donné lieu à un nouveau framework dont le site à ouvert récemment : Lithium. Ce n’est pas à proprement parler un fork de CakePHP au niveau code, vu que tout a été ré-écrit de zéro … mais les contributeurs et concepts sont communs ! J’ai pu voir des questions d’utilisateurs ayant peur de la fin de CakePHP, et cela me fait plutôt sourire : un si gros projet ne s’arrêtera pas si facilement surtout vu le nombre d’utilisateurs actuels, la volonté de ceux-ci et les contributeurs qui pensent plus que jamais au futur.
Je vous propose donc un petit résumé des évènements, afin de montrer en quoi cette séparation permettra à CakePHP de repartir de plus belle dans son développement.
Rapide historique
CakePHP a été créé en Mai 2005 par Michal Tatarynowicz qui a rapidement quitté le projet par manque de confiance en celui-ci ! C’est donc Larry Masters, qui était parti dans l’aventure avec Michal qui reprend la direction du projet. Rapidement, il est rejoint par Garrett Woodworth (aka gwoo) et Nate Abele.
En 2008, Larry Masters prend du recul pour ne redevenir « que » contributeur. Nate et Garrett deviennent alors respectivement lead developer et project manager de CakePHP, la version 1.2 du framework est en cours de développement.
Un an plus tard (en Juillet 2009), un projet tenu secret est annoncé lors du 3ème Cakefest : un code expérimental nommé Cake3, réécriture complète du framework afin de tester l’intégration de nouvelles fonctionnalités apportées par PHP5.3. C’est au mois d’Octobre que Garrett annoncera qu’il quitte la fondation, suivi de quelques jours par Nate le lendemain de la ZendCon où il représentait le projet CakePHP. Tous deux annoncent le projet Lithium, dont le site a ouvert le 29 Octobre : http://li3.rad-dev.org/.
C’est donc Larry Masters qui reprend la tête de la fondation et la supervision de la roadmap du projet, comme durant les 3 premières années de CakePHP. De plus il n’y a aucun changement au niveau des versions en cours de développement ! Mark Story continue à faire de magnifiques choses pour la version 1.3 de CakePHP, et Graham Weldon (aka Predominant) reste responsable (avec Larry) du développement de CakePHP2.0 (version full PHP5 du framework).
De nombreux autres contributeurs ont intégré l’équipe au fil des années, et au jour d’aujourd’hui (4 ans plus tard) 30 contributeurs ont défilé au sein de la core team ! Ce n’est donc pas une première dans la vie du projet, ni dans la vie d’un projet open source.
Que s’est-il passé ?
Je ne vais pas entrer dans les détails car je ne les connais pas et me base sur ce qui a été publié sur les channels publics. Il faut simplement savoir que le code devenu Lithium a initialement été développé par Nate Abele sur son temps libre pour jouer avec PHP5.3, alors qu’il était lead developer de CakePHP. Il a ensuite ouvert son projet à d’autres membres de la core team, sans en informer tout le reste de l’équipe. Ce n’est qu’à quelques semaines du Cakefest #3 que toute l’équipe de développement a eu vent de ce projet.
[EDIT] Petit bémol concernant cette information suite à la remarque de Nate : « As far as the project being developed in secret, that is almost entirely untrue. The *only* person on the dev team who didn’t know about it was Larry. Every single other person on the CakePHP team [...] knew of the existence of Cake3 *months* before it went public. » [/EDIT]
Ensuite, c’est une histoire de communication : le projet a été annoncé (à tort et de manière maladroite) comme le futur de CakePHP, alors que celà n’était vu par l’équipe (officiellement) comme un projet seulement expérimental. A partir de ce moment, le fork était la meilleure solution pour les deux parties.
Du côté de Lithium, il y avait de grandes espérances sur le framework et des idées en totale rupture avec le framework CakePHP actuel (réécriture totale du code notamment, avec un remaniement de l’API, l’organisation des fichiers …). De plus le projet s’adresse principalement aux développeurs « à la pointe de la technologie », en utilisant au maximum les fonctionnalités apportées par PHP 5.3.
Du côté de CakePHP, ce code s’éloignait trop de la base actuelle et la possibilité de backporter du code de l’un à l’autre diminuait jour après jour. De plus, du très bon travail était déjà en cours sur les versions 1.3 et 2.0 … qui seraient rendues caduques avec ce nouveau code. Enfin, CakePHP a également une très grande communauté d’utilisateurs qui utilisent le framework dans un cadre professionnel, et se doit donc de diminuer au maximum les changements d’API entre chaque nouvelle version.
L’open source est heureusement où ce genre de conflits peuvent se résoudre « simplement » par la création d’un nouveau projet. Ainsi a été lancé Lithium, un nouveau projet qui vivra sa vie et a des contributeurs communs à ceux de CakePHP … mais qui au final est un framework supplémentaire très inspiré par Rails.
Qu’est-ce que cela change ?
RIEN … ou presque
Suite à cette annonce, de nombreuses personnes (souvent assez éloignées des réalités et trompées par les annonces) ont eu peur de voir la mort du framework qu’ils utilisent depuis plusieurs années. En effet, l’annonce des départs du « lead developer et project manager » du projet peut faire peur. Je n’irai pas jusqu’à dire que c’est une bonne chose, au contraire le travail réalisé par Nate et Garrett pour CakePHP depuis toutes ces années est tout simplement merveilleux … et c’est dommage de les voir quitter l’aventure. Néanmoins c’est comme je l’ai dit une bonne chose au vu de la tension qui semblait s’être installée au sein de la core team.
Autrement (comme je l’ai expliqué plus haut), les équipes de développement des prochaines versions du projet restent majoritairement les mêmes ! Ces derniers mois, toutes les personnes qui sont désormais uniquement contributeurs de Lithium avaient semble-t-il réduit leurs contribution aux versions 1.x et 2.0 de CakePHP (sans doute un manque de motivation normal). Cette semaine le code de CakePHP 1.3 a été taggué en version alpha et chacun peut voir les avancées qui ont été faites à ce niveau. D’autre part, les développements sur CakePHP 2.0 se sont accélérés depuis quelques semaines et une version de développement devrait être disponible avant la fin de l’année. C’est à mon sens la meilleure preuve de vie qu’un projet peut montrer ! C’est là aussi l’illustration de l’intérêt d’avoir un projet open source soutenu par une entreprise. CakeDC a joué un rôle prépondérant dans la continuation de ce projet au sens où les membres de son équipe sont restés fidèles au plan de développement du framework et plus que jamais investis dans le projet. [Disclaimer : je travaille actuellement pour CakeDC. Néanmoins, cette affirmation se veut objective et la page présentant notre équipe devrait la justifier
]
Malgré une peur initiale lorsque chacun a découvert le départ de Garrett et Nate, la communauté a généralement bien réagi à cette annonce et de nombreuses personnes ont renouvellé leur soutien au framework et leur envie de voir les choses avancer (même si d’autres ont aussi annoncé la mort du projet !). Le retour de Larry Masters est également un retour au source, et est aussi l’occasion de se remettre à l’écoute de la communauté. CakePHP a surtout été rendu populaire grâce à sa communauté, il ne faut pas l’oublier ! Cela sera également l’occasion de donner des rôles plus importants au nombreux développeurs qui contribuent au framework en ouvrant des tickets et en résolvant des bugs sur leurs propres forks (au sein Git du terme) du projet.
Un point que je trouve également positif, et qui terminera mon article, est les discussions que cela a généré. Que cela soit sur le google group anglophone, le forum francais, Twitter, IRC (#cakephp ou #cakephp-fr), de nombreuses discussions entre des membres de la communauté et des utilisateurs ont eu lieu. Cela a été l’occasion de détecter les réelles attentes des utilisateurs vis à vis de CakePHP … je pense que tout ceci a été entendu (j’espère pouvoir aider à faire évoluer les choses également), et que nous verrons bientôt la mise en place d’une bibliothèque de composants (behaviors, plugins, helpers …) digne de ce nom, une avancée dans la traduction du core, une mise à plat des outils proposés … et de nombreuses autres choses !
Je suis conscient que cet article arrive un peu tard, mais j’ai eu assez peu de temps récemment pour m’y atteler … je n’ai pas l’intention de vouloir changer les choses, mais juste de retranscrire de manière objective les mouvements récents au sein de CakePHP afin d’arrêter de lire tout et n’importe quoi sur le web ! J’espère que vous avez désormais une vision globale de tout celà, et que vous serez plus que jamais assuré de la pérennité de CakePHP.