Coding By Numbers - Episode 23 (Interview with Adam Harvey & Jethro Carr about PHP)

Craig: In this episode of Coding By Numbers Steve interviews Adam Harvery and Jethro Carr about the current state of PHP development.

Steve: My name is Steve Dalton from Refactor.

Adam: My name is Adam Harvey.

Jethro: My name is Jethro Carr.

Steve: Thanks guys for joining us here today.  We’re at Linux Conf Australia here in Brisbane.  You guys are PHP guys and I haven’t spoken to any PHP guys yet.  So I thought I’d grab you guys in a room for a bit during in our break.  I guess we’ll start with you Adam, you want to tell us a bit about yourself, how you got to where you are today?

Adam: So, obviously where here mainly to talk about PHP.  I’ve been a developer in the usual grab bag of languages that most people go through for about 15 years at this point.  My day job ironically is actually in Python.  PHP developer seem to hate Python and Python developers seem to hate PHP.  It’s quite odd.  By night I’m involved with the PHP project on a bunch of levels.  Mostly around bug triage, manual patches, occasionally doing the actual odd source patch.  Just that sort of thing.  Just a janitorial role mostly.  And also being really, really sarcastic on the IRC channels.

Steve:  I think we met up at Linux Conf Melbourne.  Didn’t we? We did lots of drinking together.

Adam: We did, we did.

Steve: With Patrick who isn’t here this week.

Adam: Yes very sadly.  I don’t really remember very much of that.

Steve: And Jethro?

Jethro: Well I’m not so much of a PHP developer but I’m more of an official PHP fan boy.  I’m sort of involved in open source technologies for about 10 years - basically most of my IT career.  The last 5 or so years I was focused apps built around PHP. I run up a startup company in New Zealand called Amberdms.  We do lots of open source.

Steve: Where abouts in New Zealand?

Jethro: Wellington.        

Steve: Wellington.  Cool.  A few Wellington people here today.

Jethro: Yeah.  Quite a few have come over.

Steve: I think because you had Wellington LCA last year.  It’s sort of seeded it now I guess.

Jethro: Well, I started going to LCA 2006 when we had it in Dunedin.  Ever since then, you go along to each one, and then in 2010 in Wellington again more Kiwis joined up and keep coming along.

Steve: That’s cool.  I just got back from New Zealand and fell in love with the place.  I did the whole South Island tour.

Adam: At the risk of sounding like a stalker I actually read your blog.

Steve: You know about all my trials and tribulations with my kids.

Adam: You went to a lot of the same places I went to 4 or 5 years ago so it was interesting to see them again.

Steve: Going back to PHP.  I can’t remember when I first came across PHP was.  I think it was PHP Nuke. Do you remember that, way back?  PHP I guess it was just something that was a pragmatic thing.  I just wanted to get things done.  I knew it was ugly, I took it with all of its foibles and I just got into it.  I think the story has changed a little bit with PHP in the last few years.  I’ve been a bit out of it.  I thought I’d ask you guys, how’s it going with PHP now?  Where’s it come from?

Adam: I think the big change has been, I mean PHP Nuke and post Nuke, there was a time where every PHP CMS and framework were basically based on PHP Nuke - it really was the standard.  The only problem was that it also came with a gold plated guarantee that you’d have a remote security hole in 30 minutes or your money back.  Basically, there was a bit of a problem there.  I think the big change has been two fold: the move from PHP 4 to PHP 5 which has a much more Java like object system, has made a big difference in terms of what people can do with structuring PHP, their PHP apps.  I think also, there’s also been a move to larger frameworks, heavier frameworks, which has advantages and drawbacks.  The quality of the code that people who are writing something more than just a “contact us” script is a lot higher than it used to be.  But dealing with the perception of PHP as this ugly, little scripting language that looks like Perl and isn’t as good from 10 years ago, is still something that I don’t think we’ve really been able to get over.

Steve: Yeah. it’s hard.  I think of myself, being Java programmer, I get hassled and taking the mickey out of.  But for me, I always think, it could be worse, I could be a PHP programmer.

Jethro: It’s not funny I think the same way about Java.  I heard it all the time.  I say to people that I’m a PHP developer and they’re like, “Oh it’s an insecure scripting language”.  Well actually no, it’s no less secure than any other language.  It’s entirely how you write it.  I think a lot of that reputation came from the past when there were a few lists and trolls over how it did form validation - registered globals, oh god.

Steve: It’s great to see them getting rid of that.

Adam: Finally.  It’s been heavily deprecated for about 7 or 8 years now.

Jethro: It’s still being installed from a lot of hosting companies.

Adam: There are.  It’s really scary.  That and magic quotes are still turned on on virtually every hosting company...or at least optionally turned on.

