propelorm/Propel3

Is it still in development.

Vahanerevan opened this issue ยท 12 comments

Hi ,
I am big fan of Propel and use it for many projects.
Thank you guys it's just ideal for any project , flexible and ide friendly.
I can see last commits 5 month ago and silence everywhere .
I would like to ask if project still in development ?

Is it alpha now? Beta? Dead? What to expect from it? Is there anyone using it?

I'm working on it but afaik I'm the only one, by now.
The project is in development state: my next PR should fix all agnostic tests, which means that the project works on Sqlite, at least. After that,I'll work on mysql, postgres and so on.
By now, it's not usable: I'm doing it php 7.4+ and I'm introducing Twig to increase maintainability and simplify code generation.

To be honest, I don't know how long it could take: I'm giving it all my free time, but it's not more than a couple of hours a day.

To easily show the progresses, I'll change the todo list into issues and milestones and I'll add some badges, to show which tests are green.

@cristianoc72 thanks for your work man. but it's not more than a couple of hours a day - this is by far more than average, don't get lost!

@cristianoc72

Wow! I'm surprised to see that there's still someone working on Propel 3. Props! ๐Ÿ’ช

So what's the plan with this project? You say that it's not usable. Are you working towards a specific milestone so then someone (you?) can start using it?

I'm asking because I'm slowly working on another fork (of Propel1): https://github.com/propeller-orm/propeller-orm

But my philosophy is different: instead of completely rewriting it, we're doing small incremental changes, making sure everything keeps working. That's because we use it on a real mature up-and-running application being in active development. Thus the strategy. The overall pace is slow, but the advantage is that it's actually improving a real working project from day 1 and does not take months/years to get to a usable state.

I wanted to suggest my help here, but I'm afraid that it's practically impossible for me to work on this, unless it's actually used in our application.

nymo commented

@e1himself would have been a better choice to migrate to propel 2 and contribute to it instead of working alone on such an old legacy code. The migration from 1 to 2 wasn't so hard.

@e1himself the current status is: I complete the refactor of Propel3 builder system, which now uses Twig as template engine. It allows to move some render logic into templates and increase the maintainability.
By now, I'm becomeing crazy to adjust the test suite ๐Ÿ˜„
After that, I'll create a list of issues and a milestone (I'm slow as a snail but it's muuuch work).

The problem I encountered in refactor Propel is that it's based on large peaces of old code and all its parts are closely coupled each other, so it's quite difficult to refactor small pieces of code without crashing almost everything.
This is the reason why @marcj started Propel 3, rewriting most parts from scratch.

I agree with @nymo : migrate and contribute to Propel2! Propel 1 has an almost totally unmaintainable architecture and this is the reason why we started Propel 2, some years ago. Migrating from 1.7 to 2 version is (I suppose) very easy:

  1. understand the Propel 2 configuration system and adjust the configuration.
  2. remove all your Peer classes and execute all your queries via Query classes (which are still present since Propel 1.5, if I remember correctly)
  3. leave the schema.xml as is except for the validation system, which has a new way http://propelorm.org/documentation/behaviors/validate.html . Imho you should remove the validation from the schema at all, because validating data isn't an orm business and you could perform it with an external library before you save the data.

Propel 2 is based on the same patterns as Propel 1 (active record) so there's no "logical" change of mind to do.

Propel 3 is a complete change because it implements the data mapper pattern (well, to be honest we could still use active record as a layer on data mapper) which brings Propel 3 closer to Doctrine then to Propel 2 (aaarrrghhh ๐Ÿ˜ฑ )

would have been a better choice to migrate to propel 2 and contribute to it instead of working alone on such an old legacy code. The migration from 1 to 2 wasn't so hard.

@nymo Thanks! I will check the option to upgrade to Propel2.


@cristianoc72

Got it. Thanks!

A couple more questions:

  • Will there be a realistic migration path between Propel2 and Propel3 to upgrade existing applications?
  • Do you pull updates from Propel2 upstream into Propel3? (i.e. will Propel2 contributions benefit to the future Propel3 impelmentation?)

Though I would pipe up 2 years later, and ask how it's going?

I'm afraid the project is dead: I have no time at the moment and all other Propel contributors are on Propel2 (they're doing a terrific work).

@cristianoc72 thanks for all your work and being so honest with us.

Thank you @cristianoc72 for your work! ๐Ÿฅ‡

Since Propel2 is still active, would it be okay, to mention this in the README.md and/or in the project description? Currently it says "Version 3 of Propel ORM replaces Propel2, which is not maintained anymore." which apparently seems to be the other way around. ๐Ÿ˜‰