Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

A lot of my research over the next few weeks will be into different CMS's. I've already had a brief look at episerver and umbraco. While reading into these systems I can't help but think that providing content management features are achievable without learning the details and structure of many of these (rather large) CMS platforms.

I have, in the past, been given projects whereby my role as a developer must be kept separate to that of an editor (makes sense). i.e. It was my task to develop the design and functionality of the site and my clients' job to update the content. I've achieved this by also implementing a sort of 'portal' on which there were a couple of pages that would accept text input and picture uploads etc. (basically, whatever content they wanted), record this new content to the database and then by design the code-behind would read all this from the database into relevant controls (repeaters for example).

For me, this has been an effective enough way of my clients managing the content to deploy with my solutions. I know that I am wrong - and that CMS's are preferable to those that are built from the ground up - but other than the matter of cost, why?

share|improve this question

migrated from stackoverflow.com Mar 16 '12 at 3:51

This question came from our site for professional and enthusiast programmers.

1  
Why would you want to go through all the pain of development (design, coding, debugging, testing) yourself when someone else has already done all that for you? –  PhilPursglove Mar 13 '12 at 15:24
4  
There's document upon document and website upon website of instructions and tutorials of how to go about learning these kind of corporate CMS's. Why would I want to go through all of the pain of learning and getting used to implementing these when in fact I could be developing my own from the ground-up with complete control? –  SkonJeet Mar 13 '12 at 15:28
1  
The biggest reason you go through the pain of learning is because you're also skipping the pain of troubleshooting (hopefully anyway). And if you're finding documentation, hopefully that also means when you have to train someone there is that much less documentation you have to make. –  sparks Mar 13 '12 at 15:47
    
There is newer technology from the old CMS install approach where you don't have to learn really anything and can program in your own language. I built one myself because I got sick of this installation problem or using some cushy cms thing that works for designers. My profile has a bit of how to go about it. –  Jason Sebring Mar 14 '12 at 1:14
add comment

6 Answers

up vote 9 down vote accepted

You use an existing CMS to get rid of the weight of features that are probably important to the users that you don't want to have to keep track of.

EPiServer, Umbraco, Orchard, etc all have built in options for keeping track of things like versions, what content is linked to by other content, how to build forms, etc. And beyond that they have events which you can hook to modify them as you see fit.

They typically have thousands of hours of troubleshooting already done, so why not take advantage of those. Especially in the free or open source versions where it literally costs you nothing but the time learning their APIs which I can nearly guarantee is less time than you'd spend recreating that functionality.

So unless you don't need to rebuild the functionality they provide, why not use something already known to work well?

