CMS or self build?


I have tried using a few CMS in the past but always gave up and just wrote my own site with HTML, CSS and some basic php. I’m reluctant to use a CMS as I feel if I use something like Drupal I’m far more likely to be targeted by hacking attempts. Also, I don’t like the idea of having to rely on finding a specific add on module when I want to something a bit outside the box… also when newer versions of the CMS are released you end up with problems with unofficial modules.

Can anyone with some experience with using both methods let me know if I should just switch to a CMS. I’m just starting to learn JavaScript and a bit more php so I’m thinking I might be able to have more freedom with a CMS in the future when I can modify them myself.


Unless you really know what you are doing, you might be more open to attacks with your own CMS. A good CMS will have good security features. If you need custom add-ons, you might be better off using a CMS and focusing your energies on creating the plugins (which you could then sell to others).

I’m with ralph.m on the security front. If you design your own CMS as most of us have, you’re on your own to make sure someone doesn’t hack it. If you use something like Drupal, you’ve got 10’s of thousands of people using the same codebase and reporting bugs, security issues and patching it. I’ve used Drupal for close to 5 years and haven’t seen a lot of security bug reports in that time. Mind you, it’s up to you to make sure that you perform updates when your Drupal website emails you to tell you there is an update to the core or modules.

Keep learning and refining your coding but grab a CMS and learn it inside and out too. You won’t regret it. Oh, and have a look at which systems are reporting security issues and maybe stay away from those ones.

Personally, I steer away from CMSs like Drupal, Joomla, Worpress or whatever, but to some extent it depends on how much flexibility you and/or your client want in managing the site’s content.

If you need flexibility to add/delete pages, change layout and styles, edit/delete elements, add/edit/delete all content on each page etc then maybe consider using one of the popular CMSs. But they all have a learning curve and other pros and cons.

But if you need to just be able to upload/update images, add/edit/delete content and change some basic text and element styles then I would definitely build my own to suit. You can always add functionality quite easily to your own CMS if you have a flexible database model.

The securtity issues for a CMS, whether your own or a 3rd party’s, are much the same as for any database driven website.

So to summarise, if you have the skills and option to build your own CMS I would seriously consider weighing up the pros and cons of building your own against using a 3rd party’s and then going with the more feasible option and not just blindly jump to using a 3rd paty CMS.

So this is the way I felt about the subject some 5 years ago before I was dragged kicking and screaming into a Drupal project. I had my own modular CMS that had an XML backbone and I built ports of it to run on ASP.NET, PHP or Classic ASP and it could either be full XML for content and architecture or XML plus whatever database I was working with (usually Access/SQL Server or MySLQ). It had modules for a calendar, news, simple blog, contact form etc…

I thought my CMS was pretty good but then one of my clients demanded that I build them a stupid Drupal site and that project changed my point of view.

It’s not that Drupal back then was so much better than my CMS. It was in many ways but my CMS was simple fast and pretty bullet proof. The big aha moment for me was after I completed the Drupal site when I realized that it was no longer up to me to deal with security fixes or coming up with a new feature that my client would invariably need to have on their site. Oh, you want another Blog? Well here you go… How about an image gallery or a built in intranet with a file manager or maybe you’d like to incorporate a full blown CRM with your site with membership management and online registration and renewals? How about just some eCommerce, maybe a discussion forum? The options are really limitless once you get into a well supported CMS.

Beyond that, the killer feature for me is knowing that if I can’t work on the site because I’m too busy, I can hire another Drupal developer to help out.

This isn’t limited to Drupal. I’m sure the same can be said of WordPress, Joomla, Expression Engine, etc… There is a learning curve to be sure but if you’re going to work with anything in the web world, you’ll have to continuously be on a learning curve.

Good luck!

Like I said:

So to summarise, if you have the skills and option to build your own CMS I would seriously consider weighing up the pros and cons of building your own against using a 3rd party’s and then going with the more feasible option and not just blindly jump to using a 3rd paty CMS

