Like us, you probably met this case several times: A client has to choose a tool for his website, which is a mix of content managed in the backend, and specific features in the frontend. The choice is between an open-source CMS and an open-source framework.
CMS or framework?
Both CMS and frameworks have disadvantages in this case:
Adding features to a CMS is not easy. It takes more time than to develop the feature alone, because you need to trick the CMS into doing something it was not designed to do. This is especially true for features that write to the database a lot, like community features, or features that have unusual business logic. Besides, there are not many mature open-source CMS developed in a professional way (understand: PHP5, object-oriented, with unit tests, a good developer's documentation, community and support). The developers who have tried tweaking a CMS often remember the experience as a nightmare.
Starting with a framework means that you have to redevelop all the content management features from scratch. The client cannot see an example website built with the tool and say "this is what I want". Also, you need to write the requirements for the CMS backend, and this is extra time to add to the design phase. The resulting content management features are often less powerful than what you would have with an existing CMS.
The choice is not easy. Symfony was sometimes rejected in favor of existing CMS software for the reasons mentioned above. You probably agree that this is a mistake in the long term, but yet the client is always right, and if he chooses Drupal or ezPublish because the backend looks nice (as opposed to the backend of the symfony CMS, which is non-existent), you can't go against it.
The search for the Ultimate Web Application Builder
CMS software developers are aware of the disadvantages of their tools for applications that not only do content management. That's why some of them are already redeveloping their software based on a more robust set of classes, an extendable and not specialized library - call it a framework.
On the other hand, frameworks follow the same evolution towards a perfect solution for all needs, by adding more complex components, ready-to-use modules for real life features such as blogs, nested sets or user management.
In both cases, the efforts tend towards a full-featured CMS built on top of a full-featured framework. Wheather you start with an existing CMS or an existing framework to get to this point is not important. The real question is: Who will get to the point first?
A symfony CMS
That's why a CMS based on symfony is one of the most popular requests among the community. Redoing a full-featured CMS is a project on its own, and if you want to start it, please go ahead - you will probably need a few months before getting something satisfactory.
But developing a simple CMS with symfony should no be too hard. That would be more of a page management system, with a simple interface, possibly using JavaScript visual effects and Ajax to allow for edit-in-place features. Something that you could show to the client, and use for projects where the CMS features are not the critical part of the application.
This simple symfony CMS exists: it's a plugin, and it's called (surprisingly) sfSimpleCMSPlugin. It has been released yesterday, and you are invited to test it and report any remark/problem you may encounter.
The future of web application development
Together with sfGuardPlugin, sfMediaLibraryPlugin, sfSimpleBlogPlugin, and sfSimpleForumPlugin, this plugin forms a powerful site management application. The only thing that's left is a sfSimpleSearchPlugin
(yet to be released), and the symfony framework will have all the tools to compete with full-featured CMS applications for the most usual requirements.
Developing web applications in the future should look like playing Lego with the power to create a new shape in minutes. With more that one hundred plugins (and counting), symfony is getting closer to the perfect tool.
I tend to prefer the second capture in the wiki page, especially the "things to do"... ;-)
Great work François!! Symfony is really becoming an unbeatable PHP framework.
Symfony + a few sfSimpleXXXPlugins = full featured website in minutes
GREAT!
Its really great.. now the static content can be easily maintained. Cheers :o)
I'm dreaming of it, François and Fabien make it !! Great jobs ! I want to wear a t-shirt with the sentence "Symfony is saving my life !" . Thanks a lot for all of your job.
I was just in the process of tweaking my home-brewn CMS based on Symfony when I read these wonderful news. One of the best things about the plugins is that I can learn from the best practices by example. Thanks, guys.
Would be even better if these plugins would also work with Doctrine. :-(
francois- love the start of a CMS, looking forward to contributions.
I am having a problem with the install that I have posted in the forums. When in the listing page of the simpleCMSAdmin I get the following error:
Warning: Invalid argument supplied for foreach() in /usr/share/pear/symfony/helper/FormHelper.php on line 76.
In addition when editing a page and clicking update I get the following error: The template "/showTemplate.php" does not exist in: ....
Any help would be much appreciated.
With more that one hundred plugins (and counting), symfony is getting closer to the perfect tool.
Couldn't agree more. As soon as there's sane HTML form validation and handling logic, Symfony will indeed near perfection.
Ok I have a little website (which have a very simple page content admin backend) to redesign using Symfony, I test it now !
Great, just when I finished my own CMS in symfony for a client!
Seriously though, this is great news as I much prefer to use community-developed code rather than my own when possible... I have several other sites in the works which will probably use this plugin now.
Great, I was discussing this with some collegue at work this week, and you came up with this :)