Steve: Magic quotes was the thing that allowed you to do lots of nice cross site scripting attacks and things like that.  Is that right?

Adam: What magic quotes, what it does, is all of your GET and POST variables basically get run through a function called addslashes.  Now, 10 years ago when the Internet was still really Latin-1, as the only character set, this actually worked okay, you could use that, you could basically use your variables that were coming in and just put them straight into database queries and not really have to worry about calling an escape function.  That admittedly, not great practice, even then, sort of worked.  The problem was then along came multi-byte encodings and it turned out that you actually kind of needed to know what character set your input data was in and what your database expected, and your database connection and database tables.  So you had to start calling escaping function, which made magic quotes, which was already a bit of pain, completely useless in effect and actively dangerous because it looks like you’re getting security but you actually don’t.

Steve: Yeah, yeah.

Jethro: We even ended up doing a whole Latin-1 framework, and the framework had to do a whole bunch of different tasks like input validation just simply because of those problems.

Adam: I think every framework, probably includes a line very much along the lines of: “if magic_quotes_gpc on then”...they’ll just go through and strip slashes everything, it just reverses the magic quotes.  Which is fine and that works you don’t lose any data - it’s not lossy.  But jeez it’d be a step that you just shouldn’t have to be taking.

Steve: If you’re a PHP developer, I know a lot of PHP developers who are self taught, they didn’t do IT at Uni, they’ve basically gone and got the “Teach Yourself in 24 hours” type thing and just got up there.  I know a lot of them want to get better.  They don’t want to be like that forever.  There’s probably a lot of things they can do, like particular frameworks they can use, maybe testing frameworks - things like that.  You guys got any particular advice for those people.

Jethro: It’s a bit tricky.  My background has always been from self taught.  I started using PHP in the standard user era, my box got 0wn3d - so you soon notice.  Basically, I built a web site and it got broken into a couple of times.  I learnt really quickly oh wait you should make it secure, ports and so forth.  Although at the time, of course, it was my entry into programming experience altogether and I was still growing up on that.  Breaking stuff and learning is one key way.  I guess looking at some of the modern frameworks obviously Wordpress and so forth, because it’s what I use, hack my own blogs and look at those sort of frameworks and see how they do things.

Adam: I was quite happy to let Jethro answer that first because my experience with PHP was from the opposite end.  I actually came to PHP as a C and C++ developer.  I came in with a completely different experience than probably 95% of the user community.  I think, I mean, as I said earlier, I think frameworks are a bit of a double edged sword.  Personally I actually don’t tend to use any them.  Which is one of those things that tends to get a lot of odd looks in the room.  What I tend to do instead is that there are a lot of good stand alone libraries out there.  For example, we’ve got Doctrine.  Which is a really good database library which sits on top of PDO which is already quite a good database access layer - very similar to JDBC.  Actively copied off of JDBC.  You’ve got Doctrine which is a really good object ORM on top and you also get lots of other functionality through it, lots of really good database abstraction.  It’s pulling in libraries like that, I think, you can really DIY your framework to a large extent.  Having said that, there’s nothing wrong with using some of the more modern framewoks.  The Zen frameworks are a getting a little bit older.  There’s some interesting things coming out.

Steve: Zen is quite lightweight, isnt it?

Adam: Zen is a little bit between a full framework al la say Spring, in the Java world...

Jethro:  ...a structure...

Adam: ...and just a collection of modules like a PEAR or a CPAN or something like that - a sort of half way house in between.  I think it’s always had a bit of an identity crisis in terms of whether it’s actually CPAN for the PHP world or a full blown framework.  I’ve always had the impression from the outside looking in, that there’s a little bit of friction in terms of where it should be.

Steve: So Zen themselves, they’re the company behind PHP?  Is that right?  Do they fund some of the developers?  What’s the story there?

Adam: It’s roughly right.  Where this came from is that basically Zen, which was founded by two Israeli programmers Zeev and Andi, created a virtual machine engine for PHP 4 - I believe it was - going back into the mists of time - which got adopted and used into the main engine.  Zen have contributed a lot to the PHP project - the VM that we use is still 98% written by Zen employees.  They probably also the only people who really fund a lot of commercial PHP development.  A lot of the core names who work on PHP the actual language in PHP, the scripting engine, are actually doing it in their free time, we have very few people who get paid at all to work on this, let alone full time.  Which is one of those things, when you look at the scale of PHP, is actually actively quite surprising.

Steve: Yeah.  Cause you got...you’d think...everyone hears about Facebook and the big sites using PHP.  Do those big companies contribute back to PHP much or do you think it’s again a lot of people doing it in their evenings?

