Rasmus Lerdorf is undoubtedly the most famous Greenlandic geek alive. Having created PHP as a bunch of hackish scripts to support his website in 1995, he turned it into a powerful, fully fledged language that’s now used by millions around the world.
Linux Format magazine caught up with him to find out more about his position in the PHP camp today and the decisions he made early on that made the project a whopping success.
Linux Format: How much involvement do you have with PHP development today?
Rasmus Lerdorf: A lot less now than 10 or 15 years ago, that’s for sure. But I still read the mailing lists every day, discuss features and fix bugs occasionally. Personally, I tend to be more interested in security and performance-related issues than other things. I’m as involved as I have been in years.
LXF: What’s the structure of the PHP team? It doesn’t seem clear…
RL: There is no structure!
LXF: Who makes the final decisions?
RL: We do. We have a mailing list called Internals that’s completely open – anyone can subscribe to it, read it, post to it and I’ve always been insistent on keeping the process transparent. Anybody can go back and read the mailing list archives to figure out how we got to any one position.
It tends to be that code wins. If two groups are arguing, but one group has an implementation and the other doesn’t, well, the implementation wins. It almost doesn’t matter how braindead it is; if we should have the feature, but we can’t agree on the implementation, we’ll go with whoever builds it.
LXF: Is there pressure to be the final arbiter of decisions?
RL: Sure, there is. I’ve always tried to downplay that role, because I don’t want to have the final say in a lot of these things. I want the project to be self-sufficient and I want it to be self-propelling. If I’m in the loop as the decision-maker, I make every decision – that doesn’t scale at all.
Honestly, there’s a bunch of things I don’t know enough about. I mean, take Sybase. I’ve never used Sybase in my life. How would I make an intelligent decision about this versus that with a Sybase extension? For a lot of PHP, that’s the way it is. There are groups of people that are much better off making these decisions.
LXF: Has that slowed down development of PHP 6? It’s been in progress for two and a half years…
RL: What’s slowing down development on 6 isn’t decision making: it’s finding people interested in and capable of doing unicode-oriented programming. It’s difficult – unicode isn’t easy. There’s a lot of complexity, and there’s also plenty of people who don’t care that much.
From a big-business point of view, everyone wants unicode in there, but from a day-today perspective, a lot of people don’t need unicode because they’re building things for one locale. Theoretically, everyone wants to go to UTF-8 eventually. But it’s one of those ‘I’ll get to it later’ things. It doesn’t have the same sense of urgency as many of the other features in PHP.
When someone says: “I need this now,” that’s when things start moving. Developers are responsible for this in their own use, their jobs, their companies, whatever. That’s not quite there in PHP 6. It’s being pushed mostly by the larger companies, because they’re the ones that tend to need internationalisation.
LXF: Which languages particularly inspired you early on in the development of PHP?
RL: C and Perl. Those were the two languages I was using back then. Because originally I wasn’t trying to build a new language, I simply needed a way of using what I already knew within the confines of the web server and to solve a problem. I didn’t need a lot of the stuff that was in Perl and I didn’t want all the memory management hassle of C, so I needed a stripped-down version of C, that wasn’t quite Perl, that I could easily embed and was targeted at the problem.
Later on, C++ and Java were languages we looked at to figure out what we needed to do in our object orientation code. But that was other people. I’ve never been a huge fan of OO – I use it when I think it’s appropriate. When I have an object that carries data and some methods to manipulate the data, that’s OK. But I’ve never been a fan of everything OO.
I’m OK with procedural code and the web is a top-down type of problem. It makes sense to me that you have HTML, you spit out a bunch of HTML, then you call a function to do something and then call another function. Yes, you might have a database object behind the scenes, but I hate things like an HTML object with a BR method on it. Brandnew field and anybody who did anything interesting stood out. Now there are so many people and those people are all getting new things out; it’s impressive to me that they’re able to get above the noise and all the other really cool things that are out there.
I guess the main thing I can say is: you need to give up control. If you want to build an open source project, you can’t let your ego stand in the way. You can’t rewrite everybody’s patches, you can’t second-guess everybody and you have to give people equal control.
LXF: Was there a moment like that for you?
RL: Definitely – in 1997, it basically came to the point where I was going to kill the project, because it was growing so fast and my mailbox was filling up with suggestions, complaints, patches, all these things. Up until then, I had been doing everything myself. Someone would make a suggestion, send me a patch and I’d rewrite the patch the way I thought it should be done.
I would disagree with people, I’d argue back and forth, and I just couldn’t keep up any more. I was getting frustrated and sick of it all, [thinking]: “Why are all these people expecting me to fix their code? They’re not paying me. What the hell am I doing working my ass off for these folks? I don’t even know them – what the hell is going on here?”
So that was the time when I said: “This has to change. Give the guys who have been complaining over the last few years access to the code. The guy who has been complaining about the Oracle extension, he’s been a pain in my ass for years, so it’s yours now buddy. Any further issues or complaints about Oracle go directly to you.” And that really empowered people.
When they felt that they now owned a slice of PHP, they started getting defensive. Instead of complaining to me about things – once they got ownership, and power, the whole atmosphere changed. And it got a lot more fun as well, because I didn’t feel like it was just me against the world any more; now it was a real team effort.
LXF: Do you keep tabs on other languages such as Ruby?
RL: I think [Ruby on] Rails has tapered out a little bit lately. Maybe the new version that they’re coming out with – the one that’s actually fast (laughs) – maybe that will be interesting. But there are performance issues with the scaffolding and stuff, and they recognise that, which is why the new build will be better. But I’ve never been a huge fan of code generation, to be honest – it’s building apps that have already been built.
The scaffolding, well, it looks good in a screencast, but for real-world use the scaffolding just wasn’t interesting to me. And I think many other people have come to that same conclusion: ‘OK, the scaffolding is cute, but we need something real.’ Ruby as a language is great, I think it’s a really clean and nice language. There just aren’t that many people who know it well.
A lot of people went to Ruby on Rails because they got sucked in by the screencast and the ‘hey, you can build an app in 10 seconds’ factor. But when they needed to do something real, they thought, ‘Oh crap, I don’t know Ruby very well!’

No Responses to “How PHP became such a huge success”