"Greeble" is a coloquial term used when creating physical or virtual models to describe small pieces of often random detailing that break up a surface to add visual interest.

In this context, Greeble is an open-source content management system written for PHP 5.3, released under the Gnu General Public License version 3. Since PHP 5.3 isn't out of beta yet, the current code is hacked to provide the same interface and functionality in PHP 5.2.

The core tenet driving Greeble is ease of modification. When appropriate, test-driven development was used to help make sure the code is broken down into easily comprehensible units. The code is written to be self-documenting, with thorough commenting throughout and descriptive header comments. I took great care to make the class interfaces as useful as possible.

Greeble uses the "Model-View-Controller" webapp design pattern, attempting to separate the data structures from the HTML code from the scripts that manipulate the two. This aspect of Greeble needs work and will likely be modified to better implement MVC in later versions.

The heart of Greeble is the abstract DBRow class, whose implementation in this version is MySQL (but it can be extended for other database types). DBRow makes synchronization of PHP objects with database table rows easy as pie. Without worrying about forming queries and handling errors, development of new content management modules is very concise and rapid.

While most content management systems are designed to be customized from an easy to use browser-based GUI (graphical user interface), Greeble is aimed more at the experienced PHP developer with the assumption that each individual developer will prefer to modify the behavior of the source to suit his or her individual needs. As such, no web interface exists yet for customization, but one is planned for Greeble 3.4.

Greeble 3.3 was developed entirely by me as a personal project. It began life as the "Spacebrick Web Framework", a very simple CMS for my portfolio website, spacebrick.net, but I enjoyed the challenge so much that I couldn't stop and the code went through three very different versions before I officially named it "Greeble."

My hope is that Greeble will be useful to independent developers and that as more people modify and improve it it will become something more, but it is important to say that Greeble is not for everyone. See the alternatives page for descriptions of other open-source frameworks that may be more suitable to your needs.


Happy developing!
-James Bailey
(Rob Oplawar)