Adam: It’s a bit of a mixed bag.  Facebook, to an extent, have their eye on their own implementation of PHP which was HipHop, which is well suited to their means but perhaps not to pretty much anyone else’s.  They contribute back where appropriate, they actually employ Scott McKeever who is one of the key developers of PHP.  So they contribute back a bit.  Otherwise, large companies, some of them pitch in, some of them don’t, it’s kind of the the same story as in most largish open source projects.  There are some who are just happy to take but there are some that come back quite nicely.

Steve: The main guy that I know was Rasmus.  I saw him talk at OSDC a few years ago.  He did the whole thing where he was hacking sites.  Remember that?  He was doing cross site security stuff.  Is he still on the PHP team?  

Adam: Absolutely.

Steve: Is he still Yahoo?

Adam: No, he’s gone to a company called WePay.  Which is a startup payment merchant service provider in the US.  Because pretty much all of them suck at the moment.

Jethro: Kind of a Paypal.

Adam: Case in point.  They’re trying to make it a bit easier, they’re trying to come up with an implementation that’s more suited to the web with general payment processing.  He’s still quite involved.  I think it’s a double edge sword because although he is effectively the, to use the Python metaphor, the Guido of our community, the benevolent dictator for life, he’s very unwilling to use those powers.  He still does quite a lot of work behind the scenes.  But every now and then, and the release of 5.4, which I touched on in my talk yesterday, which is really frustrating me, that we haven’t got an alpha out.  That’s probably somewhere where it would be really nice if he just actually said, “Let’s get a release out”.

Jethro: Draw a line in the sand.

Adam: Case we need someone to do it.  Unfortunately, the people who are in a position to do it, who are prepared to do it, are the people who tend to get argued against by other people.

Steve: The fun of open source projects hey?  

Just to backtrack on the question we had before.  It’s quite nice to see people coming into PHP, bringing in other ideas particularly from other language.  I know there’s quite a lot of effort going into automated testing in PHP.  Like Drupal for instance, have their continuous integration servers and all sorts of stuff, running their tests, there’s the PHPUnit, Hudson which I know has a PHP plugin, and I think it’s Frink - not Frink - can’t think what it is but there’s continuous integration server type work, there’s people doing a lot of stuff Agile type development with PHP which doesn’t sort of, those two things don’t seem to go together in my head sometimes but now...

Adam: It’s interesting.  I think that’s a common perception yet funnily enough there’s no real reason you can’t use PHP for Agile.

Steve: Absolutely.

Adam: All the languages that are considered to be actively Agile your Rubies and languages like that, really work pretty much the same way under the hood - in terms of your deployments are the same, your development structure and process tends to be pretty much the same.  I think it’s just a perception thing, some of the libraries you just mentioned like PHPUnit are kind of an example of that.  You’ve got sort of headline libraries in other languages that everybody knows even if they don’t code in those languages very much.  JUnit for example, being a great case in point.

Steve: JUnit came from CUnit and there’s xUnit.

Adam: JUnit seemed to be the one that became famous.  It’s interesting that libraries like that - Beautiful Soup in Python.  PHP has libraries that do all the same things.  But for some reason, I think just cause the language is unfashionable the libraries are unfashionable too.


Steve: Once you sort of shirk that whole image, that hack and code image, then really it doesn’t really matter.  Any language you can apply all those principals the same.  All these languages that are fairly dynamic and you can prototype quickly in them and have sort of a like kind of a REPL and do little things like that then they all suite the Agile model really well because you can do fast POCs and prototypes...

Jethro: I mean use PHP often in other projects, even systems sometimes, because it’s very, very easy to prototype something and demonstrate that yes this will actually work. And rewrite it later on in a more suitable language if you require more performance or if it’s better suited for the deployment environment.  It’s great for very fast development particularly because of the documentation.  When I’m coding it in Perl for example, it’s a little bit more tricky to go find a particular function that I require.  I might have to go find a CPAN module, the docs for that, read it through and figure it out.  PHP you go straight to the web site I just search the string or a function name and there’s documentation, there’s examples, huge wads of information from the community and assistance there, for quickly whipping up applications.

Steve: Just Google is really handy for PHP.  I do Drupal a bit, I often look for PHP snippets and things like that, and I find that there’s so much stuff there.  What do you guys use for IDEs and things like that?  You’ve got particular favourites there?

Jethro: The normal way.

Adam: I’m equally old fashioned, I’m also a vim user.

Steve: Cool.  There are some people, like I know IntelliJ have got like a PHP...I can’t remember what’s it’s called...not WebStorm...PHP...I can’t think of the name of it...to get code completion...and all those kinds of things that people are used to.

Adam: The two that seem to be gaining a lot of market share in PHP are probably the Zend edition of Eclipse basically, because of their flavour of Eclipse, that basically gives them good PHP support and NetBeans seems to be one that’s really popular.

Steve: What’s the Eclipse respin?  The one I used it for a little while...I can’t remember what it’s called.


