Starting a CakePHP community website / Website Framework

Posted by Felix Geisendörfer, on Jan 27, 2006 - in PHP & CakePHP » Other

Deprecated post

The authors of this post have marked it as deprecated. This means the information displayed is most likely outdated, inaccurate, boring or a combination of all three.

Policy: We never delete deprecated posts, but they are not listed in our categories or show up in the search anymore.

Comments: You can continue to leave comments on this post, but please consult Google or our search first if you want to get an answer ; ).

So I've been thinking of two things recently. One of them was that it would be cool to have a CakePHP community website like Drupal has one, where people can ask questions, publish (ready to use) code. The other one is to create a Website Framework with CakePHP (more about this below).

CakePHP Community

I know cakephp basically supports all of this already but I feel like something more community based would be benifitial. Don't get me wrong, CakeForge and CakeSnippets are great but I think there is a gap between those that demands to be filled. Otherwise every one of us will implement Image Galleries, Content Managment, RSS, etc. over and over again and while it might be faster then it would be without CakePHP it's still wasted time for most of us. So here is where my 2nd thought kicks in, creating a CakePHP Website Framework.

CakePHP Website Framework

So if I use the term "Website Framework" I don't mean a CMS. I mean something that would be in between a PHP Framework and a CMS. Basically all it would do is to help "modularize" CakePHP controllers, models, components and vendor classes into modules that you would call Image Gallery, Page Manager, Localization Editor or Tagging / Comment Tool. This means it would be a very lightweight set of a couple controllers/modules that would support installation, upgrade and activation/deactivation of modules hosted on a central site. Of course this means the entire thing would need to follow certain standards, so some things like "User Managment, Right Managment, Sessions, etc." would need to follow clear rules and most likely be "standard modules" used by the other ones. But I think this would really be something to speed up development even more, and if you want to build a website you could choose from hundreds of modules to start with and be done very fast. Have a look a Drupal's Module Site for getting an idea of how much code should be reused.

Module Design

I've already spent a little bit of time by thinking of how to approach the "Module Design". I think every module should be designed so you can overwrite any function of it with your own code, without having to hack the module itself. So all modules would be derived from one common class "Module". So whenever a module is used the Website Framework will look for a php file called like modules/gallery/custom-gallery.php and check if there is a class CustomGallery to use instead of Gallery itself. This way you'd have very costumizable modules attractive to Programmers and not suffering from the bloat of providing the customization to the end user (like Drupal does).

Outlook

Right now I don't have the time for writing either the community site nor the website framework all by myself in CakePHP. Now while I'll propably be able to get the community thing going with my Drupal/CakePHP solution I'd be interested to hear about people's oppinion about the Website Framework and see if there is enough interest to start a common project. Every comment on this post will be appriciated!

Update: I've just talked to gwoo about my ideas and he told me about an upcoming feature for 1.0 called plugins. As I understood him they are going to be a folder based seperation for "controllers, models, components, view etc." into little "mini-apps". So thinking about this feature, my module design would propably base on these "plugins" since they are the first step of organzing all the MVC parts by their user-related functions.
He also suggested not calling the entire thing a "Website Framwork" but rather a WoS (Website Operation System), or based on my 2nd idea MMS (Website Managment System) using the name CakeMMMMMs. What do you think?

--Felix aka the_undefined