What WordPress Teaches Us About Software Ecosystems
WordPress is, without a doubt, one of the most successful pieces of software of all time. Sure, Microsoft’s Office and Windows are both more influential. Apple’s iOS is huge, as is Google’s Android. Linux is no chump either. But WordPress is relevant to all those platforms and more. And it has about the same name recognition to boot. If people can name a single piece of web infrastructure technology today, there’s a good chance of WordPress being the one they know. (Not counting Facebook as infrastructure.)
WordPress people like to boast that it’s running on at least 25% of the web. And right or wrong, that number gives a pretty clear sense of the impact of it as a technology. Many web developers have opinions on Rails, Jekyll, Django, Laravel, or CakePHP. Every developer has an opinion about WordPress. Why is this?
That’s what we’re going to be exploring today: what facets of WordPress’s current and historical ecosystem led to its success?
Starting Early Helps
One of the primary reasons that almost every web developer has an opinion on WordPress is that it’s been a force to be reckoned with for such a long time. WordPress isn’t the oldest project on the web, but it’s older than many. The Wikipedia page lists the projects start date as May 27, 2003. That is: WordPress is 14 years old.
There are older web projects. Some of them are also actively maintained. But few things have the combination that WordPress does: a long history and continued and caring maintenance.
There are lots of different reasons that one could name for WordPress’s long and storied success. Some things we’ll discuss:
- a substantial (if not wildly successful) commercial variant of the software
- the marketing love and on-going stewardship of one of the project’s founders, Matt Mullenweg
- WordPress’s focus on a different audience than most other software one compares it to
- the fact that many big and small conferences and communities now talk about and support it.
Commercial Support Helps, But Fractures & Confuses
WordPress.com causes a lot of headaches for the pedants of the WordPress community.
WordPress.com causes a lot of headaches for the pedants of the WordPress community. This being the internet, most of the commentators inside of the community are pedants. WordPress.com is a single installation of the WordPress product, which is sometimes given the counter-name “WordPress.org”. WordPress.com has been around for a long time — 11 years to be exact. And Automattic (the name of the corporate entity) are making a profitable and on-going business there.
WordPress.com isn’t an unbridled success. It is seeing a rise in competition from closed-source alternatives. But the company has always been a host for some of the most dedicated and resourceful people in the WordPress community. This fact worries some in the WordPress community, but WordPress.com’s business definitely supports the health of the WordPress project as a whole.
It’s not that Matt Mullenweg’s employees (both personally or through Automattic) make up a majority of WordPress’s contributors. But the support that has come from them has been a positive force to keep the project evolving and changing in positive ways. And WordPress.com also helps keep the project’s name in the news. But other companies — many large hosting companies, a few “large” WordPress-focused consultancies — also support contributors. It is clear that without commercial support WordPress would be nowhere near where it is today.
BDFLs, for Better or Worse
The term “BDFL” is complicated in meaning and impact. Standing for “Benevolent Dictator for Life”, the title is sometimes formally or informally given to a founding or leading member of a project. Generally, Linus Torvalds is the BDFL for the Linux operating system. In programming languages, people often talk of Larry Wall (Perl) and Guido van Rossum (Python) as BDFLs. In WordPress, if anyone has the title, formally or informally, it belongs to Matt Mullenweg.
On the whole, I’d argue that Mullenweg has been an good force for WordPress. Through the support that Automattic/WordPress.com provide to the project, and the number of more “personal” employees under the aegis of his personal company “Audrey Capital”, he’s given a lot back to the software that’s built his career.
The finest of fine points about Mr. Mullenweg are beyond my interest here. But I do want to point to both an arguably “good” and a “bad” instance of influence that he has wielded. Let’s start with the “good.”
5% For the Future of WordPress
A few years ago, Mullenweg issued a public challenge to other people whose businesses rely on the continued success of WordPress. He challenged those who benefit from the platform to give back 5% of their people to the project that makes their success possible. This was a public challenge, but I suspect one he had been pursuing privately long before.
In response, many hosting companies and consultancies took steps to more formally and publicly show how they’re contributing back to the WordPress codebase and community. This has been a good thing. The bus-factor of WordPress—the mythical extant to which a project is incapacitated by a key team member being hit by a bus—is now at an all-time low. The number of hard-working contributors who are paid by their employers to give back to WordPress is markedly higher than it once was, or is the norm for many open source projects. This is great example of where a benevolent steward is valuable.
Petty Community Fights — Thesis & the GPL
There are less-great things about Matt Mullenweg’s stewardship too. Though I have no desire to make this a personal attack on him, certain of his choices are debatably wise.
The most prominent example is the Thesis theme. Around 2010, the WordPress commercial ecosystem was in its infancy. License terms for themes were all over the map. Matt used his power to take a stand—WordPress is licensed under the permissive/viral (depending on who you ask) GPL v2—and so software that relies on it should be licensed in a compatible way. Whether you (or the courts) agree with that opinion is beyond our scope in this story.
The point is that one fairly prominent and popular theme — Thesis — didn’t buy this line of reasoning. Chris Pearson, who had created the theme, thought that he could and should keep a proprietary license for his theme. This led (after a series of altercations) to him being treated as a personal enemy by Mullenweg.
The specific details are neither worth reiterating or well-known to me. The general outline is that Mullenweg has (and still has) an ongoing public campaign against Pearson, which has included paying for prominent bloggers to stop using his themes. Most troubling, Mullenweg launched a suit against Pearson by which Automattic is trying to invalidate his trademarks for the use of the name of his theme. The general consensus is that this is an act of vengeance, a case of Mullenweg trying to get back using Automattic’s overwhelming legal strength.
Some read this story as heroic safeguarding of free (libre, without restrictions) software. Other see this whole thing as a petty fight that is below the dignity of someone who regularly demonstrates impressive thoughtfulness and care. Both readings doubtless contain some truth. But these are the good and bads of having a DBFL for your software project.
Worse is Better, or Code Quality Doesn’t Matter
WordPress is GPL licensed. So anyone can see its code. And after they’ve expressed their reservations about the software in use (if they have any), most developers will express their horror at WordPress’s code. The source of this fear is sometimes fun to interrogate. It’s often poorly sourced, or based on quite-old versions of the code.
That said, WordPress’s code is not a model of beauty. Or testing. Or keeping low technical debt. Or making indisputably wise innovations. WordPress’s code is unmistakably evolving. And I find that the vast majority of the changes being made to it are for the better. There are, for example, more and more convenient and useful classes inside the system. One of which has been correctly derided for a decade for being PHP 4-style procedural code.
But there are still plenty of ugly edges of WordPress code. And when we expand that discussion to include the wider ecosystem, it gets worse. But the core thing to realize is that WordPress’s low code-quality scores haven’t encumbered it so far. And still don’t. And that’s mostly down to the fact that…
Know Your Audience: WordPress is for Hosts, End Users
WordPress isn’t, generally, selected by developers for the beauty of the code and how much desire they have to work with it. In many ways, development is the red-headed stepchild of the WordPress ecosystem. It’s fine if you want to do it, but we told you there were dragons.
WordPress serves two masters. First, end users who are looking to publish online. Second, the large (shared) hosting companies.
WordPress serves two masters. First, end users who are looking to publish online. Second, the large (shared) hosting companies that make a majority of their money offering basic PHP web hosting for end-users looking to publish online by self-hosting WordPress.
Sure, generic shared hosting from the likes of HostGator, Bluehost, Media Temple, etc., can be used for things other than WordPress. But I can’t fathom what else the majority of their customers would be running other than WordPress. WordPress is compatible back to PHP 5.2 (for better or worse) and that means it’s the omnivorous beast that small and large hosts love. (The long discussion about why hosts love PHP is worth having, but not right now. Just know that it is very important that WordPress is running PHP server-side.)
End-users, in Mullenweg’s vision, have always been the important customers for the WordPress project. They are the reason that the focuses Mullenweg announced this year at the most recent “State of the Word” were improving onboarding and editing experiences for non-technical people. As WordPress faces increasing competition for these users from the newer closed-source platform like Wix, Squarespace, etc., it must serve these users even better than it historically has. (And it has been no slouch in end-user experience when compared to tools developers like more.)
But end-users like WordPress, once they get over the learning curve. I’ve likened WordPress to the Microsoft Word of the web, and the analogy continues to resonate. Both tools are very well-rounded and capable. Both are used for purposes they aren’t meant for because users find them easier to use and access than more-appropriate tools they aren’t as comfortable with.
WordPress’s Deep Conservatism Gives Confidence
my-hacks.php: this pre-plugins file-based modification system is still supported by WordPress in 2017
Tying together the above two points, WordPress’s code continues to be not-great because it’s committed to an easy-and-seamless experience of upgrading for end-users. This is the reason for and outcome of a long conservative streak. The most obvious and egregious example of WordPress’s commitment to backward’s compatibility is a little story of
my-hacks.php. The single sentence version is this pre-plugins file-based modification system is still supported by WordPress in 2017. And multiple efforts to remove the support have been reverted for fear of breaking things on users.
WordPress’s conservatism (which you can find a more thorough study of here, including more details on
my-hacks) also means that the community isn’t in a hurry to adopt the latest best practices from outside projects. The most obvious example is that Composer has virtually conquered the non-WordPress PHP world in the last five years. But WordPress has no official interest in understanding what, if anything, it could do to leverage that project for its own purposes.
The obvious and somewhat defensible reason is that WordPress, for end-user benefit, doesn’t want to stop working on PHP 5.2. And Composer has never run on PHP 5.2 or below. But it’s also that WordPress doesn’t want to rock the boat if it doesn’t have to. (That is, after all, the reason that they still support PHP 5.2.)
Complacency Hurts (but not too much)
The conservatism that runs deep in the WordPress project does have some disadvantages. I see the most pressing threat to the WordPress ecosystem today in tools like Squarespace which are evolving quicker and in generally more user-friendly ways than WordPress is. Couple that with some significant marketing prowess, and those tools could start eating a lot of the core WordPress market of small-site-owners and expert-user implementors.
WordPress survived Tumblr’s peak just fine
In an acknowledgment of this fact, the project is working harder on refocusing on making a more powerful power-user experience on the first run and customization of a site, and for the creation of more complex content that WordPress has never had to make easy. But these changes have been slow in coming.
The slowness of UX and developer-experience improvements is not new though. WordPress has always been more conservative than “move fast and break things”. And cool new things have come-and-gone as big threats before. For a short time, WordPress feared Tumblr taking all its users. That led to one of WordPress’s worst features, post formats. But a full discussion of that is something for another time. Suffice it to say that the feature didn’t save WordPress, but WordPress survived Tumblr’s peak just fine.
A Big Ecosystem Creates Its Own Gravity
I’d venture an unresearched wager that WordPress has more plugins and themes than all other similar web platforms combined have of comparable (but likely differently named) choices.
One of WordPress’s strongest weapons against challengers new or old today is that it’s gotten so darn big. WordPress has literally thousands of free themes and plugins available for it. Many of them are very good. There are even more that are available only for pay.
The WordPress ecosystem isn’t as big as that for Windows or phone apps. But it is big, and no other single online publishing tool comes anywhere close. I’d venture an unresearched wager that WordPress has more plugins and themes than all other similar web platforms combined have of comparable (but likely differently named) choices.
This size begets its own gravity. If you look around for web site designs you may well find yourself buying a WordPress theme because it looks good and then going to find out more about this WordPress thing after. It’s not likely a super-common scenario, but it is way more than a bit believable.
Community: Free Marketing at Scale
This large ecosystem also gives rise to one of WordPress’s other big sustaining advantages: all those people in the ecosystem can and do want to engage with each other. So WordPress holds some 100+ WordCamps per year. WordCamps are low-cost conferences backed by the WordPress Foundation. In fact, the weekend of April 21/22, 2017, there are five WordCamps happening around the world. That’s a little higher than normal, but not hugely uncharacteristic.
Along with the WordCamps, there are loads of Meetup groups. Well-populated Facebook groups are in the dozens. There are, off the top of my head, well over a dozen on-going WordPress-focused podcasts published weekly. That’s no small feat. I’m less actively aware of everything put out in the broader PHP world, but other than “Old Uncle Cal’s” Voices of the Elephant I can’t think of a weekly podcast.
WordPress’s Sustaining Advantage
There are a lot of things that make WordPress unique. It’s one of the oldest still-updated PHP CMSes. It’s also got a large private company which has and continues to directly benefit from the project’s on-going success and evolution. While WordPress.com is not exactly the model that most other free software products that are commercially successful follow today, it’s close.
More than that though, WordPress succeeds because it’s been large and stable for a long time. This gives it a big enthusiastic community. The community reenergizes itself regularly, and because of how many people pass through it, it is very common for the project to see hundreds of new contributers to each new “major” release. But the achievement of WordPress’s scale — while important to a project’s sustenance — doesn’t give it a path to growth. WordPress has succeeded in growing to its current size for five big reasons:
- Matt Mullenweg has never eschewed controversy or marketing opportunities. WordPress flowered from its low-key war with Movable Type back in the day, and though Mullenweg hasn’t always been above blame, the early guerrilla marketing of capitalizing on new users was shrewd.
- Mullenweg created one of the first “open-source” business-modeled companies. That is, companies that use/host/benefit from an underlying open-source software and give back to it. That has worked well enough to pay huge dividend to himself (in Automattic) and the community (in regularly employed members paid to contribute back).
- Early on, WordPress created a uniquely low-cost, Foundation-backed, community events. WordCamps are the meeting point and annual anchor for loads of people who otherwise wouldn’t think much about it but as a tool they happen to use. The bringing of local people together in these “camps” makes the community bigger and more intimate simultaneously. More communities would likely find benefit in a similar model.
- WordPress was good-enough software on the world’s most popular hosted language. Hosts loved WordPress, because they loved PHP. Because hosts loved PHP, users found it easier to host their sites made with WordPress. They then loved WordPress more, and the cycle was begun. If WordPress was otherwise identical in Python or Java, it wouldn’t be the success it is today.
- WordPress has been very intentionally focused and conservative. Focusing on the end-user rather than the developer experience hasn’t given WordPress the world’s best code, but it does give it a loyal user base that no other web CMS can claim. People find it more than adequate, so they tend to take WordPress with them once they learn it.
I doubt I’ve fully or deeply covered WordPress’s history or what lesson can be drawn from it. But I’ve made a start. I welcome your comments on things you think I got wrong or missed. I hope you found this interesting and helpful!