Adam: There’s been two or three, that I know of, but I can’t remember any of the names off the top of my head.

Jethro: I know what you’re talking of.  In Amberdms a couple of our staff used to use them. There’s a few options around.

Steve: I use IntelliJ as a Java developer so now I’ve started using it a bit for Javascript recently doing some SproutCore, and things like that, and it’s actually working really well the Javascript completion.  I’m assuming that the PHP is the same.  While I’m on this thread, do you find most people that do PHP programming run Linux or run a VM of Linux?

Jethro: Tricky question because my background and association is mostly with Linux geeks.  Although a lot of programmers that I’ve worked with commercially tend to run Mac OS or sometimes Windows.

Steve: This is the WAMP stack thing isn’t there as well?

Jethro: This is the difference what’s running on the server vs what’s running on the desktop.  Often developers use the desktop that suites them best.  Because at the end of the day you just jump on your server with a console and you’re fine.

Adam: The impression that I have is that, one of the things that I do in my spare time is I’m actually an operator on the PHP channel on freenode, the help channel there, one of the things that’s really noticeable, is that the sorts of people, your beginning and intermediate programmers, who are not doing massive web sites, just doing little scripts here and there, tend to develop on Windows and then deploy to a shared hosting on Linux.  Which sometimes causes some interesting bugs.

Steve: We’ve had some issues, at one of my companies.

Adam: The interesting thing about PHP’s Windows support is that it’s really only worked on by one or maybe two people.  Everybody else who works on PHP mostly use Linux or possibly Mac OS in some cases.

Jethro: Having said that, the Windows support is quite good.

Adam: The Windows support is quite good.  There’s definitely an interesting disconnect there.  I think I remember seeing some stats where the number of people running PHP on Windows was about equal to the number of people running PHP on POSIX platforms, which really surprised me when I saw that, this was a couple of years ago.  Having said that, the ratio of people that installs on Windows to developers that we actually have working on it is much, much lower than the ratio of installs on POSIX platforms to developers working on that.  It’s an interesting disconnect there, that for whatever reason the users who are running PHP on Windows, just don’t seem to...maybe don’t have the skills to, or the barriers of entry may is just too high in terms of doing development on Windows but they just don’t actually seem to actually get involved.

Steve: With the, I guess PHP has long been associated with MySQL as the database, but also Apache, very locked into Apache as well.  With other languages, similar connections are there.  I’m starting to see that sort of break apart now with other languages, I’m just wondering how that’s going with PHP.  Is there a favourite NoSQL and are people are starting to look at using Ngnix and all that kind of stuff?

Jethro: My background coming to it as a new user, I started with PHP version 4, which was quite established in the market and a lot of people were using.  It does end up being so associated with MySQL simply because most people started learning that way and there’s so much documentation available.  But there has been support for other databases for a long, long time.  We’re starting to see that break up a little bit now, not because people are starting to lose interest in MySQL but because rather it’s now easier to support different databases with the new PDO structure, you can just hook different ones, and in the backend you’re not so worried about which DB your using.

Adam: I think, probably to answer the second part of your question first.  The web server side of things, is actually quite, in terms of not using non-Apache web servers, is actually quite mature now in PHP.  We’ve had good FastCGI support for quite a long time.  In 5.3.3. we integrated a project which had been going for a couple of years called FPN, FastCGI Process Manager, which basically gives you masses of fine grain control over your PHP processes that you’re spawning to serve requests and most of the people who use it use it with Ngnix and some people use it with lighthttpd and a few crazy people use it with Apache but I’m not sure why you’d bother.  It actually turns out to be a really good way of doing that sort of thing. That’s quite mature at this point.  It’s being used with a whole bunch of...different server APIs are being used in a lot of different context.  It’s also the recommended way to use IIS now, the ISAPI modules have actually been deprecated.

In terms of NoSQL databases and newer databases I haven’t seen one really catch on in the community yet, as you said it’s very MySQL based, Postgres has a lot of support in PHP as well, but the others not so much.  I don’t know why it is necessarily, that it hasn’t taken over yet.

Steve: I guess a lot of them have basically RESTful interfaces anyway.  I know a few people in Brisbane I think use Mongo quite a bit and then there’s Couch...a few people doing Couch stuff.

Adam: You here about people using Couch and Mongo and Cassandra and various other things.  I think probably Mongo maybe just the best supported at the moment - kind of looking from the outside in.  I don’t think we’re at the saturation point yet, where it’s really become associated with anything.

Steve: It also had...not memcache...I can’t remember what it had...it used to have a cache built in...wasn’t there an early contender?

