PHP5 CMS Framework Development
Michael J. Ross writes "Most Web developers are familiar with one or more content management systems (CMSs), and how they can be used to create Web sites more efficiently than by hand. These developers may have deep knowledge of how to install, configure, customize, and extend a CMS. But far more rare is knowledge of how to develop a CMS of one's own, and the programming considerations required to do so successfully. These are the main themes of Martin Brampton's book PHP5 CMS Framework Development." Read below for the rest of Michael's review.
PHP5 CMS Framework Development
author
Martin Brampton
pages
348
publisher
Packt Publishing
rating
8/10
reviewer
Michael J. Ross
ISBN
1847193579
summary
An in-depth look at creating a CMS, focusing on Aliro.
This title was released by Packt Publishing on 6 June 2008, under the ISBNs 1847193579 and 978-1847193575. In addition to an appendix on packaging Aliro extensions, the book's material is organized into 14 chapters, covering various CMS topics: overall CMS architecture; users and administrators; code organization; user sessions; databases and data objects; access control; supporting extensions of the CMS; data caching and handlers; menus; support for multiple human languages; presentation services; miscellaneous services, such as file handling, e-mail delivery, and admin functionality; error handling; and how to manage many types of content.
At the very beginning of the preface, the author notes that "This book guides you through the design and implementation decisions necessary to create a working architecture for a PHP5-based content management system." Martin Brampton is qualified for this task, given his strong background in CMS development, having served as the leader of the Mambo development team during a critical period of its evolution, and later creating his own CMS, Aliro. It should be noted that the book does not assume any prior knowledge of CMSs in general or Aliro in particular, although in most respects this work is very much a case study of the architecture and design decisions of that specific CMS. However, the book does assume a solid understanding of PHP and object-oriented principles.
All of the code samples come from the Aliro content management system, of which Martin Brampton is the project architect. On the book's Web page, the publisher has made available links to purchase the electronic version of the book, to download the source code, to post feedback on the book, to ask questions, to read the table of contents and media reviews, and to download a sample chapter (Chapter 6: Access Control). The only problem with these offerings is that the source code is not organized by chapter, but instead comprises the source code for Aliro. (The publisher's page labels it as 2.6 MB, as of this writing, but Aliro is about three times that size.) Consequently, readers who want to find specific code should search through the files using their favorite programmer's editor.
The author devotes the first chapter of the book to presenting his perspective on the advantages of using CMSs for site development, the required and the desirable features of a CMS, and some system management issues. Also covered are reasons for using PHP 5, its object-oriented capabilities, XHTML, and the Model-View-Controller pattern. He then discusses sundry topics on site hosting, JavaScript, site security, and CMS-specific terminology. Many readers may find interesting the arguments for separating system administrative access (as done in Aliro, for instance) versus integrating it with the regular site interface and using access control to restrict non-admin users (as done in Drupal, for instance). The chapter concludes with a summary, which for this and the following two chapters, may be of value to some readers, since these chapters are more narrative than the others. But the chapter summaries that follow, for the more technical material, could be disposed of in future editions, since readers will seek within the chapters for the information covered.
Throughout much of the history of the Web, one of the most problematic aspects of site development has been the management of users and administrators — especially with CMSs causing the two distinct groups to be splintered into a spectrum ranging from anonymous visitors with no privileges, to site administrators with full privileges, along with authorized users, content contributors, and content editors. In his second chapter, the author examines the challenges of user authentication, password storage, SQL injection, and other access issues. He proposes a framework solution and also a division of user data into two tables, as done in Aliro. He describes some of the key code utilized within his CMS (naturally, the full code is obtainable since Aliro is an open-source project). Chapter 4 addresses an area that frequently mystifies new PHP programmers — namely, how to create, utilize, and protect user sessions. Thus, this material should have been placed immediately after the second chapter.
The third chapter is devoted to the critical architectural issue of how to best organize one's code. Given that the two aforementioned chapters — dealing with users and sessions — both contain a fair amount of code, this chapter's meta-information should have been presented prior to both Chapters 2 and 4. Nonetheless, the author covers such topics as inclusion and the singleton pattern. He makes a strong case for favoring small classes, stored in separate source code files, and only loading them when needed, using PHP 5's autoloading capability.
In Chapter 5, the author spends some time exploring some of the key issues for storing data in a CMS framework, including dependency upon a particular RDBMS, item counting and ordering, database security, SQL validation, PHP exception handling, and the techniques that the author used for effectively dealing with these challenges when developing his own CMS. The first portion of the chapter, which essentially presents the problems, is fairly disjointed compared to the other material; the remaining portion of the chapter, which covers all of the solutions, is certainly more complete.
The next two chapters of the book, 6 and 7, are focused on topics more specific to CMSs: access control, and extensions to the CMS (components, modules, plug-ins, and templates), respectively. Chapter 8 explores caching and cache handlers, as well as the advantages of using them. The ninth chapter, on menus and page handling, is quite specific to Aliro, and thus will prove disappointing to any reader who hopes to get ideas for their own menu code. In contrast, Chapter 10 should be of interest to anyone who would like their Web sites to be usable and appealing to Internet visitors who do not read the single language of any site not designed for foreign use. Character sets and language extensions are discussed, as well as a third-party solution that is available.
For many years there has been an ongoing debate among PHP developers, as to whether or not to use templating systems as a way of separating presentational content from business logic and functional content. At essence is a question pondered by most if not all dedicated PHP developers: What is the easiest and yet most maintainable way to deliver one's XHTML code, using PHP? This is just one of many subjects discussed in Chapter 11, "Presentation Services," which is easily one of the most compelling and wide ranging sections of the book. Chapter 12 addresses the topic of allowing a site to interact with other services, such as those for WYSIWYG editing and XML parsing. Error handling is explored in Chapter 13, including errors within application code — from PHP itself and from business logic problems — and the database. The book's final chapter covers what the author refers to as "real content," by which he means the content contributed by administrators and users to a CMS, such as articles, comments, forum postings, calendar entries, and other items. The book's single appendix explains how to package an Aliro extension for release, and would most likely be of no interest to anyone not creating such extensions for distribution.
The book has few weaknesses. Occasionally the author will state something that could be misleading to the beginning programmer. For instance, on the first page of the first chapter (not an auspicious start) he refers to the World Wide Web as a markup language. On the contrary, the markup language used to create the Web, is HTML. As we are seeing more frequently in technical books, the writing itself could use a bit more editing — such as hyphens missing from adjective phrases in many locations in the text. Lastly, some programmers may find the author's GNU style of code formatting rather bizarre in appearance.
Overall, PHP programmers who are committed to following best practices in site security, code organization, database usage, and other important factors in any site development, will find plenty of ideas in this book to consider and possibly apply to their own coding. Readers who simply see the book's title, and perhaps browse quickly through its contents, may get the false impression that the information would only be of value to someone who wants to create their own CMS from scratch. The book may be of considerable value for such an effort, but it offers more than that. Many of the most critical issues in architecting and implementing a CMS, apply to non-CMS Web sites as well. Also, as a veteran of software development, the author conveys worthy advice on development practices — such as in the first chapter — regardless of the chosen computer language. In addition, for the growing number of developers who are exploring the inner workings of CMSs — usually with the idea of extending their functionality by writing modules — an appreciation for how the creator of a CMS thinks, could be helpful. Ideas are illustrated throughout with sample code — none of them excessive in length. PHP5 CMS Framework Development offers lessons in PHP 5 object-oriented programming and Web site development that goes beyond CMSs and Aliro.
Michael J. Ross is a Web developer, writer, and freelance editor.
You can purchase PHP5 CMS Framework Development from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
At the very beginning of the preface, the author notes that "This book guides you through the design and implementation decisions necessary to create a working architecture for a PHP5-based content management system." Martin Brampton is qualified for this task, given his strong background in CMS development, having served as the leader of the Mambo development team during a critical period of its evolution, and later creating his own CMS, Aliro. It should be noted that the book does not assume any prior knowledge of CMSs in general or Aliro in particular, although in most respects this work is very much a case study of the architecture and design decisions of that specific CMS. However, the book does assume a solid understanding of PHP and object-oriented principles.
All of the code samples come from the Aliro content management system, of which Martin Brampton is the project architect. On the book's Web page, the publisher has made available links to purchase the electronic version of the book, to download the source code, to post feedback on the book, to ask questions, to read the table of contents and media reviews, and to download a sample chapter (Chapter 6: Access Control). The only problem with these offerings is that the source code is not organized by chapter, but instead comprises the source code for Aliro. (The publisher's page labels it as 2.6 MB, as of this writing, but Aliro is about three times that size.) Consequently, readers who want to find specific code should search through the files using their favorite programmer's editor.
The author devotes the first chapter of the book to presenting his perspective on the advantages of using CMSs for site development, the required and the desirable features of a CMS, and some system management issues. Also covered are reasons for using PHP 5, its object-oriented capabilities, XHTML, and the Model-View-Controller pattern. He then discusses sundry topics on site hosting, JavaScript, site security, and CMS-specific terminology. Many readers may find interesting the arguments for separating system administrative access (as done in Aliro, for instance) versus integrating it with the regular site interface and using access control to restrict non-admin users (as done in Drupal, for instance). The chapter concludes with a summary, which for this and the following two chapters, may be of value to some readers, since these chapters are more narrative than the others. But the chapter summaries that follow, for the more technical material, could be disposed of in future editions, since readers will seek within the chapters for the information covered.
Throughout much of the history of the Web, one of the most problematic aspects of site development has been the management of users and administrators — especially with CMSs causing the two distinct groups to be splintered into a spectrum ranging from anonymous visitors with no privileges, to site administrators with full privileges, along with authorized users, content contributors, and content editors. In his second chapter, the author examines the challenges of user authentication, password storage, SQL injection, and other access issues. He proposes a framework solution and also a division of user data into two tables, as done in Aliro. He describes some of the key code utilized within his CMS (naturally, the full code is obtainable since Aliro is an open-source project). Chapter 4 addresses an area that frequently mystifies new PHP programmers — namely, how to create, utilize, and protect user sessions. Thus, this material should have been placed immediately after the second chapter.
The third chapter is devoted to the critical architectural issue of how to best organize one's code. Given that the two aforementioned chapters — dealing with users and sessions — both contain a fair amount of code, this chapter's meta-information should have been presented prior to both Chapters 2 and 4. Nonetheless, the author covers such topics as inclusion and the singleton pattern. He makes a strong case for favoring small classes, stored in separate source code files, and only loading them when needed, using PHP 5's autoloading capability.
In Chapter 5, the author spends some time exploring some of the key issues for storing data in a CMS framework, including dependency upon a particular RDBMS, item counting and ordering, database security, SQL validation, PHP exception handling, and the techniques that the author used for effectively dealing with these challenges when developing his own CMS. The first portion of the chapter, which essentially presents the problems, is fairly disjointed compared to the other material; the remaining portion of the chapter, which covers all of the solutions, is certainly more complete.
The next two chapters of the book, 6 and 7, are focused on topics more specific to CMSs: access control, and extensions to the CMS (components, modules, plug-ins, and templates), respectively. Chapter 8 explores caching and cache handlers, as well as the advantages of using them. The ninth chapter, on menus and page handling, is quite specific to Aliro, and thus will prove disappointing to any reader who hopes to get ideas for their own menu code. In contrast, Chapter 10 should be of interest to anyone who would like their Web sites to be usable and appealing to Internet visitors who do not read the single language of any site not designed for foreign use. Character sets and language extensions are discussed, as well as a third-party solution that is available.
For many years there has been an ongoing debate among PHP developers, as to whether or not to use templating systems as a way of separating presentational content from business logic and functional content. At essence is a question pondered by most if not all dedicated PHP developers: What is the easiest and yet most maintainable way to deliver one's XHTML code, using PHP? This is just one of many subjects discussed in Chapter 11, "Presentation Services," which is easily one of the most compelling and wide ranging sections of the book. Chapter 12 addresses the topic of allowing a site to interact with other services, such as those for WYSIWYG editing and XML parsing. Error handling is explored in Chapter 13, including errors within application code — from PHP itself and from business logic problems — and the database. The book's final chapter covers what the author refers to as "real content," by which he means the content contributed by administrators and users to a CMS, such as articles, comments, forum postings, calendar entries, and other items. The book's single appendix explains how to package an Aliro extension for release, and would most likely be of no interest to anyone not creating such extensions for distribution.
The book has few weaknesses. Occasionally the author will state something that could be misleading to the beginning programmer. For instance, on the first page of the first chapter (not an auspicious start) he refers to the World Wide Web as a markup language. On the contrary, the markup language used to create the Web, is HTML. As we are seeing more frequently in technical books, the writing itself could use a bit more editing — such as hyphens missing from adjective phrases in many locations in the text. Lastly, some programmers may find the author's GNU style of code formatting rather bizarre in appearance.
Overall, PHP programmers who are committed to following best practices in site security, code organization, database usage, and other important factors in any site development, will find plenty of ideas in this book to consider and possibly apply to their own coding. Readers who simply see the book's title, and perhaps browse quickly through its contents, may get the false impression that the information would only be of value to someone who wants to create their own CMS from scratch. The book may be of considerable value for such an effort, but it offers more than that. Many of the most critical issues in architecting and implementing a CMS, apply to non-CMS Web sites as well. Also, as a veteran of software development, the author conveys worthy advice on development practices — such as in the first chapter — regardless of the chosen computer language. In addition, for the growing number of developers who are exploring the inner workings of CMSs — usually with the idea of extending their functionality by writing modules — an appreciation for how the creator of a CMS thinks, could be helpful. Ideas are illustrated throughout with sample code — none of them excessive in length. PHP5 CMS Framework Development offers lessons in PHP 5 object-oriented programming and Web site development that goes beyond CMSs and Aliro.
Michael J. Ross is a Web developer, writer, and freelance editor.
You can purchase PHP5 CMS Framework Development from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
I highly suggest the author's previous book: Reinventing the Wheel.
...having served as the leader of the Mambo development team during a critical period of its evolution...
The few times I looked into Mambo code it was horrible. Hopefully his Aliro code is much better.
When it comes to CMSs that I'm building myself, I prefer to use a custom or generic framework and build the CMS completely separate on top of that. As mentioned in this review, there is so much functionality that's generic to all web applications, like basic security. So using a solid base it makes more sense to build the CMS functionality separately.
Developers: We can use your help.
Comment removed based on user account deletion
* looks up, notices slashdot headline, skims article.
* shrugs.
* goes back to developing Drupal module.
-fb Everything not expressly forbidden is now mandatory.
sux0r looks neat, but it's horribly ugly. True, serious webmasters can make their own skin, but you need a good default if you want to get anywhere.
The government can't save you.
Comment removed based on user account deletion
I just took a look at the Aliro code in SVN, and I have to say... It looks like the same spaghetti shit code that's so popular in the rest of the PHP community.
There are multiple class definitions per file, HTML output directly in functions within the classes, no clear modular structure that I would expect in a good CMS, the list goes on.
And before I get flamed horribly - Yes, I am a PHP developer. I code with PHP every single day for both work and pleasure. But the code I just looked at shows none of the good parts of object-oriented design. This code and CMS is not doing the PHP community any favors.
I would like to frame the question as framework versus CMS. When would you choose a CMS for a web site rather than a framework?
In particular, is there really a need for CMS's these days for flexible web site development when there are very capable PHP frameworks out there (Zend, Symfony, cake, etc). I have used the Symfony framework for database driven intranet sites, but I have never used a CMS other than to put up a blog like thingy. Of course, these days many frameworks contain simple CMS's.
I'm currently in the process of developing a custom CMS. As far as the initial product I'd say I'm 80% or so done. It has definitely been the most extensive PHP project I have worked on. It's for the most part going to be something only used on my website, but as I'm designing it, I'm keeping customization in mind.
All of the various CMSs that I have tried in the past don't have the capabilities I am looking for. Sure you can write your own modules and blocks, but instead of learning how to code for someone else's software, I'd rather create my own framework and build from that.
The part I have to work on now is making the site much more efficient to the average user (IE faster page generation times, fewer queries, etc). Anyone have any tips for testing sites under load? IE any software out there to emulate 100s of viewers looking at the site at the same time?
I might be reinventing the wheel of this argument, but just to make sure it's articulated: Do we really need to encourage more programmers to reinvent the wheel on the CMS? I feel like that approach should be discouraged for the sake of all of the non-technical users out there who have to deal with engineer-built back-end interfaces that tend to result from projects like what one would use this book to approach.
Even major, enterprise-level CMS solutions would probably benefit from starting with an off-the-shelf solution that has a back-end with a few years of solid UI refinement behind it and extending that with whatever functionality is required, though an API or otherwise.
The perfect CMS may not have been invented yet, but programmers need to realize that they're not going to make a better one from scratch. They're just going to make another mediochre entry for the left column of CMS Matrix. Why not choose one of the dominant options out there, join it's development community, and start working to make it solve your problems?
I haven't read this book and it may well provide a good overview of the basic architectural questions one would want to be familiar with to approach an existing system. And I'm certainly not saying it should be published. But a book like this should, I feel, at least start with a discussion of _why_ you would want to build a CMS from scratch, before it gets into how.
"This is the perfect 'one plus one equals three' opportunity." - Robert Pittman, president of AOL, on merger with Time W
At first I thought wow, a book to write CMSs in PHP, that's a fresh idea. Admittedly PHP has been used to write a great majority of content management systems in use today. More so if you include things like forums in the category. It seems like every developer's first non-trivial PHP project is a CMS of some sort.
But if this book is good enough to formalize the various basic elements of a content management system and present ways to implement them effectively (read: best practices) then I suppose it could be considered valuable. I hope it includes a really big chapter on how to properly use your RDBMS to avoid SQL injection vulnerabilities.
Still, I think a lot of detail is missing from the review. For example, the mention of chapter 5 on how to organize data is not very detailed. Does the author discuss entity models, for example? And when to use them or avoid them? On security, are non-permissive grant matrices discussed? Or alternatives to them? And how they can tie into an entity model, if you're using one? What about more esoteric identity management, like single sign-on systems? Authentication and authorization techniques? What about environment configuration? Deployment?
I think that for a write up that's supposed to be consumed by developers, the reviewer omitted some crucial information that would help me decide whether or not the book is worth buying. The fact that the book is authored by "the guy that wrote the XYZ CMS" doesn't necessarily carry much weight, in my opinion.
Web2.0: I love when people Flickr my cuil and digg my boingboing until my google is reddit and I start to yahoo
A CMS framework is not something easy to build. It's hard to strike a balance between what features to make available and what to hold back for simplicity's sake. This is something I've been trying to accomplish for several years now. I think I've come up with something pretty simple and reliable, but it still needs work and some extra bells and whistles. I'm looking for folks to help out with development of my CMS API/Framework, OnpubAPI. If you're interested check out the website http://onpubco.com/ for more info about the software. I figured I'd post something in the context of this article with the hopes that other folks who are interested in CMS frameworks and/or APIs will see this and be willing to send feedback and maybe even code. --Corey
If you know PHP, shouldn't you be able to extend WordPress or one of the other CMSes written in PHP? I would imagine that in practice, this book would be about as useful as "Java7 GUI Framework Development" (because Swing, AWT, SWT and Qt are not enough choices!)
Instead of rolling your own, why not work on one that's already established that you like? Just because you can write your own, doesn't mean that your results won't be a lot better and more interesting if you start working on existing code.
Let's see. 348 pages at almost $50 USD. Add previously mentioned factor of reinventing the wheel. Add previously mentioned factor of building "an Aliro" by the time you finish the book when you could have just downloaded it instead. Add the fact that there are several high profile CMS projects which are free to download, and having only a mild learning curve. Also as mentioned by another, I've not heard of this Aliro until this article. I'll be frank, I have zero need for such a book, but if I did, I'd owe it to myself to guage the author's talents by scrutinizing the Aliro codebase first. But again, I'd probably just download that instead.
... when it comes to programming book covers?
Admittedly people may decide to make their own as a challenge, but there is just as much to be gained knowledge-wise working with on devs on an existing project that are similar to your needs.
Heck, it is even more logical to take an existing CMS and tailor it to suit your needs.
Not to plug names, but Xaraya, Zikula (formerly Postnuke), and even Xoops are fun to play with.
However, nothing really matches the learning experience of trying to build one from the ground up. But it's best to skip that step and play with a 'working model' so to speak.
I am open source, and Linux baby!
I use CMSs, because I'm a designer and primarily front-end developer. While I can read and write PHP, as well as a few other languages, I lack the programming theory and education necessary to dive into rolling my own client-ready CMS without taking excess time or making something sub-par in performance and security. I work in a small marketing firm as the lone "web guy", and things just have to get done. For many others, I imagine they're in the similar situation where they want to get a personal or self-run site up, and can't, or don't want to, bother with the back-end mechanics.
That said, I have been looking at frameworks-- CodeIgniter, in particular-- as an addition to my arsenal, as most CMSs seem to come lacking that one specific thing you need to do.
Information wants to be free.
Entertainment wants to be paid.
You just want to be cheap.
Many web applications can benefit from CMS functionality, particularly if they are public-facing and part of a company's product. Personally, I like to start with a strong and flexible framework, on top of which I implement a very basic CMS system, that can be used to allow customers to manage all their own content and even the CSS and layout of the site, without requiring them to know anything about the application functionality except where it "plugs in" to the page content.
That said, some applications do not at all fit that model and do net need CMS functionality. That is why I prefer to start with a good framework, not a CMS.
Mir tut es leid, Menschen daß Einfältigfehlersuchenbaumfolgendenaffen sind.
Lets turn this into something usefull. What are the best open-source CMS packages?
At the start of most projects I ask myself if there's an open source application that already exists that fits the requirements very closely. If the requirements are well written (actually, unlikely to significantly change), and an existing CMS fits almost perfectly, I'll use a CMS. But if it looks like additional modules won't do, and I'll have to hack the internals significantly, then I go with a framework.
My company's custom framework gives me something like 80% of what I need to build a simple CMS. Clients are pretty demanding about tweaks. So I've found I'm usually better off building a custom CMS on top of the framework so it's easy to make more custom edits for the client later.
Developers: We can use your help.
Since I receive many contracts from clients wanting web work done I'm prone to suggesting the use of Joomla or some other OpenSource project because I know that these projects will work for most applications and employers don't want to spend $5000 for a custom application, they want to spend $500 for a custom template. However, recently I've been working on several larger sites and have been dealing with these 'hacker' groups on a daily basis and I find the security vulnerabilities being exploited in not only Open CMS systems but also bulletin boards (that you have to buy) and so on. So I've gone back coding from scratch because it is truly the only way to secure a good system in PHP. Custom variables =)
While reinventing the wheel is generally not a particularly wise thing to do, building a new CMS is often one thing where it makes sense.
I have a friend who owns a company specialized in customizing Joomla (a fork of Mambo), and I occassionally do some work for him. His clients are abound. People are often lured by the seemingly low price of a Joomla deployment. PHP/MySQL hosting is everywhere and it's cheap. Joomla itself is free, and it has a huge number of extensions (or "components" in parlance) for different tasks. But most often, these things don't do exactly what the client wants.
And that's where it starts to get ridiculous. The Joomla code itself is, as you point out, nothing short of horrible, and attempting to extend it is a nightmare. The quality of components is generally not much better, and they often step on each other toes. And finally, leveraging a framework tends to be difficult when you have Joomla running, so you have to write most custom code in vanilla PHP. In the end, the time and necessary costs amount to more than a custom-built CMS sitting on top of, say, Django or Rails or Turbogears - usually for a (technically) much worse website
There obviously arn't enough halfass php cms frameworks out there so why not buy a book and contribute to soceity!
A custom CMS is only worth it if you are looking to improve upon what is currently out there. Most of the options out there are pretty awful and hacking them up is a job for the more novice coders. If you do not poses the skills to know what is wrong with a CMS, _why_ it is wrong and how to fix it, then you have no business creating your own CMS. If you want to tackle a project like this, you need to have the dedication to do it right. I wont go into what exactly 'doing it right' is as it differs from person to person, but needless to say it can be simply stated as _thoroughness_.
Speaking from first hand experience, my CMS was an idea on paper for a while before any code was written. If you cannot answer and account for _every_ detail and circumstance on paper, I do not suggest undertaking something like this.
Invexi - a Phoenix, AZ based web design and web development company.
Plone - Technologically Plone is the leading CMS as it's built on top of Zope, a Web Application Server with an integrated Object-Relational DB. Zope basically is what all other web frameworks want to be when they grow up. Rails including. It is considered by many CMS dev-teams to be the holy grail, and most other CMS crews, such as Joomla, Typo3 or Rails usually speak very favourably of it. However the downside of its conceptual superiority can be - of course - performance. Since it takes aprox. 5 minutes to load balance a single instance across 2 or more servers, this isn't that much of a problem and many professional CMS enviroments who have the resources to build their stack around Python (Plone & Zopes PL) and Zope use it. Zope also is the oldest and most mature of modern paradigm systems, dating back to 1999.
EZ Publish - EZ Publish is a widespread mature PHP CMS, with a compareatively large international second market that has grown around it. The main developer is a norwegian company that provides consulting and services for EZ Publish and sees to it that it maintains its overall professional feel.
Typo3 - Typo3 is an Enterprise CMS Behemoth built with PHP. It's a massive piece of software that comes with the most comprehensive set of features in the web CMS field. It has a very large second market with many high profile agencies and system houses offering programming and services. OReilly even has a thick animal book on TypoScript, the Typo3 Configuration language, which sort of goes to show its impact. Typo3 also pratically owns the german speaking market. You can actually make a living as a Typo3 programmer in Central Europe. The next major release due within the next year or two is in the works and is a complete redo of the entire Typo3 stack including a FW called Flow3 that attempts to integrate the purest of modern architectures. As far as that is possible with a classic seperate SQL-driven RDBMS.
Joomla! - Joomla! is a PHP Web-CMS and one of the most popular pieces of software in general. (A Google query usually scores somewhere around a hundred million hits). Installation and operation is insanely easy and it has an impressive featureset. It only has a handfull of user types and lacks flexible granular n-dimensional user right management however - the most prominent missing feature. It makes up for this in ease of use and maturity of the admin interface and the integrated templates. It usually takes less than 10 minutes to set up a ready Joomla site.
We suffer more in our imagination than in reality. - Seneca
And no offense, but if he expects it to gain traction, perhaps 'sux0r' wasn't the best name...
There are multiple class definitions per file, HTML output directly in functions within the classes ...
Chill. There is no silver bullet and no free lunch. Since you're bickering about HTML in the PHP code I gather you would rather build a templating system on top of PHP - which is so pointless, it's silly, as PHP itself *is* a templating language. That's where it comes from anyway. And most PHP crews have noticed that by now (Thank God). Except maybe for some Smarty hardcases that is. Kill one for me if you see one. ;-)
A Web-CMS and/or Framework is there to take the gruntwork away, and if you pick a current day CMS that has 5+ years with 30+ coredevs on its history and don't like the code, chances are you haven't understood it and what it is meant to do in context of the entire stack. Go on and build your own then - halfway through you'll run into the problems all others had back in 2001 and end up with the same mess others started off with. Only that they cleaned theirs up allready.
Bottom line:
It appears you haven't done much non-trivial web developement, otherwise your tone would be a tad milder.
We suffer more in our imagination than in reality. - Seneca
Get it here.
I like the name. It's funny. I don't see how it's worse than any other made up word. (Google, Cuil, Slashdot, Yahoo! Baidu, Drupal)
Of course, in a superficial world, it's titles, not ideas or skills, that matter. And the project certainly isn't mocking that! No sir.
looks neat, but it's horribly ugly
Um.. hello?
If your looking to not start from scratch and still use a framework you might wanna checkout Wildflower a CMS for cakephp. They are in the process of making it a plugin. Because it is built on a framework extending it is easy.
http://wf.klevo.sk/
Additionally, if you don't need to go for open source, (gotta pay for this one) Expression Engine 2.0 should be coming out soon as well, this is built on the codeigniter framework.
http://expressionengine.com/ee2_sneak_preview/