Over the years I have moved from technology to technology based on the popularity of a new language or platform because that how you keep finding work. In high school and college I was taught Basic, Turbo Pascal, COBOL and a little C. In college I taught myself Perl and Java which is what I actually used when I got my first internship and my first couple of jobs after college. For a short time I got into Java and I really liked JSP, servlets and the maturing taglib system. Unfortunately Sun started to propose JSF but did not really put much energy behind it and it still has yet to make an impact. Other web frameworks for Java like Struts, Tapestry and so many others dominated over JSF because people were using them and they worked. As a consultant at that time I found it very difficult to know all of the available frameworks to any reasonable depth to confidently call myself an expert on the Java platform as web developer. It did not help that Sun did not really put much energy behind Netbeans, their IDE which was being developed by a team of developers who built it using Emacs. So IBM and their contribution to the Java landscape, Eclipse, took an leadership role in the community where Sun left a massive vacuum.
Why am I recalling this history about Java when the post is supposed to be about PHP? Well, I really liked Java and thought I was going to build my career on it, but it turned out that there was not a sufficient force behind it to keep it moving forward. And while I see PHP as a dominant player among web site development, I do not see the sorts of efforts underway that are necessary to advance the platform.
In contrast, I have been working with the .NET Framework which has teams of developers working to make my work easier. One solid example is the release of ASP.NET 2.0 which was in beta when I was building an e-commerce site from the ground up. I need a way for users to log in and also manage a database of users. With ASP.NET 1.0 Microsoft learned that developers often had to build all these pieces themselves so they created the Membership Provider and the Login Controls so that you could be up and running within minutes. I was past these requirements quickly and was on to the specifics of the site and leveraged many other features that came with ASP.NET 2.0, such as Master Pages and the new caching features. I was able to create a site with rich features that was really quite fast and my client was very happy.
You might describe these improvements as framework updates because they added some libraries but they also added some tools as well as rich support in the IDE, Visual Studio, so that I could get up and running quickly. The release of Visual Studio 2005 was coordinated with the .NET 2.0 release so taking advantage of all of these features was simplified. Meanwhile IIS, the web server, was also updated to leverage .NET 2.0 features. It was an end-to-end update.
Now you could contrast the benefits of a well coordinated release which truly did make my job a lot easier with how new features trickled out from the Java community. If Sun were to release JSF with a whole series of useful controls along with supporting features in Netbeans and the Tomcat web server it could have energized a lot of developers to get on board and get them all moving in the same direction. It just did not happen. Now I find it hard to find a Java developer who is still doing a lot of work with Java. Many have moved on to Ruby, Python or PHP.
So what about PHP? Sure Yahoo! and others employ some of the core PHP developers and allow them to continue working on the language, but what about developer's needs beyond the language? What about a rich IDE which is synced to support new language features? What about releasing rich libraries which solve the most common developer concerns?
What I see is large projects like Wordpress and Drupal growing up on top of PHP, with their own communities as a structure onto itself. People build on Wordpress or Drupal as the platform, using tools in the web application itself to make changes to the platform through extensions or plugins and custom modules which just happen to be written in PHP. There is no IDE and there is no need for the PHP community to have role in this space. But there is an opportunity here for the core PHP team to provide support to platforms like Wordpress and Drupal.
Over the last year I have asked PHP developers a lot of questions. I often ask them what they use to edit PHP code and they all have a different answer. I personally edit it with VIM with color support because I often have it on my FreeBSD server. Others use Coda, DreamWeaver, Eclipse or Aptana Studio. It seems there is no clear IDE of choice.
I also find that people do not describe themselves as PHP developers. Instead they say they are Wordpress or Drupal developers and they work largely within the web application to "develop" the web site. I am not sure if many of them touch actual PHP code that often. There is nothing wrong with that, but it is very interesting.
Back when Netscape open sourced their web browser they created a new organization to watch over it. It became Mozilla which is now largely known for Firefox which has become a very popular web browser which innovates with new features from HTML5 as well as a rich extension model. This organization makes money through a search engine deal with Google, which allows them to focus on making a great web browser. I like that model. The goal of the company is to make a great web browser. They are not a small group of developers working for a big web-based company that simply allows them work on their little open source project. There is some urgency that they compete with others like Internet Explorer, Safari and Chrome. This competition drives them.
So back to PHP, I know that some PHP developers work for Yahoo! and they can focus on the language, but maybe they should form a foundation that is similar to the Apache Foundation which receives sponsorship money and support from several companies while continuing to produce software which is widely used and respected. I believe the Apache Foundation is the most respectable and most important open source organization there has ever been. It has essentially ensured that no company has been able to take over the web as their own proprietary platform and kept it open and honest. This group has also played a big role in moving the web forward. What could something called the PHP Foundation do?
For starters, I think they could work to refactor out the best features of the most used PHP applications so they can leverage a common code base which continues to improve over time, possibly with rich support from a common IDE. New features could be planned, announced, beta tested and released at a major PHP conference which includes Wordpress and Drupal which have been holding their own separate conferences. The entire community should be unified, not fragmented.
I realize that choice is important for some, but do you really need 37+ MVC frameworks for PHP? What if you had a mature MVC framework that was planned through the PHP Foundation after gathering community feedback, beta tested and then released after providing time for IDE developers for Eclipse and Aptana Studio to support these features? I think you would start to see some real energy behind the platform and innovation that you just are not getting right now from PHP as a language.
As a part of this PHP Foundation they could take on other open source projects and bring them into the platform. After MySQL was bought by Sun and then pulled into Oracle and subsequently forked to get it away from Oracle the PHP Foundation could be a good new home for what is the newly forked MySQL. And what about continued integration and the Apache Foundation and the Apache web server which works well with PHP now, but there is so much more it could do.
I also see an opportunity for the PHP Foundation to release reference applications of good PHP architecture that shows how the best PHP developers do it and how you should do it as well. Along these sample web sites I would want tutorials which train everyone to write good code in PHP. Over the past 2 years Microsoft realized that the ASP.NET community wanted MVC, so they developed it as open source and released it. On the first day it was able to run on Linux with Mono and you can learn how to use it with the ASP.NET MVC Training Kit. Beyond the training kit there are written and video tutorials available.
This is what I see is missing from the PHP community. Sure the developers have jobs which allow them to work full time on the language, but do they have teams producing sample projects, writing papers, preparing video tutorials and organizing workshops and conferences to train the community about all of the latest features of the platform? If I saw this happen, I would find it to be a very appealing community and platform.
I am interested in what you think. I realize I do not know everything about what is going on with PHP, so please fill me in. What is going with PHP that you think is going right? And what do you agree could be done to improve on the PHP ecosystem?
[ Image courtesy of Creative Commons and calevans. ]