Recently I started working on a rather large project using Expression Engine by Ellis Labs. This is a CMS development system built on CodeIgniter, a php mvc framework. At first impression, EE is very easy to use for creating data relationships (using channels and channel fields). This facilitates building somewhat complex websites, managed through the admin interface. It also has a robust user permission system, which makes it easy to grant access to various users.
Where EE requires a bit of a learning curve, is on the “front end” templating system. Those looking for an easy way to throw in php code and get to work, will encounter some frustration. Start by studying the “parsing order” of the templates, to understand how things work. The good news is that you can add php in there to handle complex tasks, but it takes some understanding of how Expression Engine handles the template tags first. After some study and experimenting, you can start getting things done.
EE relies heavily on modules and plugins, many of which cost money. Overall, these can be savers and even added to the cost of Expression Engine itself, still worth the money. However, I do wish a bit more was built into EE out of the box – sometimes it seems like relatively simple features require an add on.
One drawback to EE is the overhead required. Even relatively simple tasks take 20+ mysql queries to build. EE has a nice Profiler built in to see what queries are being executed. You can cache templates to help with this overhead, but sometimes it’s laughable to see a simple task executing so many queries.
Overall, EE is a nice platform, and user friendly. I’m sure I’ve just scratched the surface of it’s power and flexibility. It does, however, feel almost like learning a new programming language.