Zend Framework - preliminary report October, 12th 2009

We have finished our first round of evaluation of Zend Framework (ZF). As we expected, we have gotten some insights and also some more questions have arisen. Here is our summary of what we found:

Insights

 * 1) Zend Framework provides clean code, easy testability, best programming practices.
 * 2) Initial ZF integration step – adding ZF as a lib could be done easily. Just by including ZF to an eShop dir and adding a few lines of code you can fully use full ZF functionality.

Advantages

 * 1) ZF is maintained by active community, provides updates often (see questions)
 * 2) Using ZF eliminates the dependency on other 3rd party libs (phpMailer -&gt; Zend_Mail, tcPdf -&gt; Zend_Pdf, openID -&gt; ZendOpenId, …) where we already have some problems. Checking for updates is one of them (see also Disadvantages)
 * 3) No additional system requirements are implied
 * 4) Zend_Filter would be useful for solving existing input issues
 * 5) Overall there are a bunch of libs that we can use

Disadvantages

 * 1) Most of the functionality doubles what we already have. Integrating often means changing the functionality and not adding something new.
 * 2) We would depend on ZF updates (ZF update frequency + possibly changing functionality).
 * 3) ZF takes at least additional 22Mb of disk space.
 * 4) We expect performance problems regarding Zend Controller. For example Zend_Controller_Router is not useful because eShop uses own advanced SEO URL encoder and decoder.

Questions

 * 1) How can we include ZF updates in our regular release and maintenance procedure?
 * 2) ZF would be perfect for a new project, but what about integrating it to existing project?
 * 3) Integrating Zend_Controller (ZC) is not a trivial task. There are a lot of problems when you want to dispatch existing eShop views using ZC. How do we solve them in a way that does not bother existing modules?
 * 4) Maybe we should not use Zend_Controller at all? Is it valuable?
 * 5) What particular features should we use from ZF instead of OXID framework?
 * 6) Would it be useful to do smooth migration, starting by using just some libs and see how it works out?
 * 7) Are there more advantages/disadvantages then we’ve already found?
 * 8) Whether, how and when to move filestructure to Zend standards?
 * 9) Whether, how and when to change class names according to Zend standards (“Oxid_Oxarticles”)?

Conclusion
We have to do an additional spike solution to list all problems that could arise regarding ZF integration. So nothing is decided yet, the way we go largely depends on more research and developer feedback. For now we focus on releasing OXID eShop 4.2.0 and afterwards – in a couple of weeks, we are going to answer some of the questions we have found.