Pre-built Or Custom?

Matthew Magain has an interesting story of a competition between two teams, one using an existing CMS and the other doing development from scratch for a web site.

The Aussie team chose to use a pre-built, open source CMS (Drupal) while the CodeBlacks (Team New Zealand) chose to build their site from scratch.

The CodeBlacks won.

I am a Drupal fan, I think it is one of the most flexible CMSs around. However, there is no one-size-fits-all solution. The CMS has to work in context of the project’s requirements and needs. Otherwise we might experience what is called a boxed CMS. In such a case, the CMS features turn against you.

The best way to avoid this is to postpone selection of a CMS. Do the content design, the information architecture and possibly process design and then decide whether to use a CMS or not. In fact today we have a range of RAD frameworks that come close to a CMS. But I will always see if a pre-built CMS can provide a solution, especially because all projects have implicit requirements or want to follow industry standards which are already implemented by them. If not I will look at using frameworks, which themselves have wide variety, from the likes of Ruby On Rails or Django or CodeIgniter to the barebone ones like web.py.

Whether we need to develop completely from scratch can be determined by analyzing if the requirements are completely different from what we have seen till today. Then it might be worthwhile to decide head-on to go with custom development. Of course this requires more than just technical skills, this requires experience and knowledge across various CMSs.

Finally, there are pros and cons with every approach. The team skill comes into play to leverage the pros and nullify the cons. When you use third party tools, you create dependencies on them. If the dependencies work against you it can break the project. Whereas custom development can take a lot more time, which can be expensive if you end up reinventing the wheel.

I think in this case, the deadline was in a day. Though it gives us some interesting facts, I do not think it can represent majority of the software projects that go on, it is more of an experiment. I would have chosen a pre-built CMS using which you can quickly build prototypes, like WordPress or CMS Made Simple for PHP to develop a site in a day.

Discussion [Participate or Link]

  1. David McDonald said:

    Thanks for your thoughts, Abhijit. I agree with your thoughts on boxed CMS’s.

    I was the front-end XHTML/CSS person on the Aussie Full Code team. I have left a detailed comment on the Sitepoint Blog, but basically your thoughts echo my own in this case. There were certainly issues with dependencies which ended up working against us.

    WordPress was certainly on our list, but we went with Drupal becuase of some of it’s core functionality.

  2. Abhijit Nadgouda said:

    David, thanks for your comment. This is more valuable than the post itself 🙂

    And there is no way we sitting outside can judge what went inside the project. The best we can do is to use the post-event wisdom to build into our experience.

  3. Mike Rundle said:

    Over at 9rules we’ve used taken the middle route — we use open source mini-CMS platforms like WordPress and bbPress (like WP but for forums) and then extended the functionality in some areas, but then have also not used their functionality in other areas. Basically we looked at the code, took the best parts (bbPress user management is my favorite) and then used what we needed to build what we wanted to build. Our codebase is probably 70% custom code, but the 30% on the other end was extremely helpful. Maybe the same could be thought of for larger projects — instead of picking a monstrous CMS and trying to use everything, just use the pieces that are valuable (or cost-effective for your team not to code from scratch) and then leverage that codebase to build bigger parts of the app.

  4. Abhijit Nadgouda said:

    Thanks Mike! I agree with you, in fact, most of the times we end up using a CMS mostly as a library and add our code onto it. WordPress is popular because you can easily do away with the part that you do not want, effectively reducing the dependency.

  5. Angelo said:

    I think ultimately, web frameworks like Django & Rails are the next logical step of progression from the CMS we’re used to (WP, Drupal, etc). I can’t speak for Rails, but one of the things that I love most about Django is that it is a decoupled framework, meaning you can use the database layer, or not. the template engine, or not.

    This makes it possible to own 100% of the provided functionality, and focus efforts on extending models, functionality & custom site structure.

    I’m beginning a front-end framework project of my own, and I’ve been thinking about how current framework have decoupled themselves in the process.

  6. Abhijit Nadgouda said:

    Yes, frameworks are providing more and more everyday. However, they are still not native residents of content management domain. Meaning, there are still many more facilities like managing content life-cycles, versioning, workflow, document management and even a content framework are not popular with frameworks. They are still web frameworks.

    Having said that I agree with you that in future we can look forward to frameworks incorporating this.

Say your thought!

If you want to use HTML you can use these tags: <a>, <em>, <strong>, <abbr>, <code>, <blockquote>. Closing the tags will be appreciated as this site uses valid XHTML.



Abhijit Nadgouda
iface Consulting
+91 9819820312
My bookmarks


This is the weblog of Abhijit Nadgouda where he writes down his thoughts on software development and related topics. You are invited to subscribe to the feed to stay updated or check out more subscription options. Or you can choose to browse by one of the topics.