Sunday, February 7, 2016

Why is the Zend Framework not popular?


.
copied from: https://www.quora.com/Why-is-the-Zend-Framework-not-popular#
.
Bill KarwinSQL developer, consultant, trainer, and author.
16.1k Views • Bill is a Most Viewed Writer in PHP (programming language) with 220+ answers.
I was the project lead of Zend Framework for their 1.0 release, back in 2007. The original goals of Zend Framework were:
  • Don't try to solve every corner case of everyone's app. Try to provide a solution for the 80% common cases, to keep the code simpler. But this means that the framework as it stands cannot match any app's requirements exactly, because any given app is likely to need some custom functionality in at least one component or another.
  • Loose coupling between components of the framework, to make it easy for people to use an alternative component if any of the ZF components don't meet their needs. That was the intended way to solve the other 20% of cases. But very loose coupling meant that in many cases, the "right way" to implement a web app was too vague and too flexible.
  • Make sure the code is "clean" and does not reuse code that anyone else has a claim to. This was important to some of Zend's customers in the wake of the SCO v. IBM lawsuit. Many people were anxious that using a single line of illicit code could be the grounds of a multi-billion dollar lawsuit (or even not using illicit code, but being sued anyway, to prove it). So every line of ZF code is original, even to the extent of reinventing classes that already existed in other libraries. And this requirement was viewed negatively by potential contributors who objected to signing a Contributor License Agreement to assure that they were not contributing code that was already copyrighted. Ultimately, this requirement for clean code was not important to the developers who choose frameworks.
  • To distinguish ZF from Java frameworks like Spring or Hibernate, it was a strong policy that there should be no XML files to hold application configuration. But this meant that configuration had to be done with PHP code. But really there were configuration files, just not written in XML. Again, vague and over-flexible usage made it a confusing process to learn how to create an app.
After I left the project for another opportunity, the team kept developing Zend Framework, and announced their plans for a Zend Framework 2.0, which would not be constrained by backward-compatibility with ZF 1.x. What this meant was that there were two official Zend Frameworks in the market, with very different usage so that you had to recode your app to migrate from ZF1 to ZF2. In a way, Zend Framework became its own competitor.

ZF2 also gradually became more and more complex, adding many layers of classes for reasons that seemed abstract and confusing to most users. The layers of classes written in pure PHP caused a lot of runtime overhead, giving ZF2 the worst performance of any popular framework, even worse than ZF1 (cf. Performance benchmark of popular PHP frameworks).

I think a primary problem for the Zend Framework was that the project didn't really use Zend Framework for a web application project. They had a lot of unit tests, but the developers had no direct experience of how it served as a runtime component of an app that was under production load. There's something to be said for software projects that grow organically, developed as an in-house solution by the people who need it to serve their needs, and then later released as a public product.

So the end result is that Zend Framework is:
  • Complex and hard to learn
  • Not backward-compatible with its own earlier version
  • Very slow
So I am not surprised that it Zend Framework doesn't have more adoption. It was quite popular for a few years, but as soon as something else came along that could beat it in one of these aspects, the number of new adopters dropped off.
.

No comments:

Post a Comment

Labels