ZNF project closes — why I abandoned it and PHP

I am very sorry to announce the stop of the ZNF project. After almost three years of development, me and the other project leader and main developer Graziano Liberati realized that it was almost unfeasible to continue the evolution and maintenance of the framework.

Several combined reasons determined this difficult choice. First of all, I started a career as software engineer in Norway, while Graziano started his own firm in Italy, and the time to spend on the project became suddenly too little. The engineering and development of a web framework are complex and time consuming activities, and they cannot be carried on in the spare time, especially when you have a normal life and you want to spend your spare time far from your laptop. :)

The community around the project provided important bug signals and code contributions, but unfortunately this was not enough for a project to survive. Despite the popularity gained during the years and the handful of firms that based their business on ZNF, the project received only one donation of 7,75 USD from J. Chalmers, that I thank a lot.

On the contrary, I have been notified of a possible GPL violation by a little software firm in Canada, who asked to a customer the payment of more then 10.000 CAD as fee for the usage of our framework…

But the main problem is another: I do not agree anymore with the way PHP is developed. I am so sorry to make this critic to the PHP project, I do not like to have this kind of criticism when there is a volunteer work involved, but I need to explain my reasons.
On the 13th of July 2007, exactly after three years from the PHP 5.0.0 release, the PHP 4 end of life has been announced on the PHP home page. Some developer reacted commenting “Finally!”, some other, including me, thought “Too late…”. In my opinion, the choice of developing in parallel PHP4 and PHP5 ruined the chances of PHP to become a real enterprise language.

The purpose of PHP 4 was just to build dynamic web pages. The language syntax was extremely simple, and being a scripting language it did not have a strong typing system. The language also offered a lot of internal functions, support for various database management systems, and limited support for object-oriented programming (lack of support for information hiding, encapsulation and abstraction). Moreover, the PEAR repository offered a lot of libraries written in PHP, with at least some nice project like database abstraction layers and template engines.

PHP 4 was probably the language most suitable for quick-n-dirty hacks with web applications, and this has been at the same time the strong and the weakness of PHP.

On one hand, being so easy to understand, the language was used by a lot of untrained developers who wanted to approach web development. The lack of a strong typing system, together with the flexibility of the parsing engine (that most of the times revealed spurious code only with the E_ERRORS = ALL directive) helped unskilled people to rapidly build something that was, at least apparently, working. Moreover, the sort of object-oriented support provided by PHP together with plain imperative programming support lead in most cases to mixed approaches and confusion. It is for these reasons probably that most of the professional and experienced developers always looked at PHP as a very dirty language. For sake of completeness I have to say that the PEAR repository in most cases consisted in poorly documented libraries/packages. Some of the core packages, shipped by default with PHP, were not even compliant to the quality guidelines and my proposal to the quality assurance team to be simply strict with the core libraries did not lead to any result. You can read the original posts I made in the mailing list here.

On the other hand by the way, even some experienced developer found PHP interesting to develop little or mid-range solutions, like for example little content management systems. Considering that almost every cheap hosting solution on the planet offered support for LAMP platform, PHP has been most of the times the preferred choice by web agencies and young developers willing to get new customers with affordable solutions.

Probably no one expected the growth of share that PHP had during the following years. Projects like PHP-Nuke became very popular, but also because of their security holes discovered weekly. However, we all know that not always the state-of-the-art of software will become the most successful. :)

PHP 5 was announced with enthusiasm mainly because of it’s new shining Zend Engine II, the new object-oriented engine providing most of the missing features in a Java-like fashion. It was promised as the big step in advance that would have been raising PHP to the enterprise market.

These initial claims are now completely controverted by what PHP 5 turned to be. Leaving PHP 4 developed for three years after the first PHP 5 stable release made the hosting providers to completely ignore the new version of the language for too long. PHP hosting are in general meant to be low-end or mid-end solutions, and most of the customers need it only to run the well known PHP4 CMS and blogging systems, like Joomla, Drupal, or WordPress (like I do). Since most of the customers are satisfied, hosting providers will obviously not invest in the upgrade of their systems configurations.

How could Zend expect a quick spread of the new generation of the language, if they did not cease to develop the former version in reasonable times? It is not surprising that most of the hosting providers added PHP 5 support just after the end of PHP 4 announcement in July. Projects like ZNF, that started when PHP 5 was still beta, lost a big potential user base because of this incomprehensible strategy from Zend.

Version 5 of PHP is clearly a transient version of the language, that tries to keep as most as possible of the “dirt” of the former versions, but introducing some nice features. Unfortunately other languages developed much more quickly, and PHP 6 will not compensate the escape of developers to other platforms. PHP 5 still miss namespaces and unicode support. and is still very dirty: errors can be handled in at least three different ways (for example trigger/handler, PEAR error stack, or exceptions); important features (for example input filtering) have been introduced as function and not as classes, leaving very unclear if they want to push OOP definitely or not; the role and the future of PEAR is blurry since most of the classes are not ported to PHP 5 strict and the quality is questionable.

Considering all these reasons, it will be probably easy to guess how I can feel now after having spent a lot of efforts in delivering a good project to the community and receiving these happenings back as “thank you”. :)

The project is not searching for new maintainers, will just be closed and the resources will be left untouched for a couple of years, unless unforeseen events occurs. You are free to use it and to make a fork if you want, as long as you respect the LGPL 2 license. I would like to thank the following people for their contributions to the project: Tomasz Kuter, Denis A. Konovalyenko, Emad B., Christian Kassab, Markus Wigge, Guéric Folliot, and Valentin David.

Best regards.