Wednesday, 1 December 2010

Nyanko CMS

Today marks the first day that Nyanko Content Management System (NCMS) is in actual production use, running a commercial site. After starting the project a few years ago to replace the 'lite' CMS the site was (and still is) running but never making much headway, I got the opportunity to finish developing it just over a month ago when my cousin gave me the go ahead to use NCMS as the basis for her company's website.

Since then I have spent weeks analyzing the existing code, rewriting some parts, debugging many lines of code and encountered some rather silly glitches such as not using mysql_real_escape_string() on a string I had to insert into the database, which would hilariously result in query execution errors when you least expect them. Another favourite error of mine is the one when opening files in PHP, using a function like fopen(), or file_put_contents(): "[..] failed to open stream: No such file or directory in [..]", which basically comes from the fact that while these functions can open and create files, they can not create directories in the path provided which aren't there. You have to create those yourself.

The CMS itself is pretty advanced in many respects: fully modular, PHP-based, limited to a MySQL backend but easily extended, with separate development and production website instances for the more demanding enterprise situations. It also features an AES-encrypted link between the development and production sites making the use of HTTPS and an expensive SSL certificate unnecessary. Finally NCMS employs a powerful and highly configurable caching mechanism, allowing it to scale to even the largest sites.

Why didn't I pick another, existing CMS? Why not go with Joomla, Drupal, or one of the dozens of other PHP-based CMSs? Primarily their complexity and wealth of bad design choices which resulted in limitations. The focus with NCMS from the beginning has been to make the design as uncompromising as possible, with only the most minimal set of requirements on each module. Template files need only the most basic adaptations to use them with NCMS and modules communicate using strict APIs and protocols.

At this point NCMS is essentially still a prototype. Particularly the administration section is still kind of basic and many more tasks need to be simplified and automated. What I'm considering is porting the current purely PHP-based administration section to a C++-, Qt-based desktop application, mostly for ease of installation and use, as well as for performance reasons.

I'll be using NCMS for future client sites, as well as my own sites. Once it's more developed I'll also consider licensing the CMS itself, commercially and maybe a free license as well. Open sourcing it is not on my list of options at this point, however, as I fail to see the point of doing so.

*dodges incoming flames*


No comments: