So you’ve decided to build a website and have everything chalked out. One question that is bound to trouble you and that can be responsible for the success or failure of your project is how you plan to implement it. Not much time back, the most popular solution was hand coding the entire project while making use of some openly available libraries. With the increasing complexity of web applications, that is no longer a feasible option. Today, two of the most popular approaches are using an MVC like Symfony or a CMS like Drupal or WordPress.
Whether you choose to go with a CMS or an MVC depends on what you are building and what kind of effort and money you are ready to put in. A CMS will work for you out of the box. It will have the basic functionality that a portal needs and additional features will be available as add-ons or plugins. With popular CMSs like Drupal and WordPress, you can expect to find a plugin for any regular feature that you want to incorporate and you won’t have to write a single line of code. The problem with a CMS begins when you want something very specific which is not available as a plugin. Suppose the user login and authentication systems is different from what comes out-of-the-box with the CMS then, it’s reasonable to assume that you will not find a plugin that suits your needs and you will have to modify the existing plugin or write your own. You may write a plugin for the CMS but with the constraints placed by a CMS, depending upon the effort required, it may be a better option to build your own application from scratch. An MVC framework like Symfony will give you all the tools you need to build up your application and you can make the application exactly the way you want it. If you have a lot of business logic to implement, a CMS is not for you. Using Symfony will give you complete control of things such as data storage and UI, it will allow you to separate your business logic from the presentation layer and also, it will let you use the latest in technology.
If you have decided to go for a CMS, you still have a lot of options to choose from, the popular ones being Drupal and WordPress. Both are great in their own way. WordPress powers almost 15% of the world’s top websites and this figure alone speaks volumes. It is really quick and easy to configure and can get you a multi-user blogging platform ready in under 5 minutes. With thousands of free and paid themes and close to 15000 plugins, you can very well get a site close to what you wanted. Other things that work in its favour are easy administration, low maintenance costs, large community, frequent updates and good SEO out of the box. While it is mainly a blogging platform, it has been successfully implemented in News portals, image sharing and other such fields where the content types are limited. For that matter, WordPress allows only two basic content types- Post and Page. So you can do a lot of stuff on this platform, but it cannot provide you with everything that you may want. Here comes Drupal. It powers close to 2% of the world’s top websites. It is heavier than WordPress, not as intuitive and is relatively costly to maintain. So why would you use it? Because it can provide you with everything from forums and user networks to fully functional shopping portals and payment gateways as add-ons. It allows you to create your own custom content types, and also design the view of your pages. It has a very active community and updates are regular. So, if you are not planning on writing a single line of code, you can still have an e-commerce site or a social network ready, and obviously, you can write your own add-ons .
So, in a nutshell, if your website is something very specific to your needs, don’t go for a CMS. Use a Framework such as Symfony or CodeIgniter. If your project is something generic, using a CMS will save a lot of effort. Go for WordPress if you have simple content types. Large applications with complex functionality are better off on Drupal.

