Principles of creating a CMS

''This article features principles which should be considered when developing a new CMS enviroment. As this article may contain some amounts of technical terminology, you should reference to the CMS Vocabulary where terminology is explained in short sentences.''

Primary principles

 * Define your needs

Before development of the any code based system can begin, you should evaluate your needs for the system. Good practice is to have a good plan - Use lots of time for planning: What do you need, how does it need to work, what functions you want your CMS to provide now, and what functions you may want it to provide in the future. A good plan is never too restrictive: Think of the future -- Leave space for expanding the service area and consider possible problems in the development.


 * Think about the platform

The platform where you are going to develop is one the most important thing. All coding, whatsoever, especially CMSs, should be created as a platform-independent software. This means that your code can be used in any operating system and in any common environment (and for any purpose). In this you specially should be very carefully because if you create too platform-restricted software, you may not share (or sell) it too well.


 * Choose your language

Selection of the programming language is one of the most important features you should consider. Never choose a programming language which restricts it's usage environment -- use the one that gives you freedom. There are many platform-independent programming languages which works in many environment, whether is it a linux or a microsoft environment. Second most important thing is ease - Choose your coding language well: If you need to choose between Perl and PHP, choose PHP because it is considered to be more rapid and easier development environment than PERL.


 * Consider the security

Usually when it comes to the CMSs, security is of major importance. CMSs usually use virtual file system, which leaves as many opportunities as blockades for the hackers. When planning and/or creating a CMS, list all possible ways your code could be hacked and test it - Test it well. Also before releasing your CMS to the public, ask your friends or companions to test the code vulnerability -- it is always better to be sure than sorry.

Secondary principles

 * What about features

Remember important rule: What you need is not enough -- you need to consider to the needs of the public. Depending on whether you are making a free GNU based software for the public or simply making something you can sell, you need to consider all potential needs of your users. People have strange needs, sometimes very strange, so make your CMS very flexible -- good practice is to create possible module system which allows you to create extensive services for the system afterwards without need to change the system of the CMS.


 * Easiness

You know code, I know code but does the next guy know the code? User friendliness is not only a term, it's an important feature of the CMS. It is never enough that you are satisfied for the user interface of the CMS, you need to make sure that the one dude who has never used any kind of web-technologies uses it as easily as he or she uses her word processor or spreadsheet -- or even more easier. World is fully of dummies so design your user-interface well and consider possible questions -- good FAQ file with the CMS never hurts anyone.


 * Visibility

The three letter word of horror: SEO, Search Engine Optimization, has never hurt anyone. When making a CMS, keep on eye of the file structure visible in the browsers. If your CMS url path is something like ?amdi=234jgs89w23j9r33&werw32 it's quite hard for the search engines to index nor even people to remember, so it's good practice to make system which allows friendly URLs such as /discussion/bert-makes-sandwich or /albums/doors instead of the hexadecimal mixture.

Credits
Original text by Dedaman