CakePHP n’est pas mort !

CakePHP : Framework de RAD en PHP

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 :D

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.

Partagez avec vos amis !
  • del.icio.us
  • Twitter
  • Tumblr
  • Facebook
  • Digg
  • LinkedIn
  • Google Bookmarks
  • email
  • Technorati
  • Wikio FR
  • Netvibes
  • RSS
If you enjoyed this post, make sure you subscribe to my RSS feed!

Tags : CakePHP, lithium, open source
  • Hi Pierre,

    Please don't take my comment the wrong way, because it was great to meet you at CakeFest and I thought we got along quite well. I'd hate to sour that.

    Quite honestly, it sounds like you're just regurgitating the exact same propaganda I've heard from everyone else at CakeDC. Take a look at the current CakePHP core team. Do you notice how almost all of them work for CakeDC? The only 4 non-CDC developers still left on the team now spend most of their time on Lithium anyway.

    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 (including everyone who was at the team dinner in Buenos Aires at CakeFest 2, i.e. Renan) knew of the existence of Cake3 *months* before it went public. Only after Larry found out did he decide to take over the CakePHP team with CakeDC developers.

    When the CakeDC took over the CakePHP team, this was the beginning of the end.
  • Hi Nate and thanks for your comment.
    I updated the article to mention your remark concerning the way Cake3 was started, and wanted to make things clear about this article goal. It is aimed at giving some information to people who do not know CakePHP very well and read about the fork without exactly knowing what was going on. From these facts, I just wanted to say why I thought CakePHP was far from its end (and I know it is not your standpoint, but there is nothing wrong with that :)).

    This article (published on my personal blog) is just aimed at summing up what has been said on english channels these last few weeks. There is nothing written here that cannot be found on IRC logs, other blog articles, tweets (some of them removed at the moment) and other public channels known by everyone from the CakePHP community. Nothing discussed with colleagues at CakeDC appears here.

    I also hope you (and no-one else) took this as a personal attack, because it was not! You might know I do not think personal issues might be discussed in public, and I appreciate the fact that whatever happened in the core team stayed there and was not publicly used to promote one of these two projects.
blog comments powered by Disqus