Open boenrobot opened 1 year ago
Let me comment on this one. I think we have mainly 3 approaches here:
1) just keep ZF1 running with as little changes as possible 2) 1+ let's do some minor enhancements to functionality, but maintaining backward compatibility and write down possible clashes 3) keep evolving towards strict type-ing, because new PHP enforcing that, while maintaining older v7 versions.
Imo 1+2 are for people like myself, running bunch of actively maintained ZF1 projects, expecting as little unnecessary work as possible.
3 is for people pushing towards Linting with all the types and stuff with no budget restriction on existing code rewrite/adjustments.
That's the summary of what I can see here.
Now, 1 and 3 are incompatible. So there isn't any real approach how to keep everybody happy. At least until we are supporting all 7 and 8 versions. On top of that, I think we are nearing inevitable clash with higher PHP8 versions. But that's another story.
Maybe we can give up keeping this as one project/repo/main version? And have 2 versions to keep happy everyone? Sure, this will add some manual work, like porting fixes and small enhancements, but can do the job.
I haven't any strong opinion on what is better, just like to find some conclusive answer.
Nearly all apps that were written originally for 7.1 can without much work be updated to 7.4 and not much work after can get to 8 & 8.1
I think as this project moves forward it should look to deprecate the older PHP versions say 1-2y after the end of security patches, and that time window needs to also depend on blockers for newer PHP versions.
The main reasoning for me to keep ZF1 going imo is not itself to stay on very old PHP versions but to know that the framework is getting upgrades for supported PHP versions and it does not bring in sweeping changes that will require major rewrites to existing projects. Where its easy to support older versions then great do so, but if its blocking adding 8.3 support and all we need to do is raise minimum version to 7.4 then I say that is reasonable.
All my ZF apps are now on PHP 8.1 and starting to be tested on 8.2 shortly.
As for new features, I am not opposed to it, ie I contributed a Sendgrid SMTP library, may have not been the best idea to put it in as then it becomes responsibility for the project to maintain but at the same time say Captcha V2/3 may be a good idea as its a progression of the now broken version in the library.
A zf1-future-extras may be an idea for community supported plugins, but sometimes the plugins need to change core ZF functionality that is private/protected and it can be hard to implement a plugin without it being in the core due to limits on how extensible ZF1 is.
I'm going to have to hang on to 7.4 for now until some of these bugs for 8.1 get resolved. I will move on to 8.1+ as things move ahead. I can throw a little $$ at these issues to compensate for peoples' time if necessary, I don't mind doing that if it helps get things done more quickly, but I need stability before moving into 8.1 for a couple of my projects. Just opened a new bug regarding named parameters.
As a continuation of the discussion in #360 ...
This project is very unique in what it's supposed to provide, and there are perhaps different equally valid views on how far it needs to go, especially in cases where full cross version compatibility may be impossible.
I'll start with my opinion on what I think the guarantees and policies should be. Further points and/or further nuance discussion is welcomed and is the whole reason for this issue.
Zend_Db_Table_Abstract
,Zend_Db_Table_Row_Abstract
,Zend_Controller_Action
,Zend_Application_Bootstrap_Bootstrap
. Different applications may also need to extend some of the classes that are not necessarily meant to be extended, but are extendable and often extended non the less (such asZend_Form
). With regards to these, zf1-future should find it acceptable to break compatibility of such user code, but only to the extent that one can possibly refactor the extending class to be compatible with both zf 1.12 and zf1-future on PHP 7.1 (sort of like already mentioned previously). Conversely, any change that makes it impossible to write such extended code should be rejected, even if it is required for compatibility with later PHP versions.