A Framework or a CMS? What is better to choose?

There are lot of articles who are talking about Frameworks and CMS systems. What to choose? Which is the best?

However I wanted to write an article from a totally different perspective. First of all I want to make sure that developers and customers understand the difference between the terminology “CMS” and “Framework” nowadays.

Some theory first

When we use the terminology “Framework” we are more often talking about Web application framework . A web application framework is simply based on coding. If you are a programmer or a web developer that loves coding you often choose a Web application framework for your projects.

A CMS is a Content management framework and it is based on the modules rather than code. Anyone can handle a CMS as it doesn’t require any coding knowledge. Of course programmers can also choose a CMS as they can do their job faster.

There are lot of fights…

There are lot of misunderstandings about what a framework and what a CMS can do. Lot of fans that use CMS they are saying that “We can do everything with a CMS” and the fans of the frameworks are “No we can do everything with a framework” and so on… As a fan of frameworks of course I will have the same opinion but actually this is not true! The truth is that as we use the same base (PHP,RoR,python,. NET… e.t.c.), we all can do everything. Even the myth that CMS doesn’t use a good structure isn’t truth. For example Drupal 8 is based on Symfony framework, a very good object oriented web application framework.

So what do I choose?

Nowadays the CMS is more popular than the Web application Framework as it is really easy to use it. Even if you don’t have programming knowledge you can install and create a whole website with just a CMS. So what to choose?

It is always about four basic things that you have to think before you choose a framework or a CMS in my personal experience:
1. How much time you want to spend?
2. What do you want to do and how flexible has to be this project in the future?
3. How much money (if it matters) you will take after the end of the project.
4. What the hosting environment will be

For the customer it doesn’t really matter what tools you will use. The thing that matters is to have their job done. So let’s have an example:

I will explain to you my choices about two personal projects and one normal project. This blog and www.grocerycrud.com. First of all I am a PHP web developer so I can choose either a PHP framework, either a PHP CMS.

So for this blog that you are reading right now, I used WordPress as:
1. I wanted to spend as less time as I could as it is a simple blog
2. I didn’t want to do anything extreme. Just the usual. SEO, caching, comments, nice design and less spams!
3. I will not make any profit for the creation of the project. So I don’t have as a criteria the money.
4. Free to choose.

For grocerycrud.com I choose Codeigniter framework as:
1. I wanted to spend a normal time to do it. Not too much as this is a personal project
2. I wanted to be 100% extendable as I am changing the structure all the time with new ideas. For example now I am preparing a new mini website inside the grocerycrud.com (www.grocerycrud.com/image-crud).
3. Still the money doesn’t count here as it is a personal project
4. Free to choose

For www.dailyfx.gr I chose Codeigniter framework as

1. I had only 1 month deadline for me to do it from scratch
2. It was a system that the clients wanted some extremely custom webpages (such as with an internal connection with java applet charts). I didn’t choose wordpress or drupal as it would require more time to customize all of these unique needs.
3. For money nothing more than my normal monthly salary. So the money was not something to motivate me
4. Just another shared hosting

I want to investigate more

As I said only in my personal experience are 4 simple things that I have in mind but this is only because the outsource projects that I have are often small projects so that’s why I have only these four things in mind. Of course if I want to investigate more time I think a Web Application framework is the solution and I can give you much more criteria to have in mind. As the Symfony webpage says:

You’re making progress and that’s a good thing! You already know that you are going to use a framework to develop your site or your application. But which one? Here is a checklist that you can use to avoid making a mistake:

 

So there are 10 criteria for choosing the correct framework. You can take a look at this article as it is really straight forward about what are the real criteria to actually choose a framework. So if you really want to investigate to a framework for your big projects, have in mind that it is a long-term commitment, so make sure that you make the right selection… for you!

What about a CMS?

On the other side it is not so bad to know programming and also be a “CMS guy”. The bad think about it is that they are many “CMS guys” that don’t have any programming knowledge and think that they can do everything with a CMS. This is also a myth! When I was talking before that with a CMS you can do everything as you have the same base it also depends if you have some basic programming skills of course. If not then you can do everything as far as the programmers/web developers let you have it. So my opinion is that if you are a “CMS guy” and you don’t have any programming knowledge it is good to start learning some basic stuff and try to create your custom plugins for the CMS from scratch.

And finally a conclusion…

So as a conclusion I have to say that it always depends of what you want to do and how much time you have to deal with it. I believe that every tool is build for a reason so as many tools you know (frameworks or CMS), so flexible you are as a professional developer. So it doesn’t worth it to be a CMS or a Framework fan. Just choose the best tool for you situation and that’s it.