Building my own CMS is not an issue for me if that is the best option for the particular situation.

Another thing to keep in mind regarding using a 3rd party CMS, especially if w3c standards and code efficiency are an issue, is that the code generated by a 3rd party CMS will most likely be very bloated and the chances of it being w3c standards compliant will be about the same as the probability of a snow flake’s survival in hell.

I can’t say for all CMS’s but in the case of Drupal I can say it’s absolutely not an issue. In Drupal all of the markup that is outputted is within the control of the theme template that you create.

You can be as granular with the level of control as you like. In other words you can let the CMS output the various parts of the page the way it thinks is best (usually nested DIV elements) or if you think you have a better idea, you can overwrite every template in the process to your own spec. If you do the job right the only thing that will introduce html errors are people pasting word docs with strange formatting, inserting images without “alt” tags or links with “target” attributes, none of which are really an issue.

ok, but I don’t see the point you are making.

Are you suggesting that usng a 3rd party CMS (Drupal or whatever) will always be the best option for me in every single situation? If so, then that is obviously not true.

I’m not saying no-one should ever use a 3rd party CMS.

What I am saying and I’ll try and say it a bit slower this time :slight_smile:

So to summarise, if you have the skills and option to build your own CMS I would seriously consider weighing up the pros and cons of building your own against using a 3rd party’s and then going with the more feasible option and not just blindly jump to using a 3rd party CMS

Ok, I’ll try and respond more slowly too and I apologize to the OP for straying off topic :slight_smile:

It’s hard to say what’s best for anyone’s needs but I found that once I learned the ins and outs of the CMS I’m using (and I have been studying it for quite some time), I found that it was the method of choice more and more often until I was so well versed with it that I didn’t resort to static or my old CMS any more. At first I only used it for big projects but then I realized that it would work just as well for big or small projects and would allow smaller projects to grow with less growing pains.

Here’s my rational…
I still support two mid to large-sized custom CMS websites. One I built in 2003 the other I inherited and has been evolving since about 2001. The 2003 site is an eCommerce site that gets updated every year with new products, design updates and content. If that site was done with one of the new CMS’ with all of the tools available that make managing these types of updates so much easier, it would cost my client considerably less and free up time for more work.

The other website started out small; a static website and they wanted a members section. Then the members section was extended to allow members to track educational credits from year to year and do some reporting. Then we added exam tracking and work experience reporting. Now it has employment information, firms, variious levels of membership and although I sometimes marvel at how well I put it together (patting myself on the back), I know that it’s just a matter of time before I have to move the whole shooting match over to a full blown CMS and CRM suite because we’re planning more expansion to the site and the foundation it was built on just isn’t up to the task.

Edit: I forgot… I was going to mention that back in the day it wouldn’t have been possible to have all of the fancy pants options that we have today but that doesn’t prevent them from being very good lessons (for me) moving forward.

I really don’t see what you are babbling on about :lol: because I am not trying to change the way you do things.

If using Drupal is the best option for you, then good for you. I don’t have a problem with that :slight_smile:

All I am saying is:

So to summarise, if you have the skills and option to build your own CMS I would seriously consider weighing up the pros and cons of building your own against using a 3rd party’s and then going with the more feasible option and not just blindly jump to using a 3rd party CMS

You seem to be struggling with the fact that using a 3rd party CMS is not always the best option for me. If that’s the case, tuff :rolleyes:. Suck it up and find a way to deal with it :wink:

That’s a bit mean. Andrew has provided a very compelling and thoughtful rationale for using a 3rd party CMS even if you are able to code your own. You may not want to hear it, but that doesn’t mean it’s not worth saying.

Off Topic:

I don’t think I am being mean at all. Like I said, he seems to be struggling with the fact that using a 3rd party CMS is not always the best option for me. To me, the tone of his posts suggests he is trying to impose his views on at least me and possibly everyone else.

I couldn’t care less whether he or anyone else uses a 3rd party CMS or not.

All I said, and I say it again, is

