Quote from: xwisdom at Dec 09, 2005, 12:03 PM
1) Complexity - What is requires to develope code using Propel? I see where jason has pointed that there will be docs to help users setup phing, propel and creaole. This concerns me very much. How easy will it be to develope and package apps in MODx should we go the propel road? Is this a point an click experience? If not then that would dent the dream of a Visual Experience? Another thing comes to mind is access levels. Would a developer need special access to his/her server to run these third party tools?
Patience, I will have a demo as soon as possible for everyone to review. And this will not affect end users at all, other than making it even simpler for them to write snippets that interact with the core (without having to write one-off SQL statements that might break on the next upgrade). Developing and packaging apps with the core, regardless if it’s implemented as is or with the object oriented Propel core is not being changed. We can certainly look at providing ways for users to generate user-defined objects, either via a manager tool or on the fly (e.g. using reflection and visually editable XML definitions or similar), but that is not the purpose of this exercise.
Quote from: xwisdom at Dec 09, 2005, 12:03 PM
2) Performace - Propel is NOT a database abstraction framework, right? It’s an OR mapping framework. Propel uses Creole for DB abstraction, right? My question then what are we pursuing? DB abstraction or OO database?
Propel’s OO layer will most likely be used inside the core APIs which IMO adds processing overhead to these APIs. The performance will not be the same as if we were using straight creole/dbapi or standard SQL syntax, correct?
You are correct, Propel is responsible for the OO mapping and uses (currently) Creole for the DB access layer. And I am going after both OO and DB abstraction. And no one yet knows if the overhead is more, but so far, as I’ve said, indications are good that the framework I’m generating will be just as fast, if not faster than the current implementation. There is no reason to think that the performance will significantly degraded because we are using an OO model on top of a data access layer. In some cases, depending on how the original code was implemented, it will actually preserve resources and be equally as fast.
Quote from: xwisdom at Dec 09, 2005, 12:03 PM
3) Scalability - How well does propel scale when we start talking about hundreds of tables? Sure MODx might not use so many tables but what if someone was to use MODx to create such an application? How well will such an app function under MODx? How many request/second will such a website be able to handle?
We are doing nothing but improving scalability at this point. By introducing transaction support, the Memento pattern for keeping cached objects that are unchanged (and persisting only the actual changes to specific attributes of an object, rather than an entire row of data, as occurs often now), and other tried and tested abstraction patterns, we are making it very easy to build enterprise-class applications against real databases, as well as preparing for the migration to PHP 5 as the rest of the world leaves 4.x behind. And with Creole, you still have access to write optimized SQL queries against the databases; you could craft the largest, richest application in the world, with every feature of Oracle utilized to it’s fullest, or you could choose a custom set of objects using our object model if your prefer (generated or hand-coded). The possibilities and opportunities we will be creating by adopting this architecture are simply undeniable in my view.
Quote from: xwisdom at Dec 09, 2005, 12:03 PM
The Visual Dream is to enable developers to use the MODx interface to do everything from building and packaging web sites and web apps to deploying such packages. Developers should never have to use the command prompt ever.
Again, this all to help make collaborative development of this open source software a real possibility. With the current codebase, it is relatively impossible to refactor the code easily, or even manage which code you need to change or might affect when you do change something. It will reduce redundancy, and reveal all sorts of new possibilities that WILL help provide us with a path to realize this end-user web site nirvana where they can build anything by pointing and clicking and filling out a few form fields.