Adam: We’ve got some PHP specific extensions like APC, XCache...what was the... E-Accelerator...which was itself based on memcache...there’s been a bunch of them...we’ve never bundled any of them in the past.  In 5.4 we will be bundling APC for the first time.  The catch with those is they don’t let you to interact with anything else, they’re purely within PHP.  If you actually have a server environment which actually has multiple languages or multiple layers, which is increasingly common, then you’re still going to end up using memcache or something like that anyway.  That’s really, I think, where most people go now, I think they go to memcache.

Steve: Is there a good go to place where people can find the best libraries?  The thing I’ve found with PHP, there was this guy doing a Drupal talk before, and he said like 7,600 Drupal modules, and I’m thinking I know for a fact those aren’t all active, they’ll probably be at least half of them that aren’t.  I’m sure the same applies for a lot of things that are out there because there is such a proliferation.  Is there a good place where people can go and get some stats or just see who is using what?

Adam: We don’t have a terribly centralised...

Jethro: The closest we’ve got to for a module community site is PEAR.

Adam: But that’s really a different problem, that’s more of a CPAN.

Jethro: There’s more probably Git stuff.

Steve: People do run stats over CPAN, don’t they, on downloads and things like that.  Maybe there’s something out there that could do that.  That’s something I struggle, and it happens with Java a bit, Java seems to have focused on a few key ones, but when you’ve got something that is so widely used.  You don’t want to pick something and it to be deprecated next week or you find you’re the only person on the planet using it.

Jethro: What it comes down to, not the main PHP package itself, but when looking for packages, typically it’s just a case of a Google search to see what people have written about and seeing what the history is.

Adam: I think it’s a little like the Java community in the sense that the PHP community is so mind bogglingly huge and fragmented that people tend to clump into smaller communities like Drupal, like Jumblah, like Wordpress.  We’ve just had a Drupal conference last weekend here.  Just before the conference there’s a Wordpress conference and just after the conference.  People tend to go into there smaller communities.  What we don’t have is, yeah, some central XYZ index of this sort of thing.  I know that we’re actually in the middle of redeveloping the PHP web site at the moment, we’re redesigning the PHP web site.  One of the real concerns that we’ve had, is trying to think of ways to report on users in the PHP community but not actually favour one.  It turns out that this is surprisingly hard.

Steve: Are there any good news sources, like syndicated news sources for blogs, and things like, that you can get all of the PHP blogs?

Adam: I honestly get a lot of my news off IRC and just general programming sites, not so much anything specific.  Your hacker news, your reddit, your...

Jethro: I’m a Twitter whore.  So basically I wait for them to appear and I’ll just follow them.

Steve: Just follow the hash tags.

Jethro: I find people I know who, who I respect, who I have a good opinion of and I’ll send them a tweets or something, that’s interesting, they’ve added a new feature or a new module or...

Adam: We do have a planet PHP but it’s pretty limited in scope.  If you’re interested in Drupal, we’ll just keep picking on Drupal, our designated large project, if you’re interested in Drupal you’re not going to see anything on Drupal on that planet.  The people who work on Drupal they’re in their own community, they’ll have their own planet.

Jethro: And that was with respect to your earlier question about why there aren’t more contributions into PHP itself, I think that’s because a lot of communities are building their own platforms and their own frameworks on top of PHP.  Like say Drupal...

Adam: It’s not widely dissimilar to the situation with glibc or gcc or something like that.  Because people build stuff on top of it and then use that, people only tend to go that one layer down, if they do peek under that covers at that bottom layer, C or the C implementation of PHP, it’s probably just scary enough and just different enough that they go, “No, this is too hard I’m going to stick what I know and what I’m comfortable with”.

Jethro: With Amberdms our main application framework, that we build our products on, is essentially a collection of libraries and functions and there’s lots of function that if you wanted to do it properly you would put into PHP itself.  But as far as we’ve coded up in PHP it runs bloody fast, so there’s actually not lots of incentive to push it into the main library sometimes.

Steve: It’s like Linux and all the Linux kernel forks and the various things, just trying to get stuff up stream, if it’s working for you then leave it.  If someone else wants it, if you build it and they’re come sort of thing. They’ll see it and use it.  The Node.js talk that we were just in, he talked about a few of the things there, and they weren’t developed with Node.js in mind at all, people have just cherry picked bits and pieces, thrown it together, and come up with something pretty awesome.

Jethro: For example, LDAP support in PHP.  There’s base components there to connect to LDAP servers.  We found that they weren’t as flexible and as easy to use as we’d like.  We basically took a frontend wrapper on there and made a framework for it.  Which was the sort of thing I did in PHP but it takes say one day for a PHP developer to build new code on PHP versus having to learn C and spending a week trying build it with the main version.

Adam: The LDAP extension is a good example of this.  There’s plenty of them on PHP.  It’s a very low level API, it’s a very simple wrapper around the C library, that it actually uses for the implementation.  It’s almost a religious question, I guess, where do these things belong.  Do they belong actually in PHP itself or in the user community?  Historically, with occasional exceptions like PEO, historically it’s really been in the user community.