So to summarise, if you have the skills and option to build your own CMS I would seriously consider weighing up the pros and cons of building your own against using a 3rd party’s and then going with the more feasible option and not just blindly jump to using a 3rd party CMS

If his views were not directly aimed at at least me, and were meant to be of a general nature, then I should not have been quoted in his original reply to my first post.

Have you ever managed several separate Drupal sites with 200+ modules? Not only that but there are so many people working on different things at different skill levels that just about all them are out of sync from the db snapshot to files that are suppose to be version controlled? I can tell you this… it is not fun. In addition, you have people who have no f**kin clue what they are doing installing modules and even asking for “slight” changes to these modules. Yeah… Drupal is pretty powerful but man can it be nightmare to manage if people who do not understand the ramifications of certain actions start doing things other than creating content.

Not to mention I can easily say that following code in Drupal is god damn night mare due to hooks. Very flexible but what a headache in regards to debugging code. Than you have to deal with all the little caveats like how caching works, what gets cached when and the different way module developers implement similar concepts in different manors. It really is a pain unless you are lucky enough to be able to push out sites and never see them again and lock down everything besides creating content for average users. On top of all this you have to put up with trash that Views, Panels, Fields, Webforms, ect churn out for HTML. In addition, people who developed Drupal and those that develop modules have no f**kin idea what error handling is. Everyone always just assumes things will work and when they don’t it just about impossible to figure out why.

There are plenty of disadvantages of Drupal. I’m sure most custom frameworks out there are about 100 times easier to manage than a medium to large Drupal site that has it’s share of modules and people of different skill levels working on different things. Powerful yes, but a nightmare to maintain. It works great until something breaks… that just about sums up Drupal. Though to build anything as powerful and flexible as Drupa w/ popular modules would probably take years. So it is a trade-off. One very little skill level can accomplish a lot without writing any code given the correct collection of modules. I have a love/hate relationship with it myself for all the reasons I mentioned. Even so I’m building my portfolio site with 7 as we speak. Though I can see already that there is going to be quit a it of work involved in cleaning up the HTML… but it is a trade-off. I do have a CMF of my own but I would be ignorant to say it is anywhere near as powerful or stable as Drupal w/ Views, Fields, WebForm, features, etc.

There is always the other option of using a Framework rather a CMS. Perhaps take a look at Symfony 2. In my opinion it is the best PHP framework that exists at this time. However, would I use it for my own little portfolio site – hell no. However, if I were developing a medium – large scale web application with a moderate budget I would absolutely use Symfony 2.

One thing you always have to understand is that many open source projects at this point have had years and years of work put into them. If you have ever used Drupal 5 or Symfony 1 you would see that man… do these things come a long way. Depending on what the requirements of a project is it *probably isn’t worth reinventing the wheel. Besides unless you have a 50K+ budget to play with it normally is pretty impractical to start from the gruond up without at least using a framework. Even when you talk about a Framework that is probably around a 20K+ budget starting considering everything still have to be prgrammed and designs from an admin to front-end. Most people tend to stick between 5K – 10K which is generally cause for some type of CMS considering *most of the hard code programming is complete and an admin system exists. Than you have your under 5K budget which is generally WP…

Yeah, you obviously thought I was responding to you… I wasn’t. I was responding to the OP based on the points that you brought up.

Off Topic:

if you say so, but I’m not convinced.

perhaps you might like to reply to oddz’s appraisal of Drupal if your views were not directed at mainly me :slight_smile: :stir:

Hi oddz,
Yup I have unfortunately worked on something similar to that recently. One massive multilingual site that had been hacked and messed about from D5 to D6. The site database dump alone was over a 100MB, 1400 pages of content, 2 languages and over 100 modules. I stripped it down to about 60 modules, re-organized the navigation and content and then re-launched it. It was particularly tedious because I pulled a copy to another server to do the updates and once we were done the site was about 3Gigs with all of the images and documents. The database was the biggest issue. I was working from Vancouver and the server is about 3000K from me so I had to move a several tables at a time so as not to bog things down. In retrospect, I should have SSH’ed in and used drush or the shell to do it but that’s a lesson learned.

