Posted 2014-06-07 14:15:22
I have made a decision. It is time to kick the retrocoder.se site live.
For some time I have been thinking about which content management system (CMS) to use. I am currently using Joomla but I have also tried Wordpress and briefly looked at Drupal. And I have come to the conclusion none of them serve my purpose. Not because they are bad but because I have a set of requirements that does not really fit with any of these 'big' CMS's.
The main reason for not going with any of these CMS's is spelled performance. Once again, not because they are bad, but because my requirements are different. All these CMS's make heavy use of PHP and calls to the SQL server. The problem with that is that on a low traffic site like this one, it will often take up to 10 seconds to get a response back on a page request. So why does traffic intesity has anything to do with response times? That all comes down to cache settings on the webserver. With a long time between page requests the cache has been cleared and all the PHP/SQL stuff has to start from the beginning, which take time.
Also since this site is a non-commercial, or you may even call it a hobby website I want to keep the server cost as low as possible. And I get the performace I pay for.
So with this basic requirements on performance I have decided to roll my own lightweight CMS, the RetroCMS. Now lets consider which functions I really need on my website. Or lets start in the other end. which functions of the 'big' CMS's is it that I don't need.
Users. There will be no users on this website, except myself writing articles. Or more correct all users except myself will be public (anonymous) users which read what ever is on the site. Soo there is no need to have user database and user settings and stuff like that.
But I do need to be able to authenticate myself, so that only I can write and edit articles as well as do other administrative tasks. So this gives us the basic list of 'user' requirements.
The next big thing that 'big' CMS gives that I don't need is themes. They are called little differently in different CMS but the basic idea is that the websites look and fell can be easily changed by applying a theme to the content. I plan to hardcode the theme for retrocoder.se and if I need to change how it looks I will rewrite the html/css/js that is the frontend of the site. Hence themes will not be part of the RetroCMS. And strictly speaking none of the frontend code will be considered as part of the RetroCMS.
Ok, so with the above said, lets consider which functionality do I need for this site. Well the obvious once of course, a public user should be able to list articles and to read articles. To enhance the usage of the site the articles should be categorized and be possible to tag. This also means that listing of articles should be possible based on category. Tags will only be used in searching. Which brings up the last basic functionality that is needed, a search function.
Lets summarize the basic functional requirements:
Talking about articles there is one additional feature that I would like to add, the possiblity for users to comment on articles. I do not consider this to be a basic requirement but something that I would like to have added eventually.
As a last point lets consider what should be the content of an article. Well text of course, including html links. But I also would like to have images, which mean I need functionality to upload, store and edit/manage images as well as include them in articles. Also I would like to be able to link to and show youtube videos on site. So lets summarize article content requirements:
Well that's about it, when it comes to basic CMS functionality that I think I need for my site. But before we can close we need to consider some administrative requirements as well. Since I intend to publish the RetroCMS under GPL, there should be an installation script and description included. Another important feature is backup. It should be possible to backup the site content both manually or setup it to be done automatically on a regular basis. And of course it should be possible to recreate content from a backup, otherwise there is little use for backups.
Another feature that I think would be handy is the possibility to set a global message that will be shown to all users as well as set the site in maintenance mode where no one can access any content but an administrative message is shown instead. So let's summarize the administrative requirements:
Well, I think that's all for now.
Hope to see you soon again