I have started lately discovering Content Management Systems, and I was wondering, who is really CMS for?

What I mean by that: is it only for companies, small businesses or individuals, that pays a contractor to make a website that it's users can just upload content through a easy interface.

Or is it used also by programmers, to build their own websites, projects? Would a Facebook, Tweeter, StackExhange ever started by using a CMS, a very powerful one for example.

Would you as a programmer build your own "fancy" website on top of a CMS, for example like Typo3, or you would build it from scratch?

P.S
To be more clear is a summary:

What I mean to begin with is, would I as a developer choose a CMS to develop a website that can be scaled with a big base of users, be stuck if I choose to start with a CMS system. What if I build a website using CMS, and the website explodes in popularity, and then I wanted to add much more functionality that I have planed, is it possible that the CMS will limit the growth, because it might have not been build for that kind of scale?

I don't know what that means. "Kool" is not a testable requirement. You'll have to look at the docs for Typo3, and see what they recommend as appropriate uses. Looking at typo3.org/about, it appears that Typo3 is suitable for large and small enterprises (i.e. companies), but maybe not so much for individual websites.
–
Robert HarveyJun 26 '12 at 19:12

2

The technology you choose to use to develop a site has almost zero correlation to its popularity. It won't be "kool" just because you use Typo3. It might be kool if you leverage the features of Typo3 to implement a unified vision and strategy for assuring the site's popularity. (how's that for a mission statement?)
–
Robert HarveyJun 26 '12 at 19:18

1

@RobertHarvey It seems the word kool might not have been the write one. What I mean to begin with is, would I as a developer choose a CMS to develop a website that can be scaled with a big base of users, be stuck if I choose to start with a CMS system. What if I build a website using CMS, and the website explodes in popularity, and then I wanted to add much more functionality that I have planed, is it possible that the CMS will limit the growth, because it might have not been build for that kind of scale?
–
Eirc manJun 26 '12 at 19:22

1

It's possible. The folks at Typo3 know better than I how well their system will scale.
–
Robert HarveyJun 26 '12 at 19:23

6 Answers
6

A CMS is useful for anyone who needs to create content and put it online. In some cases, this could probably be done by simple HTML pages (some people like to use a CMS because it's "enterprisey" even when they don't need it), but a CMS is can also be used for content that changes frequently and is touched by multiple users.

A CMS can have a system of who can edit which item of content, it can set up a content review workflow, it can dynamically reference the same content item in more than one place, it can be extended with plugins for custom functionality,... A good CMS is useful to anyone who needs this level of functionality, whether or not they are programmer.

I agree, and I think that programmers can take advantage of what it has a lot more than the normal user. Wordpress specifically I have worked with and it can become something very useful and take on a look that no longer replicated the standard wordpress/cms look. I prefer this is many instances only because you are focusing on creating content and design, but not the entire management system.
–
kwelchJun 26 '12 at 21:20

As programmers, we are probably more aware of the security risks inherent in any complex web application. So there is a whole class of "static site generators" if you want to avoid these problems: you write some code on your development machine, compile it into html (with all the navigation, css and js being added automatically) and the simply upload the static stuff.

I wouldn't say that a CMS is only useful for non-programmers.
Just the fact that I'm getting paid for writing code does not mean that I have to (or want to!) code every small website from scratch by myself.

If I just want the damn thing to work, without putting too much time and effort in other things than the actual content, then I use a CMS or a blog engine..
For example, I have a blog that is running on WordPress. If it ever gets as much traffic as Stack Exchange (which is VERY unlikely), then I'll probably have scalability problems and maybe I'll need to switch to something else.
But until then, it's just fine for my needs. I just log in, type some text, click "Publish" and I'm done
--> more time to slack off on Stack Exchange :-)

On the other hand...a CMS is basically a tool to build websites with content (or blogs, if you use a blog engine).
That's not what a site like Stack Exchange is. Stack Exchange is more of a web application...you can't easily do something like this with a CMS.
So if you want to create something like Stack Exchange, you have to do it from scratch because there is no ready-made platform that you can use.

Hey thank you for the feedback. I know some good CMS out there that claim also to be for Enterprise, but my biggest doubt is how, that would for example affect the future growth of a website. I guess if I start something from scratch, is more modular, and it does not have the limitation of a CMS not mater how great it can be. Do you think that is correct, even if the website is not meant to be Stackexhange, but still became a big website.
–
Eirc manJun 27 '12 at 14:12

A Content Management System is going to help anyone, programmer or otherwise, manage the content of their website. This can mean much more than HTML files--got images? Easier to organize in a CMS. Got music files you want to stream? Easier to manage in a CMS. Large files for downloads? PDFs? Reports? The CMS gives you a framework for organizing and accessing all of these.

A CMS actually makes scaling easier. Suppose you go old-school and store con your content on your server's file system. What happens when you move to a cluster--which server is your content on? Any decent CMS can be clustered and load balanced, making your life easier.

So if for example, one person would like to make an educational website, with maybe interactive applications, and future growth, is it possible the limitation of a CMS stand in its growth? Is a CMS suited for web sites with million of users for example?
–
Eirc manJun 27 '12 at 14:06

1

I know the company I work for uses a CMS for the web site which services millions of customers. It depends on the CMS implementation, though. If it's crap, it's crap. If you think you're going to need to scale, do some research and find the CMS that best suits your scalability requirements.
–
Matthew FlynnJun 27 '12 at 14:53

I assume you are talking about CMS as combined with Web Content Management (WCM). The generic CMS can be all sorts of other things as well.

The important thing to realize is that there are (at least) two main types of CMS engines:

CMS as a framework in which you write components. This is mostly for creating websites and then programmers write individual display components, reporting elements, extension workflow steps, etc. But the content and the layout is the king.

CMS as a bolted-on engine to make storing and presenting textual content easy. This is a case when you have a custom application, but maybe you also have a built-in help system, which you don't want to reinvent from scratch. Or maybe some sort of forum component. This is much more about the programmer then and CMS functions are just a plugin.

There are systems for both of those approaches. You can often tell by reading the installation instructions. If the full system runs out of the box, that's usually a first type (user-oriented). If, instead, it talks about easy way to register which modules you want to show up and on what URLs, etc - it is a bolt-on programmer-oriented system.

My take on specific examples from C# world would be Kentico for the framework approach and Orchard for bolted-on approach.

CMSes are used by the employees of the committent, who hardly ever get to say a word in the design process, sometimes are a step away from complete computer illiteracy, and almost never get proper training on how to use it.

Some programmers know this and jump trough hoops to make things work for everybody involved anyway, some don't know or don't care, and just drop in a canned solution, skin it up a little, and run away as fast as possible.