Jethro: I treat PHP like I treat C, just a language that’s the infrastructure that’s there but then build everything else in libraries on top rather than extending the platform to do everything.

Steve: I guess I’ll get onto the question that people probably ask you a lot about PHP is the PHP 6 thing.  It’s a bit like Java 7 and 8 for me as well.  These things they never come.  I know it’s a very complex topic and you spent a whole half an hour talking about it.  I guess just a brief, executive summary what’s happening now with PHP and the versions and all of that?

Adam: The back store there was, PHP 5, which is the current stable version, got released in 2005, work started pretty soon afterwards, like in the same year from memory, on what was going to become PHP 6, which was going to be a fairly heavy reworking of the language, to support Unicode natively, and to also implement a bunch of other changes that had been pending for quite a long time, name spaces - all sorts of things.  Unfortunately, it’s turned out a little bit like, I picked on Perl 6 yesterday in my talk...

Steve: I think every language has these sorts of things...

Adam: I’m going to pick on it again.  It sort of turned into a bit of a Flying Dutchman, it’s kind of on the horizon but you never caught up to it.

Jethro: I remember reading about Perl 6 in Linux Conf 2006.

Steve and Adam: Yeah, yeah.

Steve: Same thing with Python, wasn’t it? Python 3 has been going on for ages.

Adam: Credit to the Python crew they actually did it in the end and it was really good, they’ve actually done really well.  We went about 5 years but there wasn’t much traction happening.  The headline changes had been made but it was death by a thousand cuts, there were so many other small things, they impacted, the big headline changes impacted.  The way string handling worked internally completely changed, things like that, which meant that every function that dealt with strings, which in PHP is about 90% of them, had to actually be reworked as well.  I think in the end we bit off more than we could chew.  There probably weren’t enough cooks necessarily as well.

Jethro: I think it’s also the risk in any project.  As soon as someone says lets rewrite something or do a whole bunch of upgrades.  And you go, “Sweet, here’s a nasty problem let’s stick it in the next release.  Here’s another nasty problem let’s stick it in there”.

Steve: You put all your eggs in there.

Jethro: It becomes impossible to do releases.

Steve: I think when you’ve such a massive user community and people using it, the inertia is just incredible as well.  

Adam: Absolutely.

Steve: That’s why I think that a lot of these language when they’ve got to there, like Perl 6, Python 3 and then Java 6/7 you’ve got a few little things here that are all sort of the same age, they’ve got this critical mass and you’re really fighting against that community thing.

Jethro: There are probably 4 or 5 languages that are all fighting the same sorts of battles in this regard and they’ve all had the similar problems in the end.  18 months ago when we released PHP 5.3, and 5.3 was a bit of a watershed release, it actually included a lot of stuff that was originally going into 6.  Name spaces were the headline feature but there was a lot of other things that went in there as well.  Really good.  Changed the language quite a bit but it a way that was remarkably backwards compatible.

Jethro: Yes.

Steve: Is that the one the one that’s mostly out there now, if you were to get a DreamHost or something like that?

Adam: There’s still a lot of 5.2 out there at the moment.

Jethro: And there’s some 4 out there.

Adam: There’s still quite a bit of 4 and 4 has been EOLed for 2 ½ years now.  People don’t tend upgrade as fast as you’d like as a language developer.  When you’re doing support, it’s very common to say, “Just do this” and then the person goes, “I’m running PHP 5.1.6 because that’s what RedHat ships” and you go, “Right, so you don’t actually have any JSON functions because it’s a version of PHP from 4 ½ years ago before JSON was really major”.  You just have that constant battle to get people to upgrade.

Jethro: I mean we’ve found that problem.  At work Amberdms does is two main things are: a web based billing system and accounting package and also a whole bunch of tools for user management for LDAP and so forth.  The problem was we found we had enterprise customers, actually we don’t want to transport people to different platforms and that leads to problems.  So basically we said, “Okay, if you want commercial support you will use PHP version 5.3 with web packaging, we’ll release it, and here are the packages for your platform”.  And basically dropped support for older releases.  I’ve spoken to people before who do have to support older releases, for example, I’ve a got a very good friend who does Wordpress development, and not only does he have to do it for legacy releases like version 4 where you have to do that, you can’t even use half of the fancy new functions because they don’t exist, so you have to do things the hard way.  And then worse is the hosting companies which try to do their own thing, with their own customisations and security by locking down certain features in certain releases.  It’s just a real pain.  For any large enterprise project, I’d say, what you’ve got to do is mandate a certain version.

