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.

sfSimpleCMSPlugin

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.

Published in