Symfony2 CMF Project
Why does the world need this?
Drupal is awesome!
No REALLY!
Drupal is awesome!
Drupal is awesome if you are an end user!
Powerful admin interface
Drupal is awesome if you are a sales guy!
Well known brand
Drupal sucks if you are a developer!
Drupal is CMS 1st, development framework 2nd
This is a legitimate prioritization for their users
Drupal developer nightmares ..
- .. no clean separation of configuration, logic and content
- .. no clean deployment and staging concept
- .. inconsistent cache layers
- .. function callback AOP is not every ones cup of tea
- .. lots of legacy baggage
- .. NIH (not invented here) syndrom
Note the Drupal guys agree and are actually collaborating with Symfony2 to improve
Do we also suffer from NIH?
- Focus on solving core issues of Drupal
- Based ourselves as much on standard tools and specs
- Deliver value within a reasonable time
CMF = Content Management Framework
- In other words: its a toolbox to create your own custom CMS
- Not a one size fits all, but increase code sharing
- Imagine Diem, Sympal, Apostrophe all build on the same content foundation
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
Data in a CMS is mostly unstructured
RDBMS are not a good fit, hurray for NoSQL

CMS often organize content as a tree/graph
Most NoSQL not a good fit, hurray for Graph DBs

CMS should be able to store content versions

Complexity shouldn't overwhelm developers
Need a solution that can scale both from small to large projects and we want to get somewhere within 12 months!
Enter Doctrine PHPCR ODM
PHP Content Repository + Doctrine ODM
PHPCR (aka PHP-ified JCR specification)
Works like MongoDB or CouchDB ODM, but also includes a tree/graph, versioning API

PHPCR provides a standardized API that can be used by any PHP content management system to interface with any content repository.
PHPCR implementations
- Jackalope
- Jackrabbit (via Http WebDav/Davex) transport layer
- Doctrine DBAL transport layer
- Midgard2 PHPCR
- ..
PHPCR has been submitted to the JCR spec at the request of David Nüschler, JCR spec lead
Not all data fits well in PHPCR/JCR
- For example aggregation is better done in an RDBMS
- Store web store product description in PHPCR/JCR
- Store web store inventory and orders in RDBMS
Door swings both ways, so remember

Interest is huge!
- Almost 250 people on the mailinglist
- About 10 more per month
- All key decisions have been made in public forums
- Multiple people are working and committing to all parts of the code
Next steps
Constantly moving... The best entry point to see what is going on right now is the CMF Roadmap
Eat your own dog food
- Liip has rebuilding their website on top of the CMF
Many companies are committed to the effort
