EngineCMS
EngineCMS is a CMS that i’m working on developing to fill a specific set of features that I haven’t been able to find in other systems.
- Use the file system, instead of a database, to store content. This is important so that we can use command line tools to work with the files.
- Revision control
- Authentication, Permissions, ACLs against local users (unix auth), built in users (to the CMS), Active Directories Users/Groups/OUs, and IP based authentication.
- Easily integrate external applications, without resorting to having to use rewrite rules in apache
- simple ’server’ scripts to handle the rendering and display, providing a robust and stable developing platform. That is, once the rendering engine is developed thats it. All the ‘new’ features will be on the ‘back end’
- back end, the CMS part, is separate from the rendering engine allowing it to be located on a separate server.
- system is designed in such a way that no one has to have access to the public web server.
- Individual pages need to be able to have different themes applied to them, instead of the default theme
- Fallback — if you specify “images/banner.gif” it will search the current directory for a directory “images” and “banner.gif” inside of it. If it doesn’t exist it will work its way back up the directory tree until it does. Same thing for any file, such as “leftNavigation.php”
- Easy for people with no web development experience to create and maintain pages
There are some other influences as well, but those are the big ones. I’ve been looking at several CMSs over the years. Drupal and Zope/Plone come the closest to providing what I am looking for, but fall short.
Drupal, currently, doesn’t support ACL properly in version 6 and its been out since February. Version 7 is already in development. A lot of the *core* features i want are in modules that lag far behind the main system. This worries me and makes me think that I will get stuck in an old version of drupal.
Drupal also requires all “addons” to be drupal modules. In some cases there are things that we will want to throw up that will be easy to throw together, but not easy as a module. An example would be a temporary application that might be up for 1 semester, and we only have 1 week to develop it.
Drupal’s revision control is also lacking a bit.
Zope/Plone is a great system. I used it for years on my own personal website and I still use it on the Library Intranet website (until this new system is ready at least). Problem is, everything has to be done via the web interface. You can’t use common commandline tools to work with files. If i am out of town on a 56k dial up, i want to be able to use emacs to make an edit instead of having to use a web browser. This is my biggest complaint about Zope, which kills it for me.
Enter EngineCMS
EngineCMS, for lack of a better name, addresses everything above and is very alpha at this point. I’m currently implementing the authentication system. Once the authentication system is done, which i hope to get done by 8/11/2008 (that might be wishful thinking), the Engine/Front-End part will be ‘feature complete’ and I will be able to start working on the back end.
The back end is where all the actual CMS magic happens. It is where web authors will go to do their thing. The front end is merely what will render the pages that are on the server. Once the front end is done I will begin converting the library’s intranet to the new CMS, by hand, so that I have a test bed for the back end CMS stuff. It will also give me a frequently used, but private, area to debug problems with the front end so that it is rock solid by the time we are ready to move it to live-public-production servers.
Development is being done in PHP, which is something i’ve resisted for years … but it is starting to grow on me. It allows for a lot of neat things without having to develop an actual server, like I’ve done in the past (and like zope still does).
RSS Feed