8 May
Where Are The Good Development Tools For PHP?
“After PHP 6, I think that’s it for PHP.” Those words were spoken to me by my boss while we were having lunch at the crazy-busy sushi buffet restaurant near the office. I choked a bit on my food. After all, my boss is a former Zend employee and utterly competent PHP programmer. “There’s no innovation going on in the language.”
“Well, what sort of innovation do you think Rasmus and the boys should be doing?” I asked him.
“It’s not about the language, because there is lots to like. It’s the tools. Ever watch a .Net programmer build something? Visual Studio is the best tool around for building applications. Things like Zend Studio and Komodo are 10 years behind. You’re struggling with the interface for that playlist editor, right? There should be drag-and-drop interface tools that integrate with your PHP code. Your friends from ActiveState should be trying to one-up Visual Studio, not building tools for script kiddies.”
Having never seen a .Net programmer at work, I’ll have to take Daniel’s word for it. But he does have a point. It’s clear to me that Adobe and Microsoft have decided the best way to dominate the internet is to ignore those pesky developers and instead try to turn designers, who know how to build decent interfaces, into developers as well. Adobe Flex and the new Microsoft Silverlight are perfect examples of this, and are even stealing ideas from the while Getting Real crowd: build the interface first, then plug in the code behind it.
So I ask you, where are the tools to turn guys like me into passable interface designers? Why do I have to code Ajax interfaces in PHP by hand? How much time am I going to have to waste trying to code Javascript and integrate things like TinyMCE into my applications. Where is Visual Studio for PHP? Or, more importantly, does Visual Studio let you do drag-and-drop interface design with PHP?
Of course, now I wonder if Daniel is right. Should I be learning other tools? The answer is, of course, yes. I’m already doing that by my commitment to learning Javascript to make all this Ajax stuff work properly. But what about PHP? Did PHP make a mistake by making such a bold leap from PHP 4 to PHP 5? Possibly. Converting an app from PHP 4 to PHP 5 is usually simply not doable, because if you are really going to take advantage of the new features of PHP you have rewrite your app. Having worked with PHP 5 for a while now, I have to agree. Yes, your PHP 4 app can run on PHP 5 but what do you gain? Not much.
So what should I do know. Ruby on Rails? For all the neat stuff going on, it’s still such a very small part of the web development world, and I still have my doubts about how you scale out a Ruby on Rails app. Yes, I know, build it first and worry about it later, but I think it’s still a valid question. Is it time to learn how to use Flex? Is it time to leave the cozy confines of OS-X and go over to the Microsoft world? What is out there? When I’m at php|tek next week I’ll start asking some questions of developers there to see what they think.

