It’s design time
posted in Blogs |I don’t think I’ve made explicit mention of it here (aside from the occasional Wiki link), but I’d like to take this opportunity to open up a discussion to any and all interested in the world of Content Management Systems regarding my own personal endeavor into the arena (I know eksith will be interested; we’ve already had light discussions here and here).
There are tons of flow charts out there, in addition to Wikipedia’s overview of the concept, but my focus is going to be as summarized on my wiki page: something lightweight, scalable for small to mid-size websites, and extensible.
For inspirational use, I’ve been examining the design of two of my all-time favorite open-source content management systems: Joomla! and Drupal. They emphasize slight different approaches while offering much of the same functionality. Joomla focuses a bit more on the everyday user, and hence is slightly easier to setup and maintain, but a bit more difficult to customize and add new functionality. Drupal’s focus is nearer to tech-savvy developers, and so setup can be more time-consuming, but once the site is up and running, adding new plugins and further customizations are pretty simple.
Ideally, I’d like to take the best of both: simple setup, maintenance, and extension.
Already, I’m planning to make use of the Smarty template engine to take care of renderings. I’m also going to employ jQuery to give me a significant head start in use of JavaScript. As you’ve probably guessed by now, the CMS itself will be written in PHP. The inital database will be MySQL, but keeping modularity in mind I want to design for any of PHP’s supported databases.
From here, things get more complex.
The overall design and workflow isn’t going to look much different from any other CMS. However, I want to make this as modular as possible, hearkening back to the ease of extension. I particularly like how Drupal has approached this – almost everything is considered an independent “node”. Joomla’s MVC approach is also impressive, but I dislike the level of duplication inherent in the separation of admin/user views.
Like Drupal, I want every aspect of this CMS’s functionality to operate as independently as possible, specifying dependencies on other nodes (or, as I’ve informally begun referring to, “servlets”) only when absolutely necessary. Any sort of duplication between servlets – code, or simply logic – should be avoided. For instance, if I created a servlet responsible for translating all the rendered text into another language, I don’t want to have to specify a dependency for every single other servlet in the system on this one language servlet.
I have quite a few other details, but for now I’d like to stop here and see if any of my gentle readers have any thoughts on the matter.
And a lolcat for your troubles
