During the weekly Symfony meeting yesterday, we talked about third-party dependencies in the framework in general, and more specifically in components. No consensus was found, and so we decided to not decide anything. After this meeting, Johannes, Bernhard, and myself exchanged some emails on the topic. Why the three of us? Because Johannes manages the security component (and it has a dependency on Doctrine DBAL for ACL), and Bernhard manages the form/validator components (and they have an optional dependency on Doctrine). As the developers in charge of the maintenance of these components, we have of course a rather strong opinion on how things need to be done.

As we don't believe that we can make everyone happy, here is what we think is the best for the project:

The Component sub-namespace hosts libraries that can be used standalone. They *must* not have any mandatory externals dependencies (they can however have limited mandatory dependencies on other Symfony2 components -- like Form and Validator for instance).

For some features, components *may* have optional dependencies on third-party libraries that we, as the Symfony core team, support (as of today, it mostly means Doctrine, Swiftmailer, and Twig).

The goal is to make the components as useful as possible when used outside the Symfony2 context. So, if someone wants to use the Security component without the Symfony MVC framework, he should be able to do so. Of course, if he uses Propel, and not Doctrine, he is on his own. But if he uses Doctrine, he has a complete and working package that works standalone.

Although we implement support for certain dependencies ourselves, there is (and must be) a clear interface that allows to replace it by custom implementations.

So, what about the Propel guy then? As we don't have a Propel bundle, it
changes nothing for him. We don't have support in the component, but we don't have support in the framework either. Of course, people willing to contribute support for other libraries (like Propel, Zend Mailer, or Smarty for instance) can do so in a Bundle, in the library itself, or in yet another "tie-in" library that they distribute themselves. But that won't be part of the core framework.

We think this is the best compromise we can find.

P.S.: I will only merge Bernhard pull request after we settle on a strategy.

--
Fabien Potencier
Sensio CEO - Symfony lead developer
sensiolabs.com | symfony-project.org | fabien.potencier.org
Tél: +33 1 40 99 80 80

--
If you want to report a vulnerability issue on symfony, please send it to 
security at symfony-project.com

You received this message because you are subscribed to the Google
Groups "symfony developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/symfony-devs?hl=en

Reply via email to