Posted by Mladen Mihajlovic on 08.05.07 at 10:19 pm
He has a point, but I must say that Zend’s new IDE, done as an Eclipse plugin, is starting to shape up nicely. I doubt they will ever have drag-and-drop interface building as I don’t see PHP working that way, but as a development tool it is getting a bit better.
If you want to learn another tool, I would recommend .NET (or even Java although I’m a .NET man myself) It is an enterprise level language and there are always jobs available which pay quite well I might add.
Also there are a billion development tools for it aside from Visual Studio and there is so much information available too. Plus Microsoft innovate a lot in this area if you ask me. Just look at the latest things coming out with the DLR (Dynamic Language Runtime), Silverlight (or WPF), WWF, etc…
Posted by Chris Hartjes on 08.05.07 at 10:19 pm
@Mladen: I don’t think the problem here is PHP, I think the problem is that we’re still building web sites using HTML. I’m thinking that some sort of Flash / Silverlight / Technology To Be Named Later is really going to be the key here. Give me an interface where I can drag and drop components onto it, and it can be rendered consistently across platforms, and doesn’t care that back-end it talks to as long as it can output stuff like images or information encoded in JSON or something. Now *that* would be cool. I’m terrible at building interfaces so I guess my frustrations in this department is shining through.
Posted by Cal Evans on 08.05.07 at 10:19 pm
Not buying it.
Innovation != drag and drop.
I’ve seen .Net guys at work. It’s great for building some things. But I also got an IM from a very good .Net programmer about a month ago. “Trying out this new Ajax stuff.”
Delphi for PHP is available and by all accounts I’ve seen is a good IDE if you like that kind of environment. The problem I see is that most developers I know don’t like that. It doesn’t make us any less of a programmer because we won’t use a visual IDE or widgets, it just means that this is the way we feel more productive. (And honestly, I don’t see Visual Studio as the end-all-be-all of IDEs)
IMHO, etc.
=C=
Posted by Chris Hartjes on 08.05.07 at 10:19 pm
@Cal: I guess what I’m starting to realize is that if non-designers are going to make decent interfaces for their applications, they are going to need some sort of drag-and-drop interface builder. Is it inevitable that HTML goes away and we’re left with all Flash / Silverlight web sites?
Posted by Thomas Koch on 08.05.07 at 10:19 pm
I think one of the biggest differences is, that with PHP you’re normally writing web applications and that there’s a problem with GUIs for the web, not with the language PHP.
If I want to write a groupware application today, how should I do the UI?
A smart Javascript framework with widgets raping html into a GUI?
XUL, running only on Mozilla?
A fat client with GTK or QT?
XForms for sophisticated input?
Something proprietary?
For the moment I’d choose XUL, as it can be used over the web, is XML and it will be there for a longer time.
And if we can convince some more people to use XUL, then let’s also start to write a drag’n'drop UI-Designer for it. (Or continue the existing projects.)
Is it a problem of PHP? Wouldn’t it be the same problem with Python?
Posted by Thijs on 08.05.07 at 10:19 pm
What’s wrong with vi?
Posted by developercast.com » Chris Hartjes’ Blog: Where Are The Good Development Tools For PHP? on 08.05.07 at 10:19 pm
[...] a new post today, Chris Hartjes asks the questions “Where are the good development tools for PHP?” [...]
Posted by K on 08.05.07 at 10:19 pm
I agree, being the technical manager for a development company I see a 1 sided cross over of skills from our designers who can code PHP, yet our web programmer have appalling design skills.
But on the other hand I’ve also seen web programmers push there skills by branching into realms of system development and database administration.
But lets be realistic - in 1999 Flash sounded the death for HTML, in 2000 mySQL became the Enterprise’s choice of RDBMS, in 2001 .NET sounded the death of Java.
7 years on HTML (or XHTML) is still the backbone of 99.9% of websites, Oracle is still the top Enterprise RDBMS and Java still has a massive following.
Also lets not forget Macromedia tried this one before with Cold Fusion, it died miserably.
Posted by Tengku Zahasman on 08.05.07 at 10:19 pm
..or maybe they should do the other way around…. turn the developers who are already experts in writing great applications into decent designers as well…
Posted by Ian on 08.05.07 at 10:19 pm
I do both .NET (C#) and PHP development regularly. If you simply rely on drag and drop tools, you get spaghetti code that is horrible (what the other developers are so critical about PHP sometimes).
I use a framework (company developed). I rarely use the drag and drop tools. If I do, it’s only for form elements, since they are objects at the code level too. But I also just edit the raw HTML in “code view” too.
I think it’s more personal preference. I started out with VI and moved to Zend IDE/PDT. A colleague has been trained in VS. He loves it. I know a few others who can’t do jack in the code behind because all they do is drag/drop.
I think the bigger issue is a solid framework (like .NET) that incorporates common HTML elements into objects at the code level. This has done wonders for my code and efficiency.
Posted by Software developer on 08.05.07 at 10:19 pm
I have to agree with your boss, considering the things that are happening to .net, I guess php is still sleeping.
Posted by PagerankLady on 08.05.07 at 10:19 pm
Delphi for PHP !!
http://www.codegear.com/products/delphi/php
Posted by Jens on 08.05.07 at 10:19 pm
You can’t turn developers into designers. Period.
Posted by Chris Hartjes on 08.05.07 at 10:19 pm
@Ian: You do bring up a good point, that the easier it is to create HTML elements in your code programatically then there’s less screwing around the developer needs to do. I guess my problem is that I’m still at a very basic “create something that works for me” level of interface design. What I really need is to be paired with a good designer so we can both learn from each other. There’s a guy I’ve done some good work on the side with who is starting to learn PHP, and is a great designer. We worked together on http://www.mustique-island.com
@Jens: I’m not so sure about that. You can’t make a GREAT designer out of developer, but you can certainly teach them enough about design so that they are not totally useless.
Posted by Dieter_be on 08.05.07 at 10:19 pm
Funny, I was just discussing this matter this afternoon with a friend (who really likes the drag ‘n drop stuff in visual studio).
I don’t think such stuff makes up for the rest. Sure, you’ll win a little time (with for example a drag ‘n drop editor), but if you want a decent application you should at least audit (and probably optimize) the generated code. So basically you’ll generate some code which acts as a starting point for further development/optimization. Other utilities, while not so good-looking provide similar functionality: code generation scripts, or even code templates in your idea. A decent framework with a good api is also a great help. There are plenty of things like these in the php world.
I guess, if anything, the languages in which we write (and show) graphical interfaces could use a face lift. The combination of html/css/javascript(/xml) is pretty flexible but very inconsistent (and thus, requires much effort) Ironically, the company behind the so great ide and technologies has played a huge role in this.
Also, php has some advantages over its competitors. (as well as disadvantages). I assume we all know what they are. Don’t forget those too!
Posted by Stojce Slavkovski on 08.05.07 at 10:19 pm
Try vs.php from http://www.jcxsoftware.com/
Posted by Nick Halstead on 08.05.07 at 10:19 pm
I certainly agree with your sentiment, we would also wish for easier to use visual tools that made the design work easier. I think the majority of programmers really enjoy the Model/Controller part of MVC but would rather chew their own leg off than have to get involved in the View part.
I know in reality we all have to write a lot of the view code as there are not enough developer/designers out there who are proficient enough programmers and good enough designers.
For all the visual aids I have worked and or seen working none of them have produced decent code or in fact sped up the process. The flow design in something like Weblogic looks amazing but I can bet you I can write the code quicker myself than you twiddling around with what looks like Microsoft Visio.
The fact is right now the tools available can only ever cope with most simple of examples and certainly not for a complex application (which is what we want them for)
Posted by Nick Halstead on 08.05.07 at 10:19 pm
Hi Chris,
You inspired me to write a full post on the subject of PHP and where it is going, and what we need to do about it. If you get a chance please have a read - 10 Reasons why PHP is still very much Alive
Posted by Brian on 08.05.07 at 10:19 pm
Your post reminded me of this recent post at Coding Horror:
Posted by Kevin Beckford on 08.05.07 at 10:19 pm
Let’s see… check out Open Laszlo for your interface solution. It’s declarative, as opposed to constructive. It’s kind of working for me, and as you very well know, the only reason I have eyes at all is to shed tears for the pitiful lack of my design skills
Innovation gets tricky when everyone uses your language. PHP is a victim of its success. It aimed from the beginning to become a rival to ASP, and it has succeeded wildly. Of course, innovation loses market share sometimes, and last time I checked , Zend was a _business_.
You have drag and drop available to you in a bunch of forms already, for gui development. Just use a tool “stack” instead of some monolithic thing.
Silverlight: Please someone show me the market penetration for this product before we compare it to Flash… Is it even done yet?
Posted by Michael Kimsal on 08.05.07 at 10:19 pm
A primary issue here is that while there’s some choice in the MS world, there’s basically one proscribed way of doing basic things. You want a datagrid? Here’s a datagrid control with the basic mechanics hardwired in. You can customize it, but many of the mechanical decisions have been made for you. Same with session management, form management, and many other aspects of web development (or app dev in general).
That sort of uniformity does not exist in the PHP world, which makes it hard/difficult/impossible to write IDEs which can take advantage of the ‘one’ way of doing something. Sure, you could write your own grid/pagination code in .NET for an ASP page, but why? However, you’re ‘forced’/'allowed’ to choose from multiple options in the PHP world, so many so that ‘rolling your own’ often becomes a viable option as opposed to researching/testing all the available options.
Too much choice at the mechanical level can be viewed as a bad thing. Go find 10 PHP books and they’ll all show you different ways of handling form processing and session management. Go find 10 .NET books and you’ll find pretty 10 examples all using the same techniques and code samples (for the most part).
Posted by Where Are The Good Development Tools For PHP, Part II | PHP Coding Practices - Become an expert PHP Programmer on 08.05.07 at 10:19 pm
[...] document.write(”"); } )() Chris today posted a follow-up to his Where are the good development tools for php article he recently published. In the second part of the series chris goes into detail about [...]
Posted by Where Are The Good Development Tools For PHP? | PHP Coding Practices - Become an expert PHP Programmer on 08.05.07 at 10:19 pm
[...] programmer. “There’s no innovation going on in the language.” Hop on over to the full article. it’s certainly a good [...]
Posted by maurogo on 08.05.07 at 10:19 pm
http://www.extjs.com