xAppOS - the magic behind our sites.
For the past several years, we (The Digital Orchard) have been developing a website framework that forms the foundation on which we build most of our clients' websites. This framework has evolved through several versions and architectures to become what it is today. There's many web frameworks available, each bringing their own strengths to the table. Some are full-featured self-contained packages, such as WordPress, Drupal and Joomla, and others aim to be really good at some things, but leave the rest open as a blank slate. We meet in the middle between these approaches.
xAppOS is a powerful set of libraries built on top of the open-source CodeIgniter framework. It didn't start out that way, though. Development originally started around 2004 and had met some successes, but also had some significant challenges. Something was missing from the framework that was preventing it from being considered stable and reliable. It was very "fragile" in a sense, and getting new sites up and running was slow and tedious. This needed to be fixed. Because xAppOS brings some unique strengths to the table, we didn't want to start from scratch completely, so in the Summer of 2006, we chose to layer it on top of CodeIgniter. By having CodeIgniter as the solid foundation layer, taking care of the core essentials that every framework should have, we were free to build in powerful functionality into xAppOS without reinventing the wheel.
CodeIgniter was a good fit because it is an extensible and cleanly-designed framework. It follows the traditional MVC (Model-View-Controller) paradigm and has Libraries that can be extended and customized on a per-site basis. By leveraging this extensible design, we were able to sandwich xAppOS seamlessly on top of CodeIgniter. This layered approach has allowed us to update the layers independently. We can update xAppOS without making any changes to the core CodeIgniter functionality, and likewise, we can upgrade to a new version of CodeIgniter without making any significant changes to xAppOS.
One of xAppOS' core strengths is that it provides a pure object-oriented model layer, something that's quite unique to a web framework. We call our model a multi-dimensional database architecture. In traditional database design, relationships between records are generally represented by foreign references... essentially referencial IDs stored in each record that uniquely identifies the other. With xAppOS, we can achieve the same effect by using what we call "attachments". Essentially, records can be attached to other records and everything in this "family tree" is stored as a single record in the database. Think of a Postal Address record being attached to a Person record. The postal address has several fields for itself, and in a traditonal database, this would probably be stored in a separate table and linked to the person via a referencial ID. Under xAppOS, we can simply attach the address to the person and they travel together as a single object. Multiple addresses can be attached to a single person (within a reasonable limit).
The concept of an object-oriented approach to modeling data is not new. It dates back to the 1970's. But it had become overshadowed by the dominating class of "SQL" (Structured Query Language) databases that use individual tables to store each type or class of data. Under xAppOS, data is kept in a pure object-oriented format, and serialized into a form that can be stored in a traditional SQL database, among other types.
We're going to be using this blog to share the updates that we make to xAppOS going forward. Until now, it's been an entirely private project within our company. While the code remains closed-source, and can't not be used by others without a special license, we want to take a more open approach to our develoment, so our clients (and future clients) can see just how hard we are working behind the scenes to give them the best website that we can. We understand that a website is more than the fancy colours and designs. It takes a significant investment into the back-end infrastructure to deliver that "wow" on the front-end. That's our goal.
Stay tuned for more updates.