CMSMS 2.0 (say what now?!)
Posted: Mon Jan 01, 2007 9:46 pm
So, about a month ago I sat down and discussed the changes that were incoming for the 1.1 branch. There were lots of big, exciting changes and a bit of controversy mixed in. Well, the scope of 1.1 has changed since then...
The next major release of CMSMS will be 2.0. Why? Because I'm basically changing everything. It's not a total rewrite... but more of a major organization and rethinking of key elements. Fixing all the things I hate about the current implementation (yes, I'm probably CMSMS's worst critic).
Here's a quick rundown of everything that's been done so far...
- I've basically touched every piece of code in CMSMS in the last month. My goal here is a consolidation of a real API. I've renamed just about every file to be a consistent naming scheme. I've moved almost all of the functionality of the index.php and include.php into other files. I've documented most of the flow and how it works, as well.
- A lot of methods in the system are now in static php files in the API. Things like $gCms->getContentOperations() have gone away in favor of the simpler CmsContentOperations::some_method.
- I spent the last few nights reworking a LOT of the admin panel and how it operates. The menu is now controlled via an xml file that defines the structure of the menus. If you want to remove functions... just modify the xml file. I've also removed about 50% of the admin theme class functions in favor of using a global smarty template per theme.
- I've rewritten the hierarchy manager (again!) using a MUCH simpler set of tree classes. The result was an incredible speed-up.
- I've added function caching via pear's Cache:Lite. It can implemented anywhere in the system via the CmsCache class... I've added it in about 10 key places in the system to help reduce files loading and repetitive SQL queries (loading nls files and loading site preferences).
- I've also added FULL PAGE caching. If you're running a generally static site, turning this on will reduce page generation times to roughly .01 seconds and no database hits. The cache is automatically cleared when any page, template or global content block is edited, so you won't need to clear this by hand.
- I'm systematically removing the _seq tables from the system. Current svn has them removed from 5 key tables (content, content_props, groups, users and templates) already and I'm hoping to get to all of them for 2.0.
- Elijah is currently is the process of consolidating all of the javascript libraries to Dojo. This should remove a lot of the weird dependencies from the lib directory and make it a lot more streamlined and consistent. It will also put in place the idea of shipping just with the simple Dojo editor as the default WYSIWYG, with others available via the Module Manager.
- I've removed about 50% of the global functions from the system already in favor of static methods in various classes (e.g. get_site_preference becomes CmsApplication::get_preference). Some have backwards compatible global functions still around (like redirect for CmsResponse::redirect).
- I've rewritten the language handling functions into a CmsLanguage class. The code is about 25% of it's original size, and is written for the future Language Manager module that will be in 2.0. CMSMS will now ship with one language, and the ability to either download a language pack, or download languages via the Language Manager... much like how the Module Manager works now. More details on that later when we figure them out.
- I've rewritten addcontent,editcontent,listcontent,addtemplate and edittemplate from scratch. I've used proper API changes and smarty templates throughout. They're now not the scary bits of code they used to be.
Given the fact that all this has been done, but key features of what I put in my last post haven't even been touched yet, I think I'm going to have to extend my timelines a bit. With that, I expect to see a 2.0 beta near the end of Q1 (end of March), with a full version in the middle of Q2.
I expect a LONG beta process. The upgrade procedure is going to be steep, some modules will not work, and other things are going to creep up. Not to mention that there will have to be an entire rewrite of the server-side translation center to accommodate the changes I want to make.
If you want to follow the progress, or even play around with what is there so far, check out the 1.1 branch at http://svn.cmsmadesimple.org/svn/cmsmad ... /1.1. I won't be taking bug reports yet, as there are still a lot of holes to be patched up. But it's coming along...
Thanks!
Ted
The next major release of CMSMS will be 2.0. Why? Because I'm basically changing everything. It's not a total rewrite... but more of a major organization and rethinking of key elements. Fixing all the things I hate about the current implementation (yes, I'm probably CMSMS's worst critic).
Here's a quick rundown of everything that's been done so far...
- I've basically touched every piece of code in CMSMS in the last month. My goal here is a consolidation of a real API. I've renamed just about every file to be a consistent naming scheme. I've moved almost all of the functionality of the index.php and include.php into other files. I've documented most of the flow and how it works, as well.
- A lot of methods in the system are now in static php files in the API. Things like $gCms->getContentOperations() have gone away in favor of the simpler CmsContentOperations::some_method.
- I spent the last few nights reworking a LOT of the admin panel and how it operates. The menu is now controlled via an xml file that defines the structure of the menus. If you want to remove functions... just modify the xml file. I've also removed about 50% of the admin theme class functions in favor of using a global smarty template per theme.
- I've rewritten the hierarchy manager (again!) using a MUCH simpler set of tree classes. The result was an incredible speed-up.
- I've added function caching via pear's Cache:Lite. It can implemented anywhere in the system via the CmsCache class... I've added it in about 10 key places in the system to help reduce files loading and repetitive SQL queries (loading nls files and loading site preferences).
- I've also added FULL PAGE caching. If you're running a generally static site, turning this on will reduce page generation times to roughly .01 seconds and no database hits. The cache is automatically cleared when any page, template or global content block is edited, so you won't need to clear this by hand.
- I'm systematically removing the _seq tables from the system. Current svn has them removed from 5 key tables (content, content_props, groups, users and templates) already and I'm hoping to get to all of them for 2.0.
- Elijah is currently is the process of consolidating all of the javascript libraries to Dojo. This should remove a lot of the weird dependencies from the lib directory and make it a lot more streamlined and consistent. It will also put in place the idea of shipping just with the simple Dojo editor as the default WYSIWYG, with others available via the Module Manager.
- I've removed about 50% of the global functions from the system already in favor of static methods in various classes (e.g. get_site_preference becomes CmsApplication::get_preference). Some have backwards compatible global functions still around (like redirect for CmsResponse::redirect).
- I've rewritten the language handling functions into a CmsLanguage class. The code is about 25% of it's original size, and is written for the future Language Manager module that will be in 2.0. CMSMS will now ship with one language, and the ability to either download a language pack, or download languages via the Language Manager... much like how the Module Manager works now. More details on that later when we figure them out.
- I've rewritten addcontent,editcontent,listcontent,addtemplate and edittemplate from scratch. I've used proper API changes and smarty templates throughout. They're now not the scary bits of code they used to be.
Given the fact that all this has been done, but key features of what I put in my last post haven't even been touched yet, I think I'm going to have to extend my timelines a bit. With that, I expect to see a 2.0 beta near the end of Q1 (end of March), with a full version in the middle of Q2.
I expect a LONG beta process. The upgrade procedure is going to be steep, some modules will not work, and other things are going to creep up. Not to mention that there will have to be an entire rewrite of the server-side translation center to accommodate the changes I want to make.
If you want to follow the progress, or even play around with what is there so far, check out the 1.1 branch at http://svn.cmsmadesimple.org/svn/cmsmad ... /1.1. I won't be taking bug reports yet, as there are still a lot of holes to be patched up. But it's coming along...
Thanks!
Ted