Do I need a CMS or should I build from scratch?


4

I am working on my first web application, and can't figure out whether I should use a CMS like Joomla or Wordpress, or have the site built from scratch. For some background, the site will be sort of a smorgasboard of features in a healthcare related industry, with a directory attached. I don't want to ever be limited by what i can do as far as design, or development, and have many more features planned, but nothing technologically ground-breaking by any means.

I am interested in a CMS because I understand that building certain parts, (logins, registrations) things like that, go much quicker. However, aren't there sort of "out of the box" scripts for things like this that can be used even if I build from scratch with PHP? I am also interested in a CMS because from what I've read it seems that it will be easier to bring on new developers and have them know what everything does and understand the code, but aren't there ways I could build from scratch and just maintain a clean code base that is well commented and not run in to the problem of confusion from future developers?

Ideally, I would like to build from scratch, I just want to make sure I am not losing the 2 benefits of having out of the box solutions for quick building, and an easily maintainable and scalable code base. Any advice on which I should use?

EDIT: I am fairly technologically savvy, have a strong grasp of html/css/javascript and ftp

Development

asked Nov 14 '12 at 05:53
Blank
Jdh
182 points
  • I agree completely with the answer below. The only thing I'd add is that if you succeed - meaning you find product/market fit, which is a lot harder than building the product - then you will have to refactor the whole thing at one point anyway. – Mihaly Borbely 12 years ago
  • so I wouldn't worry too much about what CMS/framework I choose. Just keep it simple, build it fast, and don't worry about the future (yet). And then cross your fingers and hope that people will want it. If they do, it won't matter how badly built it is, you'll succeed. And you'll rebuild the whole thing. Otherwise, at least you didn't waste too much time optimizing for stuff that never happened. – Mihaly Borbely 12 years ago
  • Thanks, that's actually where I'm at right now. Doing it cheap and dirty with freelancers, but it works. I have found a fit, and am at the point where I rebuild it now – Jdh 12 years ago

4 Answers


7

I would suggest you look into learning a framework.

There is a 'scale' between starting from scratch and building on-top of an existing application and each end of the scale has it's pros and cons.

Building from scratch

  • Alot of things to consider (routing, security, organization, error handling, authentication, templating, etc).
  • Ultimate control and understanding over the way your app works.
  • May be restricting in terms of expansion. Nobody else out there will be familiar with your code, just the concepts it's built upon.
Adapting a CMS/other software to do your bidding
  • There may be a slightly higher learning curve for you to begin with. You need to learn how it works to expand it.
  • Some things may not be possible depending on the way the application is built.
  • It's easier to look for others that are familiar with the base software to join you, should you need to expand.
And the sweet spot/where my recommendation lies - a framework
  • Frameworks take care of a lot of the aforementioned complexities that come with building your own app.
  • Popular frameworks will be more thoroughly tested than something you could ever produce yourself.
  • Frameworks abstract away the time consuming complexities and allow you to be the most productive in building the app in question.

For popular PHP frameworks, see Symfony, CodeIgniter, Zend, CakePHP, Laravel, FuelPHP and Yii.

answered Nov 14 '12 at 06:16
Blank
Anonymous
557 points
  • I very much appreciate your answer. I've also been looking at frameworks. Which one has the largest userbase, most documentation etc. – Jdh 12 years ago
  • I agree with using a web framework, I would never start a web application using a CMS, it will be too restrictive long term. As for which framework, I like Ruby on Rails but it's really just a personal preference. – Joel Friedlaender 12 years ago
  • Some adds to PHP frameworks: consider laravel.com and fuelphp.com – Jim Galley 12 years ago
  • @jimg - Added to my answer, as well as the Yii framework. – Anonymous 12 years ago
  • Have a look at Drupal. It's somewhat between a CMS and a Framework. More complex that standard CMSs like WordPress and Joomla. Less complex than a full stack framework. Drupal is basically a Content Management Framework (CMF). If you're building a directory-based website, take a look a Content Types in Drupal, they might be all you need. Cheers. – Mario Awad 12 years ago

1

Alternative view: Beyond devolving into a CMS vs Framework vs Language choice, I would offer the following views:

  1. Execution/launch trumps theory
  2. Premature optimization is the root of all evil
You mention that this is your first web application, you are tech savvy, and that your solution is a "smorgasbord of features" combined with a directory.

This sounds more like a market validation effort than an architecture effort (nothing wrong with that, btw). Since CMS'es - Joomla / Drupal et al. - all have mature directory components, why not just put together a sprint project and see if you can deliver the desired functionality with that? Then show it to your intended customer base and get their feedback.

Worrying about "easily maintainable and scalable code base" is premature at this point - getting something in front of a prospective customer for validation is more important.

I can also argue about frameworks vs CMS vs Languages - but getting business traction and then revisiting the technical decision when you have specific (vs smorgasbord) requirements will be an easier task.

