views:

985

answers:

9

WHY?! ... Maybe that's your first thought when reading the headline of this topic.

There's a variety of open source CMS' out there to suit everyone's needs. And I guess you're right... in fact I very much agree.

But this topic is for naive and stubborn programmers like myself who really like the idea of developing their own CMS from scratch. But where do I start and what should be my main focus points in the planning of this CMS?

Are there any good tutorials, articles, books etc. out there on developing your own CMS from scratch?

If not maybe some of you have tried to develop your own CMS... if so please share good and bad experiences.

Thanks in advance

+8  A: 

If you don't have answers to those questions already you're probably starting with the wrong project type. A CMS, even a basic one, can be a very complex beast, here's a few things that you need to take into account:

  • How will your database look
  • How flexible will you allow the user to be on page info (ie, how customisable are the properties)
  • How will people edit the page data
  • How will you view the published version of a page
  • How will you support versioning
  • What kind of sites should be the target for the CMS

The answers to these questions will help decide how the database looks, how the project(s) are broken down, how to deal with people wanting to make pages, and so on.

I'd more suggest that you start by either looking at the open source CMS projects, and get a feeling for how they have gone about it, it'll give you more of an idea when looking to produce your own. Otherwise you can quite easily get swamped by options.

Edit - Just thought I'd add, I contribute to an open source CMS (Umbraco) so I am familiar with what needs to be done for a CMS, I'm not just being negative

Slace
A: 

A very important question is if you want it to be heavily server sided or client sided, depending on that you are either closer to a wiki or a blog. Also what languages and what scale? It could be a nice chance to learn something new if you want to keep on working on it for some time, but if you just want to get over with it use a language you know.

Robert Gould
+1  A: 

Do it in small steps, first one little piece of functionality, the another layer, then one more. If you attempt to define all desired functionality first and the try to implement it, you'll likely fail. Do it incrementally. And not forget regular code reviews and refactoring.

User
+2  A: 

Yes a CMS can be big, but they can start small and as a learning/fun project that's pretty good, and the real selling point is you can use it yourself. If I were to build another CMS, here's a couple of things I would/wouldn't do.

1) Don't rely 100% of Xsl to create your content - that looked like a reasonable bet in 2001, and I was wrong.

2) Don't try to write your own Javascript/Flash rich edit control - too many good ones out there already

3) Do create a CMS which does something unique - personally I'd love a CMS that would allow me to create comics strips - go for a niche

4) Do work out a good server/DB design early on.

5) Do just do it...

MrTelly
+1  A: 

A line "I've build my own CMS in 2009" or a similar "With our very own CMS.." in a firms introduction could be a big minus sign on my list when I have to make a decision to hire him/them.

Maybe not the kind of answer you expect, but if I were you, I'd consider to develop some really new modules to an existing CMS. My personal bet is on Drupal, but you can find a lot of other options.

Better spent time, IMHO.

Csaba Kétszeri
+2  A: 

Sounds educational to me. Despite others' concerns, if you're interested to understand the issues that need to be addressed within a CMS, the best way to learn one is to build your own, or at least built some interesting pieces of one. I wouldn't use a homebrew one for my own repository. But, like building a compiler and an interpreter helped me to understand the technologies better, the same would apply to the CMS. I don't use the compiler or interpreter I built for "real work," but I'm glad I built them.

Don Branson
+1  A: 

I have developed my own cms, for myself and my clients. I hate using someone else's programs unless absolutely have to. Also, since Im constantly developing new sites, its much more convenient using own cms and simply tunning it up a little bit every time. Anyway. How to do it? Just start doing something. People get stuck because they think they should first figure out a perfect structure and so on. Relax, it wount be perfect. You will probably gonna have to make some changes later. But in m experience, doing something wrong and fixing it is still faster than waiting for the vision of a perfect solution to enlighten you. So just sit down and start writing page by page: add page, insert page, update page... You will realize what else is needed in the process.

SEO
good point on getting something live. web apps are never perfect, and striving for that is just something to push back when you ship.
GSto
A: 

I would start by tackling some of the common things that all CMSes are going to need, and then building from there. Here are a few:

  • User Authentication You're going to need to be able to handle clients who are going to edit the content, and possibly other users as well.
  • Admin Panel - How are your clients going to edit content? It's going to need to be flexible to support a number of different set ups.
  • Editing Pages - Most sites have simple static pages of some sort, you're going to need some way to store/edit them.
  • Syndicated Content - Another thing most sites have, like a news feed or blog entries.

If you did all this, you'd have the beginnings of a simple CMS.

GSto
A: 

I would advise you not to create your own cms. The time it takes you to write, perfect, dummy proof, write documentation, conduct usability tests, test on varieties of servers, market, unless you have a team and you are well funded, its just not worth it.

There are other things that you will have to consider as well, licenses, legal fees, and updating the system. Beside how would your buyers have confidence that a sole proprieter is going to be around to provide updates. I speak of great experience in this area as I have developed my own CMS over a cumulation of years, and selling the cms becomes even much tougher as joomla, wordpress, and drupal have a price point that you cannot complete with.

SEO GUY