December 8 2009, 7:15 AM
Symfony is a really good and very, very useful piece of work.
But sometimes, I feel that all the time saved by the framework becomes wasted in upgrade processes, because of very poor backward compatibility.
Unlike major PHP versions, you simply can’t expect that your project using Symfony 1.0 will work on the next minor versions without hassle!
Examples of significant changes:
- ORM (Doctrine will permanently “replace” Propel in Symfony 2.0 and is already the default ORM since 1.3). Fortunately, the plugin DbFinder exists…
- Forms management (validation…)
- Email sending (sfMail for 1.0, then Swift_Mailer for 1.1 and 1.2, then a new class based on Swift_Mailer for 1.4, but requiring to use ‘raw pieces’ of Swift_Mailer like Swift_Attachment !)
As well, look at the huge documentation you have to follow if you want to upgrade from 1.0 to 1.4 (at least, it exists, but I found it sometimes incomplete)
Upgrade Symfony from 1.0 to 1.1 (difficult to reach on Symfony website)
Upgrade Symfony from 1.1 to 1.2
Upgrade Symfony from 1.2 to 1.4
This is very boring, leads to pure time waste, even if a few things are automated by the “project:upgrade1.x” task, and newcomers could think that the framework is immature and amazingly complex.
IMO, developers using a framework shouldn’t even bother if they are using Propel, Doctrine, Swift_Mailer or AnyBeautifulThirdPartyClass. They simply want to create forms, manage data in the database, send mails etc., whatever occurs behind the scenes.
Instead, too much new features / concepts / third party elements are regularly killing backward compatibility, leading to unjustified complexity for upgrades and “relearning” time to use some existing features.
I know that Symfony’s audience is web developers, who should be technically “aware and up-to-date”, follow Symfony’s recommendations, good practices and coding standards, etc.
But, please keep this great framework simple, to avoid extra heavy efforts for learning and upgrading.
I’ll try to contribute as much as possible in that direction (if I have time between two upgrade processes ! :-p).