SitePoint Sponsor

User Tag List

Results 1 to 15 of 15
  1. #1
    Resident Java Hater
    Join Date
    Jul 2004
    Location
    Gerodieville Central, UK
    Posts
    446
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Post Framework / CMS / Portal Ideas

    There are many PHP frameworks, portals and CMS’s out there, however very few imo have are strong enough for enterprise scale programming, or they have a poor feature set.

    With all the good PHP programmers on this site, I was wondering how many people here would be keen to work together on a good PHP based framework / CMS / Portal system. I have a number of ideas that I plan to implement that would make a very powerful Portal / CMS / Framework in my spare time, and I was wondering how many other people would like to help contribute in some way towards this.

    One of the concepts I have been keen on is the idea of a “tree” based system that works like a virtual file system for your controller in the MVC. Using design patterns with the tree system would allow for an extremely powerful controller to be built.

    The tree system can be paired with some sort of interceptive filter system. By doing this, functionality can be maximised without compromising speed. For example, when we read something from the tree we can define the following filters

    • Access Control List
    • Logging / Hit counter
    • Cache (If suitable cache is found it skips the rest of the filters)
    • Business Logic / Model (code Module)
    • Template / View (WACT or XSL based system)
    • Cache (If the node is needing to be cached, this post condition filter handles it)

    If new functionality is needed a new filter can be put into the VFS hander. Likewise if one doesn’t need to work about something like logging, it can easily be removed (provided other filters are not dependant on it)

    Now one of the nice things is if everything is held in a tree structure, is that it automatically makes our system search engine friendly. For instance we can call /index.php/Path/to/Node/Data. This is logical. On top of this Access Control lists can be directly be implemented into the structure of the main file system tree, likewise other settings can also be tagged/bound to nodes of the tree (and these settings will be inherited for child nodes unless further overriding takes place). This can be a good way to refine page layouts (for instance /forum in the framework tree could be set so the side navigation bars are removed by overriding a template attribute in the database).

    There are very few PHP CMS’s that hold data in a tree, and what ones do are either very slow (because they use bad algorithms like the Adjacency list in EZ publish). Also, many of these systems are limited to holding CMS data (i.e. HTML or XML). I plan to have a system where nodes have a ‘object type’ attribute (this is like a file extension / MIME type in file system terms). This would be needed as this system will not be limited to a basic CMS, it will be able to hold (reference) other data in it, such as shopping cart items, survey data, etc. Because each of these types of data use different data schemas this data is not held directly in the tree (This would be stupid as data would need to be in XML format to be stored as a BLOB, which is bad as it’s hard to do queries which involve sorting / search criteria). By using this MIME system where the responsibility of data storage is delegated to the model than manages it (so the shopping cart module will have it’s own tables for cart items, etc etc).

    One of the big advantages of this tree system is you can partition your site in a “natural” way that is easy to crawl by search engines, and modules do not need to code any system to manage categorisation (because the Virtual File System Tree / Controller does all this for you, along with permissions, caching etc).

    Built this in with something as powerful as WACT’s template system, some XSL for the CMS side (so you edit XML, and not HTML like Bitflux does), and a powerful user system that can use both SQL and LDAP based databases, and a bunch of other useful API functions (such as Form validation classes that plug into the template system say using a special validate attribute in input forms (for instance < input type=”text” validate=”email” name=”email” />) then you would be laughing.

    Another thing that all CMS’s and frameworks lack, are good search engines. One thing I would do is a have a central search system where objects would pass data they want to index to a search API. This would extract out things like keywords etc and there would make sure these go in a keywords table that would list all the nodes in the tree that have this keyword (this could be further improved so that keywords can be part of an attribute, so then if you wanted you can set up specialised searching for say like all shopping cart items under node x with y in their ISBN number). I have had no end of trouble recently in my new job working on a massively complex DB schema for one of the UK’s leading mobile phone distributors. A single search on this complex DB could involve about 7 different JOINS, use of LIKE=’%WORD%’ everywhere (in case you wondering I didn’t design the schema). An indexing keyword system that links data with attributes as well as the tree node would have removed these kind of complex searches, and hours of SQL debugging.

    CMS editing could be designed in a similar way to Bitflux where you edit XML. Instead of all the cruddy JavaScript WYSIWYG HTML editors, content editing can be split into editing of data (in XML format), and then editing styles say like a WYSIWYG CSS editor. This means people maintaining content are limited to preset styles that reflect the site design. Likewise it makes it easy to transform data to formats like PDF, etc.

    Anyway, is interested in these ideas? For what I know, no other PHP framework / CMS / Portal system have a system as powerful as this. With PHP5 now out, it is the perfect way to demonstrate the new OO power of PHP!

    I sure other people on this forum have some great ideas that could also make a project like this even better. As it is WACT offers some of the basic low level functionality I have pointed out here, as does Bitflux.

    I know there are many frameworks / CMS’s and Portals out there. However the feature set of things like Tiki Wiki, Xaraya, *Nuke, XOOPS, and many other Portal systems don’t come close to this when it to power under the bonnet. Likewise this tree system extends the MVC model 2 pattern to new levels (Maybe this is the MVC Model 3? :-P). WACT is good, but it doesn’t offer things like the search API, User system and Permissions / ACL system. Like wise Bitflux is good as it has a neat system for making content using XML, but can not be used like a framework for making new functionally (shopping carts, forums, surveys etc). Ez Publish is OK, but slow and bloated imo.

    If anyone is interested in working on a project like this, feel free to contact me at Jason – AT – hybd - DOT – net (or reply here). With a little bit of support from fellow community members we could make PHP’s next “killer” application. Even if you don’t want to join a project like this, it would be nice to know what peoples opionions of this are.

  2. #2
    SitePoint Zealot
    Join Date
    Feb 2003
    Location
    Virginia
    Posts
    143
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    You sound like you're speaking about Limb. Currently the projects has a internal FS for permissions and uses a sweet and very functional intercepting flter pattern. As for expandability it seems like LIMB will be one of the first of the new age frameworks to achieve some of the things you spoke of.

    Though still new to the project I have allmost completed my examination of the system front to back and I'm impresed with it. There are still some places that are rough around the edges and some things that will get reworked from the ground up, but for the most part it's a great tool and I expcect that within montchs of the next few releases others will began to agree.


    Later

    PS: Limb is 100% extendable.

  3. #3
    SitePoint Addict
    Join Date
    Apr 2004
    Location
    Melbourne
    Posts
    362
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Another one that encapsulates data in a tree is MySource Matrix http://matrix.squiz.net/. It's built around the idea that everything is an 'asset', and these 'assets' are extended to provide different functionality.

  4. #4
    Resident Java Hater
    Join Date
    Jul 2004
    Location
    Gerodieville Central, UK
    Posts
    446
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by Resolution
    You sound like you're speaking about Limb. Currently the projects has a internal FS for permissions and uses a sweet and very functional intercepting flter pattern. As for expandability it seems like LIMB will be one of the first of the new age frameworks to achieve some of the things you spoke of.

    Though still new to the project I have allmost completed my examination of the system front to back and I'm impresed with it. There are still some places that are rough around the edges and some things that will get reworked from the ground up, but for the most part it's a great tool and I expcect that within montchs of the next few releases others will began to agree.


    Later

    PS: Limb is 100% extendable.
    So are you developing LIMB? I heard harry talk about it the other day. I've just had a quick peep at it in the last 20 mins, and it looks pretty good. As you say there are parts that rough and places where I would have changed the design/arachitecture. The overall concept of it does encapsulate a lot of what I think a real site framework should cover.

    The concept of a tree with an intercepting filter is a very important thing to me and i don't see why other projects take this approach instead of the crappy *Nuke approach.

    I'd like to see something like this ported to PHP5. PHP's rehauled OO system allows one to make a lot cleaner code, not to mention improved XML support, etc, which removes the need to use bulky add on libraries

  5. #5
    SitePoint Member seregalimb's Avatar
    Join Date
    May 2004
    Location
    Russia, Penza
    Posts
    8
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by MiiJaySung
    So are you developing LIMB?
    ....
    I'd like to see something like this ported to PHP5. PHP's rehauled OO system allows one to make a lot cleaner code, not to mention improved XML support, etc, which removes the need to use bulky add on libraries
    We are planning to port LIMB to PHP 5 to the end of September.
    LIMB will be greately refactored (especially tests) and optimized.
    It also will permit us to use Creole as DB abstraction level and WACT as an external library.

  6. #6
    SitePoint Addict pachanga's Avatar
    Join Date
    Mar 2004
    Location
    Russia, Penza
    Posts
    265
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by MiiJaySung
    As you say there are parts that rough and places where I would have changed the design/arachitecture. The overall concept of it does encapsulate a lot of what I think a real site framework should cover.
    Glad you're interested! Yes, there are a lot of places we'd like to improve and we're working on it. As always it's the matter of time and human resources... Any sort of help is improtant for us and will be greatly appreciated.

    As for PHP5, we do have plans to port LIMB. I think it will be the end of the August - beginning of September, when we'll finish porting(Zend contest time ).

  7. #7
    SitePoint Addict pointbeing's Avatar
    Join Date
    Jun 2004
    Location
    London, UK
    Posts
    227
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I'm trying to get a handle on Intercepting Filters/Filter chaining right now...I think it could take a while

    As for your project - I would love to see a touch more clarity about what you want to build. A CMS is not a framework is not a portal. I honestly think (and this isn't even specific to programming) that if you have a clear target product you want to achieve, you'll have more luck achieving it than taking a "let's do a bit of programming and throw in a whole lot of patterns" approach.

    And there's the rub - there are countless "I don't know if I'm a framework or what" PHP projects out there, all following patterns to the letter, and none of them with any real value beyond their intrinsic design qualities. Even if yours turns out better than any of them, I honestly feel that any 'killer app' will have to step outside that trend. I guess what I'm saying is that my definition of a killer app is something that will be of interest to people beyond other PHP programmers.

  8. #8
    SitePoint Zealot sleepeasy's Avatar
    Join Date
    Sep 2003
    Location
    Bristol, UK
    Posts
    145
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by pointbeing
    As for your project - I would love to see a touch more clarity about what you want to build. A CMS is not a framework is not a portal. I honestly think (and this isn't even specific to programming) that if you have a clear target product you want to achieve, you'll have more luck achieving it than taking a "let's do a bit of programming and throw in a whole lot of patterns" approach.
    I think the LIMB developer's know what they're building.

    Read the about page and if you don't think they have a clear goal then I don't know what you expect.
    Always open to question or ridicule

  9. #9
    Resident Java Hater
    Join Date
    Jul 2004
    Location
    Gerodieville Central, UK
    Posts
    446
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by pointbeing
    I'm trying to get a handle on Intercepting Filters/Filter chaining right now...I think it could take a while

    As for your project - I would love to see a touch more clarity about what you want to build. A CMS is not a framework is not a portal. I honestly think (and this isn't even specific to programming) that if you have a clear target product you want to achieve, you'll have more luck achieving it than taking a "let's do a bit of programming and throw in a whole lot of patterns" approach.

    And there's the rub - there are countless "I don't know if I'm a framework or what" PHP projects out there, all following patterns to the letter, and none of them with any real value beyond their intrinsic design qualities. Even if yours turns out better than any of them, I honestly feel that any 'killer app' will have to step outside that trend. I guess what I'm saying is that my definition of a killer app is something that will be of interest to people beyond other PHP programmers.
    I have used the 3 terms loosely here. it's not because I don't have solid plans, it's because I believe all 3 systems have a lot in common....

    The original idea was to build a CMS, where users can manage their own content, without being concerned about design. (Now a lot of CMS's use nasty JS based WYSIWYG RTE's, which make bad HTML, which allows one easily to break the site design). I wanted a CMS where the site admin could define specific types of content (for instance, a FAQ section has set attributes, such as a Question, Answer and probably date, user and category attributes). I would be nice to make it so people can publish to these strict content types in order to keep a consistent site layout, with the risk of screwing stuff up. There are portals that already do similar things. Look at PHPNuke and Postnuke, they have FAQ, Downloads, Web links. However each of these systems are hard coded. I do not consider *Nuke to be a CMS, it's more of a portal because it of the way it organises data.

    On the other hand I also wanted to make some add on bits, such as a shopping cart, forum and survey section.

    It seemed clear to me behind al this was the need for a framework.

    Hence I use all 3 terms loosely. The main goal at the moment is the framework side of things. Once that's up it's easy for others to code in extra models/modules. The framework side of things is the most important to me, otherwise i would have used PHPPuke :P

    I guess the term "Application Server" is better all those slash separated terms i've used :P

  10. #10
    SitePoint Addict pointbeing's Avatar
    Join Date
    Jun 2004
    Location
    London, UK
    Posts
    227
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by sleepeasy
    I think the LIMB developer's know what they're building.

    Read the about page and if you don't think they have a clear goal then I don't know what you expect.
    I'm sure they do, I really haven't looked into it. Which is probably why I made no reference to Limb my post whatsoever...

  11. #11
    Non-Member
    Join Date
    Jan 2004
    Location
    Planet Earth
    Posts
    1,764
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I would love to see a touch more clarity about what you want to build.


    I get the sneaky feeling that your trying to attempt some sort of God CMS/Framework/Portal whereby your design will accomplish all three ?

    And then some. I think that this is a bad idea,

    With three ideas rolled into one, some ideas are not really going to make it in

    1) due to lack of time and resources
    2) may find that your file system based controllers work well with one idea (id Framework) though not a Portal - an entirely different application altogether ? So you'd need to refactor for this with your current script as is - bad idea as you've not designed for an alternative approach have you, as your script would stand as is ?

    There could be a few other reasons ? I would proberly be interested if you were planning a Framework around the object based tree/front controllers and only a Framework, though no more than that.

    Think your thinking too big and you should have the CMS and Portal pluggable later once your Framework is finished, tested and distributed - then you can call upon other developers to contribute no ?

  12. #12
    Non-Member
    Join Date
    Jan 2004
    Location
    Planet Earth
    Posts
    1,764
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    After my last posting, I've just read your last post and now note that you've arrived roughly at the same view

    Oppss

  13. #13
    SitePoint Zealot sleepeasy's Avatar
    Join Date
    Sep 2003
    Location
    Bristol, UK
    Posts
    145
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by pointbeing
    I made no reference to Limb my post whatsoever...
    I see that now aswell, which is weird because I have roughly 10 times more alcohol in me now than I did when I wrote that reply.

    Sorry.
    Always open to question or ridicule

  14. #14
    Custom User Text tonyskyday's Avatar
    Join Date
    Feb 2004
    Location
    Virginia
    Posts
    240
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    MiiJaySung,
    Too bad this is a php forum and not a python one, since Zope seems like it would be right up your alley.

    -Tony

  15. #15
    Resident Java Hater
    Join Date
    Jul 2004
    Location
    Gerodieville Central, UK
    Posts
    446
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by tonyskyday
    MiiJaySung,
    Too bad this is a php forum and not a python one, since Zope seems like it would be right up your alley.

    -Tony
    Well, no, I'm looking to build something myself, (and maybe join an existing project, given the rright circumstances), mainly because PHP lacks something like Zope.


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •