Reputation: 71
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
Upvotes: 6
Views: 5915
Reputation: 19
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.
Upvotes: 1
Reputation: 42350
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:
If you did all this, you'd have the beginnings of a simple CMS.
Upvotes: 1
Reputation: 41
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.
Upvotes: 4
Reputation: 13709
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.
Upvotes: 5
Reputation: 694
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.
Upvotes: 0
Reputation: 14865
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...
Upvotes: 9
Reputation: 30945
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.
Upvotes: 3
Reputation: 69815
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.
Upvotes: 1
Reputation: 25099
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:
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
Upvotes: 10