Here is just a brief list of features existing that you would not have to implement on your own:

  • content versioning
  • workflow
  • page link status reports
  • wysiwyg editor customization
  • content modeling (page types / document types)
  • content retrieval APIs
  • documentation / training for both editors and developers
  • object caching strategies
  • content querying systems for searching
  • content hierarchy structures (in CMS's where content is in a tree form anyway)
  • editor views
  • admin views
  • access control
share|improve this answer
    
I've marked this as the answer as it's the most comprehensive list of benefits that I would get from opting for one of the mentioned CMS's. I think it's probably going to take me getting my hands dirty with them to fully appreciate the benefits though. –  SkonJeet Mar 13 '12 at 15:46
    
Setting up your own system is only "status quo" over cloud systems if you don't value control over your own data, owning your servers, or don't understand the distinction between software you own and software you rent. These stealth advertisements for your business sound very FUDdy to me. If you genuinely think a cloud-based SOS CMS is a good choice for the OP's situation, then make it an answer and let the community vote on it. –  CodexArcanum Mar 16 '12 at 6:00
    
@CodexArcanum - Don't take anything emeraldcode says seriously. They are the CEO for a company that provides those services. So basically their account is one giant ad. –  Ramhound Mar 23 '12 at 12:00
add comment

One thing needed to be factored is that your CMS may become obsolete, not necessarily in language, but rather functionality and design. The next group of programmers may not want to work with those constraints in functionality and as far as design it may ruin their image!

If its a simple website, or you haven't much time to dedicate, CMS sounds great!

share|improve this answer
add comment

The number one reason for creating your own CMS is to be able to add your own functionality to it over time. With an off-the-shelf CMS you are tied to the architecture and technology of the third party who created it.

Examples:

  • Umbraco - reliance on XSLT for layout - #fail

  • Orchard - over-engineered and learning curve for Web Forms devs

...etc.

share|improve this answer
1  
Umbraco does not require XSLT, but it is an option. –  sparks Mar 13 '12 at 15:31
    
You mean you can use CSS exclusively? Was it Umbraco that also had its own proprietary markup language? Like SkonJeet, I also had to research this at one stage. –  IrishChieftain Mar 13 '12 at 15:38
2  
Umbraco has a webforms and an mvc option. It have never required you to use its own proprietary language. You've always been in asp.net and always had the option of querying their data store and writing controls for it if you wanted. –  sparks Mar 13 '12 at 15:40
1  
Another CMS I used was N2, which had really elegant code, so much so that you couldn't understand it. Their view was that code should document itself which is a total Bee Ess. –  IrishChieftain Mar 13 '12 at 15:40
1  
I've done multiple websites in Umbraco, and have never used XSLT. In the new version its not even a built-in option anymore as far as I know. However, XSLT is apparently extremely powerful (for the 6 people that can understand it!). –  E.J. Brennan Mar 13 '12 at 15:50
show 7 more comments

There's NO definitive answer as to which ones better. It depends on your needs, structure, cost, man power, and any number of other factors.

Pre-made/established CMS

Pros

  1. Saves A LOT of time. Some of the CMS' that have been around for years have lots and lots of man hours into them. You may not need 10% of the features in a pre-made CMS, but regardless it saves time and time is not free!
  2. Saves A LOT of money.
  3. Generally have a HUGE amount of features that will probably work for your needs.

Cons

  1. License. You need to abide by the license of the pre-made CMS you use. This may not be a big deal, but maybe you want to change something prohibited by the license, or maybe you'll be prohibited from using it in a production environment.
  2. Heavy. Since the CMS will most likely be tailored to reach as many audiences as possible. Maybe you have a server limitation or don't want to load excess scripts for basic content management.
  3. Possibly written in a non-modular fashion. Lets say you implemented a pre-made CMS and the website is done ready for the client to sign off and say let's deploy! Then you shoot it over to your client and they say "Oh, I want to add this feature to the CMS!" Then, if you chose a CMS that is very complex or not very modular you may have a problem implementing their feature request or it may take an excessive amount of time.
  4. Inherit their bugs. You will inherit all existing bugs on the CMS. It's not a problem since they're usually easy to update, but what if you heavily modified parts of it to add a feature?

Home-brewed/custom CMS

Pros

  1. Tailored to your needs. You will be able to integrate ONLY what you need and retain high portability.
  2. Written in your language. Maybe you have an ASP.net MVC website and all the CMS' out there are written in PHP, but you want one that is written in C# using MVC and the razor view engine (idk random example). It's much easier to maintain a web page that is uniform and doesn't have a huge PHP/JS/etc. CMS in the midst of all the C# code.
  3. Yours you/your company own it 100%, you can use it in as many applications as you want w/o buying additional licenses, etc.

Cons

  1. Time-consuming, therefore it's expensive. You could spend any amount of time 1-Dozens of days working on a CMS depending on hours put in, experience, etc, etc.

If you have the time, and none of the pre-made systems fit the bill or are way too complex i see no reason not to build your own, other than the time-consuming factor of course.

share|improve this answer
2  
When you remove time and money as constraints, there is rarely any reason not to do something. –  sparks Mar 13 '12 at 15:42
1  
@sparks real world projects ALWAYS have those constraints ;) –  bbedward Mar 13 '12 at 15:48
1  
Sort of what I was saying with my comment. Saying cons of "time consuming" kind of sugar coats the amount of work involved in writing from scratch. You write the code, then have to document/train, and have all of the debugging/troubleshooting time for every single feature you write. –  sparks Mar 13 '12 at 16:00
add comment

You might want to add web security to the discussion too. If you build a CMS from scratch, chances are you will have vulnerabilities to a number of attacks (see e.g. https://www.owasp.org/index.php/Top_10_2010-Main). If you on the other hand use an existing CMS, it will generally be more secure, but on the other hand its vulnerabilities will be more widespread.

So it's a bit of a tradeoff securitywise, but I would argue that a well-updated "standard" CMS is more secure than a home-made one, but it to some extent depends which of the standard ones you choose.

However, if you use a "standard" CMS and do a lot of modifications, you might break the upgrade path and end up with not being able to update your CMS and thus you are vulnerable.

share|improve this answer
    
Thanks Magnus, very good point. –  SkonJeet Mar 15 '12 at 14:09
add comment

Stick to core business is a pretty good argument as well I would say. Just because you are building a car doesn't mean you should also create your own fuel as well. That's a completely different product and chances are pretty good that someone else will do it a lot better since your focus will be elsewhere. Bugs in newly developed systems shouldn't be underestimated either. A cms that have been around a while will have a few bugs yes, but no where near the number that your new one will have. An existing cms have been tested by millions of users through the years.

share|improve this answer
    
"your focus will be elsewhere" - lol –  Tim Abell Mar 29 '12 at 14:44
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.