Steve: This is probably where the virtual stuff is helping a little bit. People can take that old thing, if they don’t want to...I’ve worked with enterprise clients...and I understand why they don’t want to upgrade...they can take that silo, put that in a VM or something, and then they can say we’ll spawn a new VM for this and we just hook up our F5 or whatever is that you use and these guys will go here and these guys will go here and these things can happily co-exist.

Jethro: Our policy was, we will support our product on our version of PHP, we don’t guarantee any other applications, and that’s cool, customers spawn off different VM chunk, CentOS or Red Hat ye olde and that worked.

Adam: I mean there is a bit of a fragmentation issue there, but as you say, it’s not one, it’s easy  to mitigate if you’re doing a large site in the commercial world.  I think where most of the issues actually come in is your $5 a month shared hosting or $1 month shared hosting.

Steve: Free...


Adam: Free shared hosting.  That’s where you see these old versions, these weird patched versions, that’s where your fragmentation comes in.  It’s kind of the long tail.  The problem is that’s what most people who are coming to PHP for the first time see.  That’s probably going to be their first exposure to it.

Steve: They’re going to wanna install Drupal on their 0...$1 a month host.

Adam: It’s quite easy and quite understandable that some of them get pissed off by it.  It’s just too hard.

Steve: With PHP and the community in general, I know you’ve talked about IRC things like that, and we had the Drupal meet last week, and there’s quite a lot of PHP people here at Linux Conf.  Are there good places to hang out, good meet ups?  If people want to get together with other PHP developers.

Jethro: Sometimes they’ll organise a BOF - which is a birds of feather/chat/pub visit.  But most of the time people just already know and say, “Hey, you should be talking to so and so about your project”.  There’s not much structure.

Adam: There’s quite a strong user group community in some places.  The impression I have is that the user group community in Western Europe and in the US is actually very good.  If you’re in a decent sized city you will have a user group and people do meetup.  Not so much here, we don’t really have one in Perth.

Steve: There’s a PHP group in Brisbane which has now merged with the MySQL one which is pretty active.  I live on the Gold Coast and there’s a heaps of PHP developers on the Gold Coast, but it’s all little stuff, and I think they’re all pretty much on their own, and they don’t talk but this is a general Gold Coast problem, but I think particularly PHP, because there’s a lot of people who just pick it up.  You know, maybe their Dad’s got this business and they go, “Can you do me this little web site?” and they just get the book and do a little bit but they’re pretty much in their own little silo.

Jethro: Yeah, I’m in the new convert PHP user group mailing list.  And some stuff you get is very interesting.  You can get users who have absolutely no clue, who say, “I want to build a CMS for my web site”.  And everyone else is just sort of face palming, and going, “You don’t quite realise what’s involved in doing that”.  We’ve been doing heavy skill development for 10 years.

Adam: The classic example of that in Australia, in terms of that tragedy of the commons, to an extent, if you go onto Whirlpool and have look in the web development forum and they’ve got a PHP group and you if you pull that up...more than half of the posts will be from people...job ads are banded on Whirlpool...but they’ll be thinly veiled job ads...I’m trying to do X can somebody help...pretty obviously...please if you can private message me we’ll talk about it some sort of a contract...the problem is that they always have unreasonable expectations...you get a thread a month that basically is...I’m writing a Facebook clone and I need to have it done by next week...and I have $500...

Steve: I get the same.  I get people calling me up, asking me for this, ”Can you get me a quote?”  And I’ll say, this is what our hourly rate is and it will probably take this amount and then they usually disappear and then I’ll find out that they’ve like got their son to hack it up in PHP or something.

Adam: It’s kind of a web industry problem in general.  This isn’t just PHP.  It’s probably just visible in PHP because it’s a large web community.  I think it’s just a common problem.

Jethro:  Absolutely.  

Adam: People don’t understand the value of a good web developer.  A good web developer charges good money.  And there are reasons for that...they’ve spent years working on it...it’s just as much of a craft as writing any other type of software.

Steve: I think there are some well payed PHP developers now.  I think there’s a problem with perception with the client probably.  They’re not used to paying well for it.

Jethro: It depends what your market is.  You’ve got developers who are pretty good developers who go, “I want a web site or CMS whatever”, I’ve got to get it fucking done. Then you’ve got programmers like myself who use PHP as a tool, I do a lot enterprise customer work.  The customer says we want this solution.  They don’t care what it’s built in.  PHP is just a tool to get it done.  From their point of view they’re hiring a consultant who knows stuff, they don’t care if it’s PHP or anything.

Adam: Quite a few of my friends in Perth work for marketing companies.  A lot of the PHP developers in Perth don’t really work as headline PHP developers they work as web developers at marketing companies and consultancies and things like that.  The fact that they wrote PHP is really incidental.  If you go to their web sites you never see PHP or Python or Java or whatever technology they’re using.  Nobody cares.

