I have had various one-on-one conversations with quite a few of you about this, but I figure a public post about this is long overdue, and it is about time to try and get some feedback from the larger community on this, overall.
How Far We have Come
For those of you who have followed the history of Qcodo, the CodeGen / ORM design and implementation is by far the most mature layer of the stack, which started back in late 2001. Second to this is the QForm/QControl architecture, and then finally the javascript and AJAX components on top of the QForm/QControl architecture. And of course throughout this period, parallel modules (e.g. QcodoQuery, Internationalization, Email and Web Services, etc.) have been added to the mix as well.
Analyzing the strengths and weaknesses of Qcodo (both in terms of the code/framework as well as the community/project), I feel that one of Qcodo's main strengths is its centralized, modular approach to web application development through consistent, predictable patterns.
For example, with CodeGen, all of your data objects and relationships work the same way. With QControls, all of your widgets work the same way. With the way core/customizable classes are laid out as well as with the way generated/customizable ORM classes are laid out, customizations from core or generated classes all work the same way.
Given the history of the evolution of Qcodo, unfortunately (but not too surprisingly) stability reflects maturity. While I think everyone agrees that the CodeGen and core framework architecture is rock solid, people still do find bugs and issues with the more recent AJAX functionality, and things like QcodoQuery is still being added to on a regular basis.
Where We Are Now
But despite a few hiccups and even despite Qcodo's continued “Beta” status, with over 35,000 downloads nothing has prevented a whole host of companies, “Web 2.0” products, non-profit organizations, government agencies and consulting companies from building great applications using Qcodo. I know the “Qcodo Showcase” page is long overdue (and it is still coming... I promise =), but just to name a few: AnchorFree, Barefoot Solutions, CaseySoftware LLC, Chess.com, Crowd Favorite Ltd, Data-Imagery LLC, Intrinsyx Technologies, Jabbits, LifeTango, Lockheed Martin, Media Net Link Inc., NASA, Podango, Progrexion Inc., Singles,com, Stanford University, Table XI LLC, TurtleFox, Uloop, and of course, Quasidea Development LLC. And of course there are tons of other companies, products and organizations that I am forgetting at the moment. (Please feel free to reply to this and let everyone know!)
However, looking at the landscape of toolkits and frameworks out there in the wide world of web development (slight pun intended), there are many tools out there that are on par with Qcodo, and there are many others that would even compete favorably against Qcodo.
Now, one of the things that keeps appearing in the feedback is the lack of sustained improvements of the framework over the past 2 1/2 years since it was initially open sourced. There would be some periods of accelerated release cycles where improvements and bug fixes were put in very regularly, but then there would be some periods of stagnation as well.
And of course, the other common complaint is the lack of complete documentation. While the examples site and even the API guide is a good start, you can always have and people will always need more, more and more.
Where We Might Be Going Next
With all this in mind, and given the evolution of Qcodo, and weighing Qcodo's unique strengths and current weaknesses against what's currently available in the market, I have started to see a lot of value in looking at how Qcodo might be able to integrate with other existing, stable toolkits and frameworks that are in wide use today.
Again, many people agree that Qcodo's strength is in its core engine, code generated ORM, and consistent modularized approach... and especially considering it's maturity and stability, there is no reason why any of these would change.
However, when you look at the world of JavaScript toolkits, Qcodo's JS solution does not necessarily offer anything that is significantly more unique or better than some of the other toolkits out there. In fact, I think everyone will agree that some of the pure JS frameworks out there like YUI, Dojo and jQuery have quite a leg up against Qcodo.
Similarly, on the server side, when you consider some components like I18n, or even some unwritten functionality like PDF, centralized Search, or ServiceClient classes, the functinality in the well received Zend Framework has some significant advantages there, as well.
Over the past month I have spent more and more time looking at these various solutions, and I am hoping to get some feedback from the community on this:
** Is there value in having Qcodo's core start to integrate with some of these other toolkits where Qcodo's version of the functionality being offered is non-unique, below par, or even non-existent?
** Are there specific frameworks, or functionalities in some of these frameworks, that you feel are important to consider?
** With JS toolkits, specifically, is there a specific JS toolkit that you would recommend? And if so, why?
Something to keep in mind: whatever the decision or decisions that we make on how we want to move forward in terms of integration, note that the following principles will always be in place:
** Qcodo's strength in its core engine and Code Generated ORM
** The consistency in Qcodo's approach to coding, design, and customization
** Adherence to all XHTML, CSS and JavaScript standards
** Solid Object Oriented Design
Therefore, “integration” from Qcodo's point of view will not be simply a library of files that get included with the core release. But it really would be a much deeper level of integration. This is the only way that Qcodo could continue to offer the consistency in approach that it has been over the past 2 1/2 years.
It would definitely helpful to hear people's feedback, especially with these last points in mind. It's been a great 2 1/2 years thus far... here's hoping for many, many more.
I look forward to hearing what everyone has to say!