ramblings on PHP, SQL, the web, politics, ultimate frisbee and what else is on in my life

State of the Symfony2 CMF

People keep asking me when the CMF will be ready. Or they say that they will join once its further along because they think its too far away to be relevant for their clients today. So the good news is that Liip already has a huge client using CMF components. The combination of Jackalope with Jackrabbit and the PHPCR ODM (provides a similar API than the other Doctrine ORM/ODM) is ready for prime time. There are also already a fair number of components in different state that are close to be finished, simply concepts or not yet compatible. In other words we sort of have all the ideas and many pieces. We just need to put them all together which I will hope will be done no later than Q1 2012. I think we can hit this date even if no new contributors join and we just have the same slow but steady stream of patches. That being said, right now I would guess that 80% of the work is done by Liip employees, either sponsored by Liip, directly funded through client projects or done during spare time. Essentially the only other significant code contributions have been made by Ideato as well as Uwe, Johannes, Thomas and since very recently Nacho. So the numbers are growing, but given the over 200 people on the mailing list this previous list seems a bit short.

So you can imagine that if I say Q1 2012 is possible with things continuing as is, then you can also understand where we could be if others would join the effort. Actually indirectly others sort of have already, but they have done so outside of the CMF project which means right now their solutions are incompatible. Most notably I am talking about the great work by Thomas on the Sonata Bundles but also Fabrice's Radiant port Roger CMS and Florian's Casemate. It should be possible to port these solutions for page construction and media asset management over to PHPCR. As a matter of fact Nacho is working on porting the SonataAdminBundle to PHPCR. But we should also see how the SonataPageBundle and Knplabs Casemate fit into our concepts for page assembly. Speaking of Knplabs, Uwe has already integrated KnpMenu into the Symfony2 CMF and we are hoping to soon also adopt the Doctrine Extension i18n system as a replacement for our MultilangContentBundle.

I have mentioned PHPCR a few times in this post and some of you might not know what this is all about. In short it is a standardized API for content management systems. Now the most complete implementation requires Jackrabbit and yes its written in Java and therefore requires a JVM. But who isn't running Solr or ElasticSearch setup these days? All it takes to start Jackrabbit is a simple call to "java -jar jackrabbit.jar". But sure, still some people will not want a JVM or can't use one. There is also Midgard's PHPCR implementation which is written in C. But this might still not float for some, so there is already the ground work completed for a pure PHP solution that requires either an RDBMS or MongoDB. Currently they can already do CRUD as well as basic tree traversal and full text search. However they are still in their infancy. Also while the MongoDB one has an active maintainer, we need someone to take over the RDBMS one. It is not rocket science, since there is a framework that does most of the work. All that needs to be finished is implementing a single class that handles the final persistence.

There is also work going on to add dynamic routing to Symfony2 with the ChainRoutingBundle. Furthermore there is the TreeBundle to provide tree views on top of PHPCR. This will hopefully provide a key piece in replacing the current PHPCR Browser that was build even before Symfony2 existed. Additionally we are collaborating with the Midgard CMS team on a next generation UI concept build around VIE via the LiipVieBundle. Most pieces that exist today are admittedly badly documented and could also see improvements in testing. And yes it sounds a bit like a big puzzle, but we are working on solving it. However there is already a sandbox where pretty much everything I just mentioned is integrated and working (most of the time). As for the documentation we are usually quite fast if someone points us to a place in the documentation that needs to be updated.

At any rate I hope with this blog post I did manage to get the point across that the Symfony2 CMF isn't some dream land, off in a distant future, but something that is very close to be ready for prime time for the average Symfony2 developer and already useable for prime time stuff for people willing to get into the guts of things. Oh and Liip just launched its new website on top of the CMF. In case you are wondering, we are currently not bothering with any caching. And while I am sharing news about the CMF in the real world: we are also already winning prizes with Symfony2 CMF. In other words: The time is now!


Re: State of the Symfony2 CMF

Good post ..
Looking forward .

Re: State of the Symfony2 CMF

Sounds exciting. I'm still ramping up on Symfony itself, but trying to get more involved every day. If I can help with CMF at all I will. It sounds like a very cool project.

Re: State of the Symfony2 CMF

Sounds great!
Keep up the good work :-)

Re: State of the Symfony2 CMF

Awesome... keep it up.