Tried out Expression Engine 1.6.8
I tried the Expression Engine (freely-downloadable Core edition) CMS. I didn’t much care for it; though it might be useful if you want to store many different (complete) HTML pages in a database and have an interface to edit them with. That’s not however exactly what I think a “content management system” should be; that’s more of a markup management system.
I just didn’t find the system inspiring; as a user, it’s hard to pinpoint why, specifically, beyond saying that the administrative interface seemed unintuitive. As a developer and systems administrator I was also pretty disturbed when I looked at the source of the installation script: 4168 lines of PHP, nearly all global-scope code, with MySQL queries, HTML, and CSS interspersed along the way.
Generally, I don’t trust software that I would hate to have to maintain. It goes beyond code simply looking pretty; readability is important. Given The Magical Number Seven, Plus or Minus Two concept, it’s easy to see why 20 line functions with a handful of local variables are much easier to maintain and debug—and to proactively spot bugs in—than something that is essentially a 4000 line function.
The system’s core code looks to be written more modularly, but it’s obviously not as flexible as Drupal. It doesn’t appear to have much database abstraction (it only supports MySQL), nor a form API. Beyond the fact that you can edit the HTML of pages (but not blog entries?) on your site directly in the administrative interface, I’m not sure why this system claims to be the most flexible thing ever.
I told the installer to use no table prefix, but it still prefixed the tables with “exp_”. Apparently it didn’t like a blank prefix, but it didn’t complain, either. There is code to let the system work with a different table prefix, but it’s a dirty hack that involves at least one regular expression to be run for every query. From Expression Engine’s database query function (system/core/db/db.mysql.php):
if ($this->prefix != $this->exp_prefix)
{
$sql = preg_replace("/(\W)".$this->exp_prefix."(\S+?)/", "\\1".$this->prefix."\\2", $sql);
// If the custom prefix includes 'exp_' the above can sometimes cause partial doubling.
// This is a quick fix to prevent this from causing errors in 1.x.
if (strncmp($this->prefix, 'exp_', 4) == 0)
{
$sql = str_replace($this->prefix.str_replace('exp_', '', $this->prefix), $this->prefix, $sql);
}
}
I’m quite curious whether that regex substitution will break database fields with names like “exp_points.”
And, come to think of it, that strncmp() call could be a bug; the comment says “if the prefix includes” but strncmp() only checks the beginning of the string. Shouldn’t it be a call to strpos() instead?
On a more positive note, looking under the hood of other systems, like this one, helps me appreciate Drupal even more. Drupal really sets a high standard; once you’ve worked with it, especially if you’ve looked under the hood or done any module coding, it’s hard not to appreciate its well-thought out design and engineering. The FormAPI has particularly spoiled me rotten.









[...] post: Tried out Expression Engine 1.6.8 By admin | category: cms | tags: are-outstanding, cms, controversy, examination, [...]