Jethro: That’s like a system administrator, you wouldn’t say oh I’m a bash scripter or I’m a Perl scripter.  But that’s a really important part of their job.

Steve: Yes, it’s funny that you should say that.  I have come across a few people recently who’ve said, “I’m a web developer”.  And I go, “You know that there’s a really great Javascript group in Brisbane”.  And they go, “I actually do a lot of PHP really".  But they don’t introduce themselves as a PHP developer.

Adam: The job that I actually work at now, which as I said at the start is primarily a Python job, with quite a lot of Javascript as well, but primarily Python.  I actually went and had the initial interview and they advertised for web developers with PHP experience.  They didn’t mention Python in the job ad.  This kind of shows the mind share...

Steve: They just think of web - PHP?

Adam: The reason for that was, I talked my boss about it, I actually had the first interview and didn’t know they were a Python shop until the very end of the interview when they said do you have any questions for us, we talked about PHP the whole time, do you have any questions for us?  What sort of frameworks are you guys using if any?  And they said we’re a Python shop we use Django.  But the reason why they did that was because PHP had the mind share, if they put PHP in the ad they actually got good people applying, if they just Python in there they got people who were probably good programmers but who didn’t have the web development experience.  Somewhere along the line PHP has become synonymous with Linux web development.  People who aren’t actually developing in PHP, I’m not sure if this is a good thing or not.

Steve: We advertise quite a bit for people with polygot, people not that they want them to code in all of those languages, but we like those kinds of people that can be adaptable.  Toolsmith type thing.  We often do put Groovy, Java, we put other JVM languages in there, even though we might not be doing them all the time.  There is a certain kind of person, if you can hook into those people, I think that’s where you get the good kinds of people.

Jethro: I guess it’s the difference between looking for a geek versus a “I’m a rent a coder” that just does Java because that was what I was taught or just does PHP because that was what I was taught.

Adam: When I used to interview people, I haven’t done so for a while, when I worked at iiNet for a year, for people from overseas who are a major ISP here in Australia, I was quite involved with interviewing people for programming positions.  One of the very first things I would ask them would be what open source do you have and what conferences have you been to.  Because to be a well rounded developer, whatever language you’re doing, you really have to get out and get engaged in the community and learn.

Steve: I’ve found a few people from bar camps, for instance.  I found one of my business partners through bar camp.  I always want to know if they’ve been to bar camps, conferences, you know.  What IRC channels they like or whatever.  All that sort of stuff.  If they go IRC err...

Adam: At the end of the day, you really want to work with people actually, not necessarily live and breathe the stuff 24/7, everybody needs interests outside...

Steve: You don’t want complete...

Adam: No, except for you Jethro.  But you do want people who are interested in this on a personal level, not just a professional level.  You don’t want somebody who just goes to work 9 to 5 and just writes their 500 lines of PHP per day.

Steve: I think I cut off you before, I apologise, when you were talking about PHP 6.  

Adam: I was running over a wee bit.

Steve: 5.4 is basically the new 6.

Adam: In March last year, PHP 6 got cancelled, the branch got deleted from Subversion and we rebranched a new trunk off PHP 5.3 which was the current stable branch.  Backported the bits that made sense, which actually weren’t very many.

Jethro: Most of them got in 5.3, hey?

Adam: A lot of them got in with 5.3 and then from there we’ve just had new development going on from there so that should be out sometime this year.

Steve: That’s almost like, putting time frames aside, that’s almost like your PHP 7 kinda almost...you sort of lept over that.

Adam: We did.  It’s not a massive change from the user perspective, the only real new language feature was traits which we basically nicked from Scala.

Steve: For 5.4 - it’s probably fair enough then - you’ve got to remember to jump over 6.

Adam: We’ve had discussions about that on IRC and on mailing lists...


Steve: You mentioned yesterday about books and things like that...it becomes a big problem...

Adam: Basically we can’t use the 6 number anymore.  It just has too many connotations.

Steve: Isn’t it the number of the devil and all that anyway?

Adam: Just ask the Perl developers.

Steve: That was great.  It was great talking to you guys today.  If anyone wants to get in touch with you guys I’ll put your details on the show notes.  I’m sure there’s heaps more that we can talk about.  It was really good to do something a bit different.  We’ve been very enterprisey in this podcast so far - so I wanted to get out and do some other languages.  Thanks for talking to me.

Adam: Thanks Steve.

Jethro: Cheers Steve.

Craig: You’ve been listening to the “Coding by Numbers” podcast.  Brought to you under the Creative Commons attribution licence.  Transcripts are provided by Andrew Newman.  Please see the show notes to download them.  You can send any feedback or comments to podcast@codingbynumbers.com.  Please subscribe to the blog or follow us on Twitter to keep up with the latest news about the show.  Our intro and exit music was “Chopping Block” by Mike Beale.  Thank you for listening.