Symfony2 CMF RC1 released!
I think it was February 2010 at Symfony Live Paris, well over a year before the final release of Symfony2, during the Q&A that I voiced by disappointment over the fact that so few (none?) of the big PHP applications are based on a general purpose web framework. That all of these applications choose to waste their time on building low level architecture pieces rather than focusing their energy on solving the higher level problems that their end users actually care about. That they in the end limit their the extensibility of their applications. That they also limit interoperability. I follow this up with a blog post but I also kind of felt that we framework authors needed to take a step towards the application developers. Luckily my co-workers at Liip agreed so we decided to do something about this by organizing a meeting in September 2010 and sponsoring travel expenses for many of the leading authors of CMS components for symfony 1.x. We came up with a game plan and then we got to work.
Admittedly through out the first 2 years it was mainly Liip doing the work, partly funded by client projects. But Liip is a web agency, we wanted tools to build better solutions for our clients. So from day one we wanted to do this with the community. But through out this time we have had many people that have done very important contributions. Some of who only stayed for a bit but most of which are still very much around. In fact many of these contributors have been starting to reap the benefits of their investments building production applications for over a year already. Going down memory lane always runs the risk of forgetting someone but from the top of my head I want to thank Johannes and Uwe for being the first non Liipers to have done significant contributions to Jackalope. Then there is of course also Benjamin who wrote the initial version of the Doctrine DBAL integration for Jackalope, which meant we no longer required Java. In the same way Henri and Petrius brought us the MidgardCR alternative implementation of PHPCR. Henri of course also introduced us to create.js. Then Nacho Martin for singlehandedly getting SonataDoctrinePHPCRBundle off the ground. And of course Thomas for having created the Sonata project in the first place. I also want to thank Ideato for their various contributions, organizing hackdays, working on the very early concepts of the Routing component which has since been adopted by ezPublish and Drupal. This really validates the goal of making it easier for these well established applications to adopt a general purpose framework. I also want to thank Freddy for his part in proofing that we were on the right path.
However these days it is no longer just a few people joining the effort temporarily. We have a vibrant community where Liip is still very much involved but the community is now doing the majority of the work. In many ways this might even be more important for the survival of the initiative in the long run than getting every technical aspect just right. That being said, the huge number of contributors, doing real world projects, of course help find flaws in the concepts and validate what we got right. As such we can claim with confidence that the CMF in its current state has proven itself in the real world in multiple projects done by multiple different companies all over Europe. This in turn also means that its future is no longer dependent on a single company let alone a single client. The community is alive and well and growing.
So its with great pleasure that I can announce that we have finally moved all the key components to release candidate state. This means that while we still have a few tasks we want to wrap up, we believe we now have a coherent well tested system to enable to build custom CMS projects on top of Symfony2. We will use the rest of the month to work to wrap up some open items in the storage layer and get as many of the nice to have's in the Bundles done. Also while our documentation is already quite extensive, a lot of details especially in the configuration were changed for better consistency in the last weeks which are not yet reflected in the documentation. So there are plenty of tasks for people who want to join the effort now. We certainly appreciate it and as a project we have always put great emphasis on investing into new potential contributors. So come join our mailinglist, our IRC channel or our issue queue!
So for the historians among you its possible to get a good overview of the different development stages of the CMF by going through all the CMF related posts in the Liip blog. Listening to the podcast Pierre recorded during our first meeting in the summer of 2010. Boy was I niav to believe we could release our first stable release close to the first stable release of Symfony2 itself.
Let me end this post with some numbers (generated using GithubStats):
./ghs compile phpcr Contributions: 1360 Contributors: 39 Forks: 69 Watchers: 323 Downloads total: 85639 Downloads monthly: 4100
./ghs compile jackalope Contributions: 4457 Contributors: 40 Forks: 90 Watchers: 242 Downloads total: 77642 Downloads monthly: 4106
./ghs compile symfony-cmf Contributions: 6383 Contributors: 146 Forks: 492 Watchers: 1215 Downloads total: 284072 Downloads monthly: 17038
To give get some perspective on those numbers lets compare to Symfony2. Remember that Symfony2 is the most active PHP project on github of all time and the CMF started quite a bit later.
./ghs compile symfony Contributions: 36266 Contributors: 1080 Forks: 4667 Watchers: 10094 Downloads total: 13041336 Downloads monthly: 831751prev next