Good luck with your effort.

answered Nov 16 '12 at 03:19
Blank
Jim Galley
9,952 points

0

I would take a look at something Like ExpressionEngine.

It's a CMS, without being a 'website manager'. This means that instead of 'pages and posts' you can create custom datatypes. You can then create custom entry forms for each (eg image, file, bool, ...) and do manipulations (eg create thumbnail). This means you can have a completely different data model for 'authors' and 'book'. And just bring them together in a single view. Real separation of content and layout.

ExpressionEngine is built on top of CodeIgniter framework so you can simple write new parts when (if) you need them using all the framework functionality (eg the login modules etc).

Downside is, it's not free. But definitely check it out and see if it fits your datastructure.
http://expressionengine.com/ To get a glimpse at how the development proces works, this is a good beginner example:
http://www.train-ee.com/courseware/free-tutorials/category/building-a-portfolio-site

answered Nov 15 '12 at 21:35
Blank
Maikel
18 points

0

You can approach this issue in a number of ways. Most importantly, you need to look at costs. Always remember, you can have something 1) fast, 2) cheap or 3) correctly done, now pick 2.

If you want something fast and cheap, a CMS is great, but it might not be correct for your businesses.

If you want something fast and correctly done, a custom solution might be your answer, but it won't be cheap

If you want something cheap and correctly done, it will take time.

etc.

If you have a clear vision of what you want this to do, then I would always suggest a solution that involves customization. A framework is nice, but has it's own set of rules and restrictions, to a point. The most flexible solution is one that is built from the ground up.

IMHO, if I was looking at this solution, I would look at several things:

  1. How much money do I have? If you don't have much money, a CMS is great. If you're willing and able to do the work yourself, a framework will give you more of a base, but you'll need to spend time/money to get it working.
  2. How soon do I want this to be in operation? If you want something quickly, CMS will be fastest. Most hosting companies can get one running in a matter of minutes, and you can customise and start going very quickly. A framework (PHP based) will be easier to host that something else (Ruby/Rails, Java/Spring) but will not be nearly as secure or as fast.
  3. What are my top requirements?

    • Security Don't use PHP, and keep in mind any pre-built software will have more common vulnerabilities than any custom software. CMS platforms, especially open source, all share vulnerabilities (since the source is published). A framework will have some common vulnerabilities, and the custom built solution will only have the issues you write into it. The nice part is, the more you get away from a set of pre-built published code, the less likely standard issues will be there (as long as you have a reasonable knowledge of what you're doing).
    • Speed Don't use PHP, it is the slowest language out there right now. Also keep in mind any pre-built software will have to be more flexible and support more use cases, so speed typically will be slower. The more you have that is pre-built and generic (for all consumers of the software) the slower your load times will be. As a side note, do remember that Google does care about load time when considering page rank.
    • Rapid launch Pre-built is the way to go, the more custom something is, the longer it takes to build.
    • Cost Pre-built is the cheapest, then frameworks then custom. PHP is the cheapest language (hosting and writing), Java will be most expensive.
    • Other User/Business requirements This covers everything from login, to edit, to image management. Basically, what are the business rules you care about most? Does the CMS offer all of the things you need/require? If not, analyse the cost of adding those now, versus the cost of waiting to add them upfront.
Personally, most of my contract work related to development is because a system written in a slow, insecure language (typically PHP) needs to be faster, more flexible and more secure. The problem is, those solutions are more expensive to both build and host. If you can do it yourself, just run some analysis on the business vs the options, or talk to a friend/contractor Business Analyst. The point of the BA job is to understand what you need, and evaluate options for you. Without more information on what you're doing, that's about all I can help with.

Hope this helps, do let me know if this is unclear.

answered Nov 16 '12 at 01:06
Blank
Madd Hacker
493 points
  • I think any statement that technology x is insecure/slow/outdated is simply troll bait: PHP is used by a large number of individuals, open source projects, and commercial entities. I've done commercial PHP, Java and ROR projects - so I have no axe to grind: all are tools that can achieve objectives. Each have their own shortcomings (and workarounds). – Jim Galley 12 years ago
  • @jimg - I'm not indicting PHP of anything. All I'm simply stating is that PHP is a slower, and less secure language, all of which have been proven/benchmarked. Any interpreted language (Ruby/PHP) will be slower than a compiled one (C/C++) or even a compiled (then interpreted) language like Java. I tried to note any personal opinions or information clearly. I have worked with PHP systems, and have moved away from them as technology has grown. Simply stating that if speed is a primary concern, PHP is not a great solution is nothing but fact, there are faster solutions out there. – Madd Hacker 12 years ago

Your Answer

  • Bold
  • Italic
  • • Bullets
  • 1. Numbers
  • Quote
Not the answer you're looking for? Ask your own question or browse other questions in these topics:

Development