3704 Hits
Baking Mambo Print E-mail
Written by Chad Auld   
Oct 11, 2007 at 11:12 AM
Mambo  With the 4.7 release just around the corner the Mambo team thought now would be great time to discuss with the community our plans for post 4.7 releases. The major initiatives laid out on the Roadmap a year ago are still in place, but the release plans have changed slightly based on some decisions we have made. Originally we had planned to release 4.7, then 4.8, and then 5.0. We are now planning to move from the 4.7 release directly into Mambo 5. The 4.8 release was to focus on database portability, content versioning, and the implementation of a PHP template engine. Version 5.0 was to tackle features like enhanced Access Control Lists (ACL), N-Level content organization instead of the current two tier section/category structure, multi-site management, etc.

The team has spent a great deal of time thinking about the approaches we will take to implement all those features and how best to leverage the great work being done by others within the PHP community as well. Over the last year the number of PHP frameworks on the market has increased as have the maturity level and feature set provided by each. As the size and complexity of a project like Mambo grows having a solid foundation to build from becomes increasingly more important. We believe that Mambo 4.7 will prove to be the best Mambo release yet. The team has spent a considerable amount of time working on XHTML validation, WCAG 1.0 (Priority 1, 2, and some 3), removal of unnecessary and/or inaccessible JavaScript code, improved usability, plus much more. With a solid release like Mambo 4.7 out we will have a stable, accessible, and standards compliant system for the community to use which will allow the team to fully focus its attention on the future. Of course we will continue to provide maintenance releases of 4.7 as needed while we work on Mambo 5.

Mambo 5 offers us a chance to step back and rework things from the ground up. There couldn’t be a better time to leverage the benefits of tried and true enterprise patterns and features offered by a number of great web development frameworks on the market today. After a great deal of research the Mambo team has decided to utilize the CakePHP framework for Mambo 5. CakePHP is a rapidly evolving, mature, and feature rich PHP framework. The project is backed by an official Foundation (http://cakefoundation.org/) much like the Mambo project itself. We believe this is an important criterion as it helps assure the project will remain active and community minded. CakePHP also has a growing community, a software forge (http://cakeforge.org/), and a nice body of documentation. From their site, "Cake is a rapid development framework for PHP which uses commonly known design patterns like ActiveRecord, Association Data Mapping, Front Controller and MVC. Our primary goal is to provide a structured framework that enables PHP users at all levels to rapidly develop robust web applications, without any loss to flexibility."

Here are some of the standard cake features:

  • Hot Features:
    • Model, View, Controller Architecture
    • View Helpers for AJAX, Javascript, HTML Forms and more
    • Built-in Validation
    • Application Scaffolding
    • Application and CRUD code generation via Bake
    • Access Control Lists
    • Data Sanitization
    • Security, Session, and Request Handling Components
    • Flexible View Caching
    • And More...
  • Active, Friendly Community - Just join our IRC channel to see who's in. We'd love to help you get started.
  • Flexible License - Cake is distributed under the MIT License
  • Clean IP - Every line of code was written by the CakePHP development team
  • Extremely Simple - Just look at the name...It's Cake
  • Rapid Development - Build apps faster than ever before (check out the zZine article - http://www.zzine.org/articles/cakephp)
  • Best Practices - Cake is easy to understand and sets the industry standard in security authentication, and session handling, among other features.
  • OO - Whether you are a seasoned object-oriented programmer or a beginner, you'll feel comfortable
  • No Configuration - Set-up the database and watch the magic begin

We realize this decision is not only important for the Mambo core, but also for the 3rd party developer community. I’m sure at this point most of you have at least read about and more than likely have tried at least several different frameworks. In fact you probably already have a favorite. Like anything else, each framework has its own strengths and weaknesses and CakePHP may or may not be your first choice, but we hope you’ll agree that CakePHP is a solid choice and certainly one of the top frameworks available today. Having a framework like CakePHP at your disposal should make developing Mambo add-ons just that much easier and offer new levels of extendability. Developers will find a great starter manual (http://manual.cakephp.org/), a solid API (http://api.cakephp.org/), plenty of online tutorials (http://bakery.cakephp.org/) & screencasts (http://cakephp.org/screencasts), an IRC channel, and the projects Google Group (http://groups.google.com/group/cake-php) for CakePHP support. Of course Mambo 5 will have its own documentation as well, but we still have a long way to go before then.

Also, just so you know its not all theory I thought I would mention that we already have a pre-alpha prototype of the new Mambo 5 installer. I've spent the last month or so reworking some early code I had done on the Mambo installer for 4.8 around database portability. I started the code 1 year ago this week and set it off to the side for a long while waiting for 4.8. With 4.8 going away and the project moving to CakePHP I decided it was time to bring it back to life and do it the CakePHP way. It utilizes ADOdb and AXMLS to create the initial Mambo database and land the database connector. From that point on it relies on the native database portability drivers within CakePHP. Having these native drivers has made life much easier than previous methods. The pre-alpha version was done on CakePHP 1.1.x and has support for SQLite, PostgreSQL, and MySQL. CakePHP 1.2 is now in alpha status and is looking better by the day. Before too long I will rework the installer to utilize the 1.2 branch which will bring even more databases into the mix; oracle, db2, and mssql. By no means is the pre-alpha installer ready for production, but it does show off some nice functionality and proves Mambo and CakePHP can make a nice pair. We will be sharing this with interested 3rd party developers as a sample shortly after 4.7 is released.

It's the perfect time to make a shift and look toward the future of this great system of ours. We hope you'll join us on this new adventure. Mambo on!

Chad Auld
Mambo Core Team Leader