At Symfony Live 2011 - Paris, we announced the plan to build a content management framework on top of Symfony2. Meanwhile, the Symfony2 CMF has reached a usable state.
The mission statement of the CMF is:
The Symfony CMF project makes it easier for developers to add CMS functionality to applications built with the Symfony2 PHP framework. Key development principles for the provided set of bundles are scalability, usability, documentation and testing.
The goal of the CMF is not to build yet another CMS, but to provide building blocks for content management in custom applications as well as a foundation to build general purpose content management systems like the Apostrophe or Midgard CMS. There are CMF bundles for dynamic routing based on databases, dynamic menu structures and content handling. Editing can either be done in the frontend, i.e. using createjs or in the backend with the Sonata AdminBundle. The CMF recommends but does not depend on using the PHP content repository (PHPCR) as content oriented storage abstraction layer. PHPCR provides a sort of NoSQL database that supports tree structures, references and even versioning natively. With Doctrine PHPCR ODM there is a layer on top of PHPCR that looks and feels like what Doctrione ORM offers with additional convenience features like native i18n support.
We have prepared several presentations on the CMF and its components which are available at cmf.symfony.com.
We just started releasing 1.0.0-alpha versions of these bundles. Remember that it is possible to use and extend just some bundles: Pick what you need. For an easy start, there is also the cmf-sandbox that demonstrates most of the features. The sandbox is also available online at http://cmf.liip.ch/.
To illustrate how far along we are and how empowering our core architecture is, we have asked Frederic Haddad to write down how his experience has been going from zero previous experience with the CMF to building a modern blog within a short time. He also recorded a screencast about his real-world application:
"I’m Frederic Haddad, Co-Founder of Coddict, a web development agency based in Montreal, Canada that relies on Symfony2 for most of its client projects. When we developed a custom CMS solution for a client using Symfony2, we had to put in considerable extra effort in order to implement all the required CMS features, such as versioning, custom content layout and multi-language menu generation. I heard about the CMF at last year’s ConFoo conference. It sounded interesting but I never dived into it until two weeks ago when we started a new client project (blog system). I decided to develop it using the Symfony2 CMF and was quite impressed with the potential especially thanks to the PHPCR based backend architecture. Combining this Content Repository API with the provided bundles and components gave us all the key features of a CMS: versioning, dynamic routes, more elegant and concise code, unstructured nodes, i18n, content reusability and a solid multilingual menu generation strategy. I have recorded a video to demonstrate what I’ve been able to build in just 2 weeks into learning how to use CMF."
If you go to the Symfony live conference in Paris this week, don't miss the talks about the CMF:
Lukas Kahwe Smith and David Buchmann will be happy to talk with you about the CMF. David will also be at the Hackday on saturday.