Dear PHP, I think it’s time we broke up.

Dear PHP,

We’ve been together for about five years now. I’ve had a lot of good times and I’ve really enjoyed being with you. However, the more we work together, the more concerned I get about our future. I’m sorry, but you don’t have the elegance that inspires me to want marry you. I think it’s time we broke up.

I think the biggest problem is you just don’t know who you are; it seems to have haunted you your entire life. You originally started life as a useful collection of Perl scripts for maintaining an online resume and were aptly named “‘Personal Home Page Tools”. That’s fine; I think most open-source technologies are born because a single person needed a specific itch scratched. However, then something weird happened. You were recreated by two new, adopted parents in 1997 and quickly promoted to version 3.0. The most obvious hint of this burgeoning identity crisis was that you were stripped of your name and given the nonsensical monkier “PHP: Hypertext Preprocessor” instead. Why were you ashamed of your roots? I think this may have been the first sign that you’re lacking a guiding philosophy found in many other successful open-source projects. You just aren’t well-rooted (unless we’re discussing your security issues again–you’re well-rooted there. But I don’t want to harp on that again today).

I’ve said it before and I’ll say it again: you just aren’t very consistant; it’s hard really get to know you even when I think I understand you. Yes, I do understand your need to be everything to everyone, but that neediness has hurt you along the way. Why do you use underscores in “strip_tags” and “str_ replace” but not in “strlen” or “wordwrap”? And why do you like “ip2long”, but it’s “strtolower”? Don’t even get me started on how you’ve implemented OOP features. The lack of consistancy can be maddening when I’m trying to work with you.

I know, I know… you say that you’re changing and I should be patient. “The next version.” But I think we’ve all heard that before. Quite honestly, I think you have some deep-seated personal issues that need to be resolved first. The important people in your life keep abandoning you when you need them most. This isn’t something a shopping trip and make-over can cure. I’m not trying to be an asshole here, but I just don’t know if you can ever really change.

While I’m talking about personal failings here, I wanted to touch on your… “performance”. Yeah, yeah–most of the time it’s good enough. Sometimes though, I just need it faster. I know there’s a few things you can use to enhance your performance, like APC and Turck MMCache. But we shouldn’t have to use those things. It just adds to the overall complexity and makes the relationship harder to maintain.

I hope we can still be friends. I’m sure I’m going to still be seeing you around a lot and I don’t really have problems working with you. However, you just aren’t marriage material and I need to think about the future. That Ruby down the hall seems to be getting a lot of attention lately; I might flirt with her a bit. I also want to give Python another shake. Her lack of curly braces and semicolons is kinda weird, but she has a nice personality. Most importantly though, Python seems to really understand herself.