I'm leaving the Zend Framework project.

In my 2008 book Pro PHP I wrote of the criteria one must have in choosing an MVC framework. In it I wrote:

"The existence of community around an MVC framework is critical. You should look at what amount of participation is welcomed, and how long it takes members of the community to respond to a bug and produce a patch."

In 2006 when I became enamoured with the Zend Framework, it was because of the community. Under the leadership of Bill Karwin and Jayson Minard, the early ZF project was an open-source utopia. Community developers were respected and Zend's corporate motivations took a back seat to tested and true when-its-ready engineering. It truly was open-source collaboration at its finest.

We had great component leaders, people who knew their subject matter and who were passionate about development. We did great things and produced great code -- but then something changed with the project, and many of those community members that made Zend Framework so successful started leaving or worse, simply not contributing -- some of us even tried to fork components with limited success.

Decisions to move to formal versioning were made before it was ready and later, decisions moved ZF to enforce formal coding processes under the guise of increasing code quality [or at least the perception of code quality]. These decisions came at a grave cost.

The stable version requirement meant innovation in core ZF stopped, postponed instead for a 2.0 version which was to be the saviour of the architecture. A version 2.0 architecture that, it is clear to me now, will repeat the mistakes of the past and not deliver useful component re-usability or return ZF to an innovation architecture as a community project.

On formal code requirements, my contributions over the years have largely been as the result of client work. That is, when I improve a piece of ZF code for my clients, I've contributed it to the project. However, I can't justify to those clients that they spend time revising ZF's test suite, writing docs, or playing the politics required to get the patch accepted. Which means, in the early days, I contributed a lot, but today I am able to contribute essentially no code, despite the fact I do regularly improve the ZF library.

I feel Zend Framework is no longer innovating. It has become burdened by so much process and technical debt that many contributors find they can do nothing more than become disaffected with the entire process. I imagine today I feel much like Jurriën Stutterheim did when he penned his exit letter in May 2010 "Discontinuing my contributions to Zend Framework" saying:

"What it boils down to is that I've lost a lot of my interest in helping to develop ZF. The active involvement, of both the Zend team and the community contributors, that made ZF development so much fun seems to be mostly gone."

I agreed publicly with his statements at the time and worked for community reform -- and we have seen some effort, in the creation of a community-review team, and in the very recent return of the weekly summaries. There's a new IRC meeting process being tried out, but it is now clear to me that it is a complete and total farce, with a general consensus of: this isnt getting anywhere, lets charge ahead anyway.

Which brings me to why I am leaving the project today. The ZF 2.0 community engineering process is trying yet again to get off the ground. What Jurrien spoke of in May 2010 about the engineering of ZF2 holds true today -- over a year later. Progress towards community architecture development is still as absent as ever. The process is expected to happen in the silos of Zend and contributor RFC's, but no real collaboration is occurring. Conceptual ideas are met not with intrigue, but with pointers to formal processes that require the all concepts to be fully pre-formulated and defended as if thesis, [with even the ludicrous request for benchmarks before a concept has even been defined.]

I tried to push the rope towards discussion of a truly modular architecture for ZF2 -- but its now clear to me that I have failed, and the current process requirements and leadership from Zend will make the kind of community-driven engineering I envision simply impossible to achieve. The ideas are too conceptual to push through a formal proposal process, and I'm but one exceptionally busy developer and cannot be expected to have all the answers. My vision for the framework was one of collaborative architecture, but what I've found instead is a conflicted leadership more interested in time constraints and process than in creating innovative engineering solutions.

So with this message, I defer. I leave it up to those at Zend to make the next version of their Zend Framework product. Maybe it will be awesome, maybe it wont, but one thing is clear, it no longer meets my definition or requirement for choosing a community MVC framework.

I will continue to support Zend Framework 1.x in my client work, and evangelise its purpose and history, but given the current trajectory, its unlikely I'll advocate the ZF 2.0 transition -- instead I will prefer more progressive frameworks with a strong and elegant design for ground-up modular architecture and an active and engaged contributor community.

I do not come by this decision easily nor quickly, and I have met and worked with many truly amazing developers throughout my time with the Zend Framework project. I know that there are still those of you out there fighting for reform and I do truly wish you success and the ZF community well. I hope that the contributors, some of the most technically brilliant and exceptionally talented folks in the PHP community, continue to have a say in Zend Framework's path and development.

For now though, I'm going to refocus my spare-time efforts on my CIRA leadership campaign, security research, and making contributions to open-data.

Its been fun,


Kevin McArthur