← Previous post

Next post →

42 Comments

  1. Jasonking44

    I can write “Hello World” in PHP, So i am a PHP developer. Also because I use the programming statement, ‘print’, that means I am a programmer.. because I am writing Β a program using a programming language.Β 

  2. Check out concrete5, an excellent CMS and framework built on MVC includingΒ  some Zend libraries: http://steelesoft.net/concrete5

  3. I can write “Hello World!” in 10 languages! But in 3 of that 10 I can write anything I want! πŸ™‚

    • so useless dude…i am completely sure you don’t have any programming skill just by reading that sentence

      • Yussef mneimneh

        depends what you want to do i know assembly and by reading that sentence i m completely sure you know only high level programming and nothing at all about it

  4. I like this article a lot!
    It really describes a true story.

    To be honest with you, CMS’s are difficult to use (from the Smashing Web Developer point of view) unless you follow up their coding principles.
    For example I started playing around with Drupal at ver. 4.5 (or 4.7)
    I could do a lot of things with that!!!

    Then version 5.x came and change A LOT of things!
    By the time ver. 6.x came I had to learn a lot!!!
    There I gave up!!! I didn’t have enough time to follow up!!!
    Even though Drupal is a personal favourite, it is a beast!!! And all beasts are difficult to maintain!

    I expect Drupal 8 stable release to relearn it’s coding structure and take it from there!

    So my simple decision/recipe is:

    a) use the tools that you feel comfi with
    b) find the tool(s) that does the job better
    c) keep an open mind in using various tools together (fusion of technologies)

    tools = programming languages or libraries or frameworks or cms’s or… you get the point

  5. vishu7seven

    You just made me realize that I’m not a programmer even though I’ve worked to develop many websites!

    And thank you for this πŸ™‚

  6. JohnMillion

    “Do you write any plugin” ???

    Do you write any English?

    And it’s “treat me a beer” but “treat me to a beer”.

    And what is “agrrrr”? Greek? You mean “arrgh”?

    Take an ESL-course, please.

  7. chrisHelios

    PHP is a Scripting Language not a programming language, right? But i love this article. True story man! πŸ™‚

  8. Great post. I am a bit undecided about using CMS vs frameworks. I have a few questions. With your groceryCRUD and dailyfx sites, do they have a CMS built in? For instance, if the people at dailyfx.gr want to add something to the site or change the menu items, how do they do it? I know in CMS, this can be easily done. With CI, you will have to provide all those features developed from scratch? If that’s the case, isn’t it going to be more time consuming? Just wanted to clarify. Thanks

    • web_and_development

      Hello Rob, and this is a very good question actually.

      Of course you are not creating everything from scratch. You always have a CMS to start with. For example in my old company I used to work with XLixis CMS . This was just a custom CMS (that I’ve created by the way ) in Codeigniter for our every-day work (User roles, header menu items, webpages… e.t.c. ). So for example the menu items for dailyfx.gr is something that it is really custom and it is changing all the time. Even in the header menu items you can see news feed and other stuff that common sites doesn’t have. So for the header menu I’ve created a dynamic menu that only a developer has access (or the administrator of the website). So if they want to change the menu items they only can change the title and the priority of the menu items, nothing more. Usually when they are adding a new menu item is a new section so they need to contact us and decide what is the best solution for them.

      So as for the time consuming you have to think about how easy the changes can be made in the future and how often they change their minds. So the question is: can the dailyfx.gr be created with a CMS (for example drupal?), the answer is yes πŸ™‚ . I think for this specific site the time creation of the website would be even faster (it would take 2-3 weeks for drupal) . However at the long run I think Codeigniter was easier to maintain.

      As for the grocery CRUD website. I actually started from scratch πŸ™‚ . But this was a special case. And yes it is taking more time for me to create new things. For example in web-and-development.com is usually just a drag n drop to create something new. In grocery CRUD it can take a whole week to create a new functionality. However at the end I am enjoying developing for grocery CRUD as it is lot of fun and I like to share my knowledge later to the community. For example: http://www.grocerycrud.com/image-crud and http://www.grocerycrud.com/codeigniter-simplicity (two of my open-source projects) they were two ideas that I created from the creation of grocery CRUD website.

      So my opinion: Don’t be afraid to use a Framework and don’t be afraid to use a CMS. If you can’t decide, use something that you like to work with at the beginning πŸ™‚

      • Thanks for your reply. I haven’t used a framework for any of my web projects. Perhaps the projects I’ve done so far are not complex enough that required a framework. Whenever I use a CMS or an e-commerce application, I feel they can handle pretty much everything. If I needed extra functionality, I build modules or extensions…. That’s one reason I never seriously learned a framework – although I’d love to. At least a framework will give me a much better understanding of the underlying architecture.

        I guess it really comes down to a personal preference about whether to use a CMS or a framework; or if the website or application is too complex, then the CMS just can’t handle it and you’d need a framework.

        Sometimes it makes me a bit confused thinking about the usage of CMS and framework. Maybe websites for banks is one example where they need online banking features and other custom solutions that a framework is essential. Even banking sites can be a mix of CMS and a framework. Social networking sites like Facebook would be built with a framework as they are specific applications and are impossible with a CMS. How about Instagram? Can CMS create something like Instagram or does it need a framework? Even news portals such as http://www.bbc.co.uk/ are absolutely possible with a CMS. Although they are huge, they are mainly information-based and I think a CMS can totally handle pretty much everything including access control for editors and whatnot. I think CMS and e-commerce applications have become quite powerful now that unless you need a very complex application, you can totally rely on a CMS. This is just my observation. I am not defending CMS over framework. I’d welcome views on this so that I can understand from a different perspective.

        One thing I don’t understand is why would people spend time creating their own CMS using a framework when there are so many powerful CMS in the market? You gave me an example of how the users have to come back to you when they have to add a menu item in a new section. In CMS nowadays, even the users themselves can add menu in different sections of a page that is defined in a template without needing a developer to do it for them.

        Let me know your thoughts.

        • web_and_development

          Hello Rob,

          Well as I said, it always depends of the projects that you have and how many people are involved. For example: I think if you are 1-2 people max that are working to a project I think just a CMS will work for you. But a site like BBC is not just a CMS. They are 80-100 maybe more people (developers) working at this website. I am sure that they are not using any CMS and they probably don’t use a Framework either. Once your team getting bigger and the specifications are getting more and more (and the customer can afford it) then a CMS doesn’t fit you, later a Framework doesn’t fit you, then PHP doesn’t fit you either. I think BBC is using C, C++, Python, Java and Perl for development.

          When it comes to a CMS it depends of many things:
          – how many people are involved
          – how much traffic the website has
          – how much money the customer is able to pay
          – how fast the customer wants the project
          – … .e.t.c.

          Especially with big websites as BBC even one small line of code can make the difference. For example use preg_replace instead of str_replace .

          So my opinnion is that if you don’t need to use Frameworks don’t do it. My advice is that is good for you to learn some Frameworks as:

          1. You will be more flexible in the future
          2. You will know how it all works in a CMS on the background (for e.g. Drupal 8 will use Symfony 2 as a PHP framework)

          I don’t think that learning will stop you of creating beautiful websites. So my advice is to continue to create websites with CMS as your are familiar with and you like it. The important thing is to use tools that you are familiar with and CMS is the best tool for you now. On the other side, you can learn a framework (e.g. Codeigniter) and see how things are at the background of the CMS. I think you will love it as well.

          • Rob as @web_and_development:disqus said and he is correct it depends upon the project like speaking about me i did few projects where i had to use CMS (e.g http://pixfiesta.com/ ) and on few Framework (http://wilianicpa.com/home.php , http://bookingsa.com/) i can give u my personal experience as to y choose which…

            #1. CMS
            i opted for wordpress for the CMS because :-
            a. dats my personal project with no design spec.
            b. i wanted to complete in less time.
            c. customization was not needed.
            d. all 4 points wat web_and_development mentioned too.

            #2. Framework.
            i thought of creating my own framework to use and the reasons are :-
            a. design was completely dynamic and customizable
            b. lot of different api usage for different pages.
            c. custom flow.
            d. always changing with respect to design and function.
            e. deadline was not an issue.
            f. last but not the least payment processing was out of box.

            so in a nutshell i wanted to have COMPLETE FREEDOM to do anything without inspecting codes here and there inside plugin with good design of customer’s choice.

          • web_and_development

            I completely agree with you @ahmad expect of one point. I think that it is more essential these days to use a PHP framework rather to create our own framework. The basic reason is that almost all the frameworks out there are open-source so it is easy to configure them. Behind the scenes a PHP Framework has lot of experience, weird bug fixes that an average web developer is difficult to find and lot of documentation and questions in stackoverflow πŸ™‚
            Yes, you have the Complete Freedom as you said without the framework, but this freedom is only for you πŸ™‚ I think if an other developer want to contribute to the project, it will not be so easy.

            There is though one exception to the rule. Maybe you are a new Taylor Otwell or a new Phil Sturgeon and your framework will blow our mind πŸ™‚ . So if you think that your idea of the framework is good. Just open a new project in github and share this code (just the generic code of the custom framework, not your whole project) to a big community out there πŸ™‚

          • @web_and_development:disqus i donno u mocked me or praised me πŸ™‚ … but yeah u r totally correct we should use already built stuffs….

          • web_and_development

            Hello @ahmad . I am really sorry, I didn’t try to mock you, and I am sorry if you understood that I want to πŸ™ . It is just a friendly advice. It really is! When I was talking for Taylor Otwell and Phil Sturgeon I really just meant that you can open a project in github to share your code. We all started like that. You never know. Perhaps your framework really worth it.

            Kindest Regards
            Johnny

          • Hello which cms is best to make job-portal website

            web_and_development

          • Agreed. I was so caught up in just learning PHP and honing the way I did things that I never knew frameworks existed for years, and the ones I did run across just turned me off immediately. Most of them you have to basically learn a whole new language. So I built my own custom framework and put it up on GitHub just as you suggested. Then I discovered CodeIgniter. The thing is programmers all have pretty much the same problems, and CodeIgniter has solved a lot of them. So I completely rewrote my framework to integrate CodeIgniter (and Smarty and Bootstrap), and you can check it out at BootPress – A PHP Framework with a built in blog and flat file CMS (inspired by Pico). It is both a Framework and a CMS, so there is no need to choose between the two anymore.

  9. cishemant

    I will go for using CMS as I am not a developer, but I would definitely suggest to use web application framework for a developer.

  10. Don’t forget the business logic criteria πŸ™‚ it’s not the same choice if you have a wbesite based on multiple interconnections with WS for industrial use, in this case I think choosing a CMS is not really a good idea

  11. nice little article,
    I am a begginer in web developement and have tried using WordPress, but it seems preety hard to customize, so I am currently researching if I would be better off with a framework. The cool side of using wordpress was that I had a functional website in no-time, and the theme I used was also mobile friendly(responsive)

  12. edramirez

    I would like to add to what you said in the article that ” it always depends of what you want to do and how much time you have to deal with it”. Another optional consideration would be the headache factor. Would it give you a bigger headache to install and maintain a CMS? How about a framework? There are a lot of excellent softwares out there that give you excellent headaches, too. And when you install the software – whether a framework or CMS – it would be used by various kinds of users. Sometimes the most idiotic users are those who cause your system to crash.

    A secondary consideration would be the compatibility of files. Let’s say you are thinking of choosing whether to use CodeIgniter or a CMS made in CodeIgniter. However, you need to install a third-party library in order to reuse your existing code. There are cases when the library files will overwrite the CMS files, causing the CMS not to work. Then, you would have to choose whether to give up the library or the CMS altogether.

    A third consideration would be how easy it is to install. A framework might be more complicated to install but a CMS might have all the files out of the box. I’m the guy who likes programs that are easy to install because they are also easy to port from one kind of setup to another, like LAN to online. Think of what headache you would have if you decide to port an online application to LAN and suddenly the system doesn’t work properly.

    Ed

  13. Good Job!!!

    I have question I will appreciate if you can answer it.

    i am a developer and never use Framework but few time tries CMS(Joomla). I am going to start a new project like your dailyfx.gr. Time and money is no matter at this stage 10 people will involve in it.

    Client Requirement is
    A cool dynamic website with CMS, different kind of dynamic reports, interaction with third party web services, run different jobs will that work, email blasts,……

    Being a leading role now I need to choose technology and I have concerns

    As per my experience I know this project could not done in CMS only and I also know maintenance of other’s work/module is one of the dirty job for programmers. Which I want to hesitate.

    Now choices I have left Please guide
    If I choose a framework can I apply CMS top of that +++(belongs to same family)? If no then what combination would be best for it. if you choose?

    Or just do a custom website in PHP which would be easy to maintain later on and have full liberty to do what so ever. (Or still I can apply and enjoy features of framework/CMS) top of that?

  14. Very Useful Post. Actually I get a clear idea about CMS and Framework after reading this article. Thanks John. Thanks a lot.

    Now I’m using Yii Framework. I’m new to this. Is any ease to understand yii tutorial available?

  15. ave infosys

    Thanks for sharing your info this is very useful information,very helpful for online learners

    CMS Websites Services in UK | Canada | USA | India

  16. Good article. Thanks for all the valuable information here. I have a question for you if its not too old of an article to ask questions on:
    I am fairly new to PHP and am developing a project for work that I am planning to build in WordPress. In the book I am using (practical PHP by Paul Hudson) I learned how to build a simple framework and got to thinking, perhaps using a Framework would be more beneficial as my end goal here is to learn as much as possible about PHP. Any thoughts on that? I feel like diving head first into something more complex may help develop better skill. Thanks in advance for any input.

    • web_and_development

      Hello John,

      I agree with you. I think if you dive into a framework it will help you learn PHP better than developing in a CMS. The PHP Framework is giving you the power to do whatever you want and at the end you will have the happiness that you did create something from scratch with your own logic. How cool is that? πŸ™‚

      On the other side if you choose a CMS is not that you will not learn much. It is just that mostly you will use what already other developers did. So it depends of what you want to do at the end πŸ™‚

      With PHP you have many choices so it is up to you of what you want to achieve πŸ™‚

  17. cmsfaridabad123

    Well explained article! I think that CMS is already a developed application with a set of features, however
    most of them are coded in such a way that users can tweak them around
    and modify the code to fit their own needs.

    So a framework does not come with a working application, but a CMS comes with one.
    Thanks for posting!

  18. I want to create a big dating web site with also video chat room or simple chat room and a forum.I haven’t studied coding but i am willing to learn it.Should i choose a cms like wordpress or buy a offline web designing tool? Thank you in advance!

    • web_and_development

      Hello george. I think you can start with WordPress. It is fairly easy for anyone and it doesn’t need any programming knowledge to start.

  19. Julien

    Hello
    Thank you for your article.
    I have a urgent question to ask. I am creating a new business, and I am about to choose a web design/develop company to build our commercial site.
    We have chosen one company which I like a lot their style and way of working, even they are the most expensive option. However just before signing the contract with them, I realised they used framework (seems not very popular one, the name is sillysmart), not CMS. Though I do not really care about technological choice, but I do not want to face issues like:
    1, we are locked with them: because we plan to develop quite big features afterwards. They are already very expensive, I am not sure we will always be able to afford their prices. It is always good to keep the door open to be able to be free to choose another develop company if necessary.
    2, maintenance: is it very difficult for us to find people to maintain our website if we choose to work with this sillysmart framework based company?

    Thank you in advance for your reply.

    Julien

  20. ketki patil

    Hello, Web-and- development
    It is a very good information about how framework and CMS can choose for your projects.
    Actually, I am learning Joomla and I love development but, in case of Joomla I didn’t find the thing like development as such.
    So, now I know the difference after reading this blog.
    My question is that, I developed some static website back in 2007 using editors like dreamweaver and did PHP/Mysql programming and now i’m learning CMS(i.e Joomla), so can you please suggest me how I improve myself in web development? and what should I learn to be a good PHP developer?

    Thank You.

  21. antoine

    After … something like 20 years of code (i’m almost 40y old, and i began coding, while understanding nothing, as a kid)

    i never used a framework

    people almost thing that’s i’m a kind of genius (mainly because i know how to code things quickly)

    ps : and tomorrow i will use grocerycrud for quick prototyping πŸ™‚

  22. Codeigniter Developer

    Web application framework (WAF) or web framework is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs…About the CMS and framework (such as Codeigniter, Laravel, CakePHP and so on), it always depends on what you want to do and how much time you have to deal with it. I believe that every tool is built for a reason so as many tools you know (frameworks or CMS).

  23. If you want to build a CMS application (WordPress, Joomla, Magento, etc…) use a Framework. If you want to build a website, use a CMS application (WordPress, Joomla, Magento, etc…)

  24. Hi,

    First of all it is a well described Article.

    I am 100 % agree with your statement that” it always depends of what you want to do and how much time you have to deal with it.”

    As CMS is an easy to use than frameworks.
    You should choose the right option between CMS or Framework based on situation.

    Thanks for such a nice informative post.

  25. Hi,

    THIS IS EXCELLENT.
    I finally made my choice, i was hesitating so hard by making my own website with drupal since drupal 8 and sf3.

    And I’ll keep and go with framework symfony.

    U convinced me with I wanted to be 100% extendable as I am changing the structure all the time with new ideas

    As my personal experience. I always have few experiences with CMS and I always have a bad feeling with it.

  26. frank&beans

    when to use cms and frameworks:

    cms:
    When your client wants to be able to make changes to the site

    Framework:
    When your client wants you to make all the changes.

    Time shouldn’t matter because you should already have several templates up and ready to go otherwise use a cms.