News
ExpressionEngine 2.0: fully CodeIgnited!
At South by Southwest during our “ExpressionEngine 2.0 sneak peek” I got a chance to reveal some big news about the future of ExpressionEngine that I wanted to explore in some more detail here for anyone who wasn’t able to attend.
ExpressionEngine 2 is built on CodeIgniter.
CodeIgniter (http://www.codeigniter.com) is our Open Source PHP based framework. You can learn more at CodeIgniter.com, but in a nutshell it’s the toolkit that many powerful applications are built on, and now we can add ExpressionEngine to that list.
This is great news if you’re an ExpressionEngine user, a CodeIgniter user, or both. As an ExpressionEngine developer you will have a greatly expanded community of talented developers working with you, and for you. I said during my talk, “The nerds are excited, and you should be excited that the nerds are excited”. As a dyed in the wool nerd, I stand by this!
If you’re a CodeIgniter developer, this means you can drop a full-fledged content-management system right on top of your existing code base, and have it work. You want a forum installed? One click. You want need member management, a wiki, end-user tools, mailing lists, mobile blogging capabilities, permissions… all there. One click. Proven, simple, powerful.
And not only are the code bases merging, but I see the communities merging. CodeIgniter authors are nearly instantly qualified to write ExpressionEngine modules, extensions and plugins. The EE community will benefit from the energy and ideas of CodeIgniter-ers, and as a CodeIgniter author you’ve suddenly added thousands of new “potential customers” to your list.
Technically, there are tremendous advantages as well. For example, running an application as flexible and powerful as ExpressionEngine meant that we needed more flexibility. And since the base of ExpresisonEngine is now CodeIgniter, if EE needs it, CI gets it. We’re going to share when we can abstract ExpressionEngine code into CodeIgniter, and we’re going to share Open Source. So CodeIgniter is benefiting from more developer attention, and growing functionalities.
It’s a good time to be a nerd!
If you’re a CodeIgniter user and you’re worried that adding capability based on the needs of ExpressionEngine will create code-bloat and degrade performance, don’t be. We’re obsessive about real-world performance and code elegance, and our software depends on it.
Let me give you a few specific examples of how CodeIgniter and ExpressionEngine are sharing with each other. In order to get ExpressionEngine running, we’ve expanded current libraries, and created new libraries. Immediate examples of this include the greatly expanded Active Record class for CodeIgniter, which is used to talk to your database. A series of added functions where put in there, including aggregate functions, expanded use of like(), a handy count_all_results() function, and many others. Additionally, an entire database manipulation tool was created (DBForge) which lets you create, manipulate and drop tables, fields, and other aspects of your database. In ExpressionEngine these get used in the installer, but being abstracted in CodeIgniter means you’re only limited by your imagination.
And many other libraries will be expanded. Already there have been expansions to sessions, table generation, html generation libraries, form generation, image processing, email and many others. As well, there’s been significant behavioural changes to sessions (introduction of flash vars), helpers (ability to over-ride on an application level basis) and models (introduction of auto-loading). In fact, there’s been over 140 additional changes, additions and bugfixes that have already worked their way into CodeIgniter.
There are also exciting things in the works for CodeIgniter that aren’t yet in the public repository (because they aren’t done yet, not because we won’t share). The most exciting of which is probably the brand new javascript and jQuery libraries, which will provide simple, programatic ways to write complex javascript code. It means you’ll have a simple, CodeIgniter way of creating rich javascript functions. You don’t need to be a javascript guru, but you can be.
Here’s a preview (please keep in mind that this may slightly change as it gets developed)
// Effect: fade a div into view
$this->javascript->fade_in(“div”);
// Event: set up a click to show a submenu
$this->javascript->click(“#button”,
$this->javascript->hide(“.submenu”);
);
// Plugin: using a jQuery plugin
$this->jquery->tablesorter();
You can already see the both the libraries in full-force on the new Control Panel.
Oh, and we understand that some people may have their own preferred javascript libraries. The new JavaScript library in CodeIgniter allows you to extend it to use your own. Its all abstracted. You like Scriptaculous, there’s room for a scriptaculous driver. You like Mootools? You can build a driver. Think of it like the database library. You say “hey CodeIgniter, do this… here’s what I’m using - you figure it out”, and CodeIgniter does. It’s smart like that.
This is an exciting time for ExpressionEngine and CodeIgniter, as we begin to really push what is possible with our technology, and explore ways to make your life as easy as possible.
CodeIgniter expands ExpressionEngine’s capabilities; and ExpressionEngine expands CodeIgniter’s reach… and we all get to reap the rewards.
Like I said, its a great time to be a nerd.
Posted by Derek Allard on March 14, 2008
