Categories


Archives


Recent Posts


Categories


Why did the Elephant join the Guild?

astorm

Frustrated by Magento? Then you’ll love Commerce Bug, the must have debugging extension for anyone using Magento. Whether you’re just starting out or you’re a seasoned pro, Commerce Bug will save you and your team hours everyday. Grab a copy and start working with Magento instead of against it.

No Frills Magento Layout is the only Magento front end book you'll ever need. Get your copy today!

In the past — three? four? let’s call it n — years, there’s been a lot written about PHP’s renaissance. The PSR standard(s), Composer’s day job as package/dependency manager, Composer’s night job as a simple standard PHP bootstrap, PHP’s asymptotic crawl towards a “types mandatory” enviornment, and a stable FastCGI server (PHP-FPM) have all made PHP a much more attractive choice for programmers, developers, devopserators, managers, and enterprises who need/expect/have-to-sell a programming enviornment’s features as being a certain way.

While we’re all better off for it, there have been some unintended consequences. The biggest one is a complexity growth curve that looks like it might be exponential.

PHP Circa 2007

Here’s an example: What does it take to get a modern PHP enviornment up and running?

Ten years ago, all Apple computers shipped with an Apache web server and a relatively current version of PHP. This meant with the click of a few buttons users could be up and running with a PHP enviornment. If you wanted MySQL it was just an installer away. If you owned a Windows computer you didn’t have anything built-in, but there was a healthy ecosystem of “WAMP” installers — (W)indows, (A)pache, (M)ySQL, (P)HP. All you needed to do was download an installer and you’d have an enviornment ready to run PHP. Back on the Mac, if the stock enviornment didn’t do it for you there were “MAMP” installers that did similar things. There were also long standing projects like php-osx.liip.ch (then run out of entropy.ch by the incomparable Marc Liyanage).

This put PHP within the reach of millions of potential new programmers. If you owned a computer and could follow along with some easy online instructions, you’d be writing PHP the same day.

All these projects still exist — but they’re starting to fray on the edges. Things like less-than-timely upgrades to SSL, or the continued reliance on good-old-fashioned-just-works mod_php. Even when a project like php-osx.liip.ch stays up to date, their FastCGI setups don’t work out of the box.

Most worryingly — some modern PHP platforms are starting to leave these old installers behind. I’ve been told in more than one GitHub thread to abandon one particular PHP distribution in favor of another.

Running PHP in 2017

There are, of course, options for folks who want to run a modern PHP stack. The caveat is these are tools for professionals. They require either a knowledge of computers that go beyond the average user, a tolerance for combining half-broken systems into a coherent whole, or both.

Take a look at this Stack Exchange post for getting a PHP-FPM enviornment up and running on OS X/MacOS. It’s awesome that a few leaders can gently prod their community into producing a resource like this, but consider the steps themselves

Next, consider the complexities that exist for folks running a Windows environments — Vagrant and Docker start simple but ramp up quickly. Heck, there’s a UTF-8 bug for the most popular apt-get PPA for PHP 7 that can trip up even an experienced programmer. Open source projects with starter Vagrantfiles or docker recipes exist, but quickly fall out of date.

Compare this with the world 10 years ago — double click an installer or toggle a switch in your settings. The complexity has ramped up several fold, and we haven’t even gotten to Composer or finding an IDE that can tame PHP’s brave new types-visible world.

Professionals will deal with this — but PHP is slowly becoming an inaccessible technology for the average computer user. As a professional, I’ve been delighted by PHP’s maturing tooling, but PHP’s secret weapon has always been letting that average computer user get started.

Wrap Up

PHP doesn’t need to fix this — I’ve seen programming environments far less accessible find their niche. However, if PHP wants to move from its renaissance into its enlightenment, we should take a hard look at the people we’re leaving behind in the name of modernity or fake-elitism. Whether it’s for the romantic idea that anyone should be able to use a computer to write a program, or the hardened business logic that wants a user base large enough to treat as a market, turning PHP into a technocratic guild feels like the least renaissance-y thing possible.

Series Navigation<< PHP-FPM and File Permissions

Copyright © Alan Storm 1975 – 2017 All Rights Reserved

Originally Posted: 10th July 2017