Posted on 4 Comments

Qcodo – PHP Development Framework – rails for PHP ?

So, Qcodo. I’ve seen a tiny bit of “wow” and a lot of “hadn’t heard of that“. It’s clearly not on the buzz radar… maybe because it’s for PHP 5 only, and many people haven’t yet taken the step to run it (please do, it’s good stuff!)

Anyway, I’ve been told about Qcodo is that it’s like rails for PHP: very rapid web development, and with MySQL schema, app and queries automatically built based on the data model you design (which is where development starts). That’s definitely the right order of development! 😉

I’d say, take a look over the holidays, write/blog/scream about it… could be very very cool stuff. Perhaps drop me a comment or msg to tell me about your experience. I’m just curious.

Posted on 4 Comments

4 thoughts on “Qcodo – PHP Development Framework – rails for PHP ?

  1. I had a very quick look at Ruby on Rails a few months back and I was very impressed, but having more PHP experience that Ruby I’ll definately have a look at Qcodo.

    Andrew Gilfrin.

  2. Hi,

    I just had a quick look at Qcodo. (Installation was a bit of a bummer, because the php use shorttags instead of .)

    Judging by the demos (http://www.qcodo.com/view.php/demo_1_live and http://www.qcodo.com/demos/demo_part_2/) this seems like a very tight mapping between the DATA model and the application.

    Now I have been struggling for some time with the problems concerning model driven application development. (I started out as a USoft and Oracle Designer developer).

    IMO One of the major recurring problems here is to find a convincing method to bridge the gap between the information offered by the (data)model and the business logic underlying the application.

    More often than not, the framework is greedy for the information that is readily accessible – the database metadata.

    This results in a very tight coupling between items from the data model and items in the application. For example, each database table results in one application form, each column results in one item on the form etc. Qcodo seems to be such a framework.

    Of course, everyone recognizes that this tight coupling is Ok when you’re starting from scratch, because it quickly delivers a set of functional elements without any extra effort.

    After the initial generation, you will be rapidly confronted with the need to make the application knowledgable of the business logic as well as the constraints imposed by the data model.

    Qcodo seems to tackle this problem by starting a series of manual coding steps. Now, I don’t oppose to manual coding – not at all. But what is apparent is that from that point on, the developing process gets entangled more and more with the pertinent framework. It requires a non-trivial amount of knowledge of the framework’s codebase.

    Another point of attention is that the manual coding is not explicitly tied to a formalization of the business logic. It requires a non-fomalized documentation effort of the programmer in order to keep the application code maintainable for other developers.

    Suppose the development process would be well underway after the initial generative steps. How would development be impacted by a sudden change of requirements? The headstart made initially is really no good if we cannot propagate data model changes back into our customized code.

    Now – I do not want to put down this Qcodo framework. I recognize that a framework like this can provide a headstart wich is good of course. However, at this point, I do not think that this is flexible enough to support a complete application development cycle.

    I believe that a generative framework will need some sort of repository to store the business logic and the relationship between that and the data model. Ideally, it would be possible to have full interchange between the repository data defining the business logic and the repository data defining the data model. In other words, the framework itself should be (repository – meta)data driven, whereas QCodo seems to be code driven (developer knows what code to cut and paste).

    This code driven approach does make it usable to get a headstart – IMO, not to provide the basis for full blown application development.

    Roland Bouman

  3. I’m curious why you think frameworks like this don’t allow data model changes to propagate back into customized code / business logic.

    Qcodo was designed specifically to tackle this issue. Customized code are written in subclasses to generated “ORM” classes. This means that any customizations will always remain, despite constant (and encouraged) regenerations of your ORM after data model changes.

    Moreover, the video demos show how even after you’ve fully coded any particular screen (including full-scale UI and visual treatment), you can still make changes to the data model and see those changes reflected, with the UI/Visual Treatment you’ve already designed for that form.

    Lastly, there is a common misconception that Qcodo is a “good start” as a framework, when in fact Qcodo has actually been around for over 4 years now. It was only recently that the proprietary parts of the framework were rewritten (to avoid any and all IP issues) so that Qcodo could be open-sourced. But the framework, in its earlier forms, has been in production in a wide range of enterprise-level applications supporting organizations from small businesses to Fortune 500 companies to large government agencies since late 2001.

    –Mike Ho

    P.S. PHP Short-Tag dependency was fixed — the dev release of the framework (under the Support section of the website) reflects this.

  4. i have using only cakephp framework thanks for sharing another Php framework i will check it out.

Comments are closed.