Further to what you’re going through, I think a lot of the trouble is with project management rather than the CMS. People who don’t have a f**kin clue about what they are doing shouldn’t be doing anything remotely close to module installation or configuration. I usually set up several ROLES for the people working and remove access from config, views, taxonomy, blocks, etc. from those who don’t need them.

I also know all about “slight change” are requests. They usually aren’t slight and it’s always been a problem because you don’t want to say no to the client… The only way I can deal with that is by letting them know it can be done but it’s not part of the scope so we’ll get this part done and then we’ll make that a phase II project. It works about 50% of the time :rolleyes:

Versioning is a bit of a pain unless you use SVN or something similar but as I’ve been told time and time again, it’s a good idea to have a dedicated versioning system when doing any team project. We have a loosley held together versioning system but it’s flawed so I’m looking at improving that.

As far as caching goes we run our sites uncached until they’re ready to go live. That way you don’t pull your hair out trying to figure out why that latest stylesheet change isn’t showing up. I also clear the cache and theme registry whenever I make a change to my theme templates or template.php. Once the site goes live, if it needs additional caching I’ll use the boost module. It seems pretty good at taking the load of the server and I’m using it on that monster site I mentioned earlier.

Well the system is about 3 years old that I’m referring to running about 13 separate deployments and I work in house for a large media company. So even if I have say in the matter these issues still exist from past times. The problem was that the system was developed for a single site. It was than suppose to deployed to separately for similar business purposes. However, along the way each time the system was deployed for a separate business unit major changes took place to satisfy the goals of a single business unit. So rather than saying no much of the time people said yes to what are some of the dumbest of things and that brought use to the mess that we have today. Fortunately I spend a considerable amount of time working on other projects unrelated or semi related to Drupal in regards to pulling data out of the db or something. None the less, when assigned a Drupal project working on a bug or feature enhancement I know it will be a long week…

Though up until 7 I really don’t think Drupal was all that powerful by itself. Even with 7 there are other modules that really make it one of the most powerful solutions that exist. Drupal would be completely worthless without modules such as; Fields, Views, Panels, Features, Webform, Embedded Media Fields, etc. Those projects and a few others really are responsible to the mass popularity it has gained in the development, design, and business community. When views, panels, features and media fields are integrated into the core it will be one damn powerful system to build things with little programming.

Wow… Yeah, that sounds like someone should have made a decision about using Multisite, Domain Access or maybe Organic Groups to manage it a long time ago. I’ve never done a production Multisite installation. I’ve played around with it and I’ve tried out Domain Access too which is pretty cool once you’ve sorted out the configuration. The mini-sites I’ve built for production have either been based on Taxonomy, Organic Groups or a combination of the two.

Without knowing anything more about it, it sounds like all deployments are on the same domain. If it were me, I’d be looking at Domain Access where you can run different sub-sites on separate sub-domains or I’d look at Organic Groups. It’s not going to stop the high count of modules you have to deal with though and module bloat is a killer for performance. I think the only way to really deal with module bloat would be a real multisite installation where every site would have its own site modules.

I agree 100% about the modules that make Drupal rock! I think I’ve only done two sites without views. One I can remember clear as day but I don’t recall the other, I just remember reviewing it once it was done thinking “wow, I didn’t use views on this one”. My top modules are Views, IMCE, WYSIWYG, Pathauto, Global Redirect, Entity, WebForm and of course Date/Calendar modules. Views is my go-to module. With views alone, you don’t need FAQ, Sitemap or other display type modules because you can make your own.

Sorry to Banana Man, I kind of went a little astray talking about challenges with various larger CMS issues but it’s still somewhat on topic.


I don’t think you need to apologize for anything. This has been a really interesting thread, and a very useful set of insights to help with the original question. :slight_smile:

Cool… I tend to run with things once I get going on a roll.