The History of the Web logo

Unraveling the web's story

15 Years of WordPress

WordPress admin, early on

It was January of 2003, and 19 year old blogger and amateur programmer Matt Mullenweg was distraught. In a post on his blog titled The Blogging Software Dilemma, Mullenweg wrote:

My logging software hasn’t been updated for months, and the main developer has disappeared, and I can only hope that he’s okay.

Mullenweg’s “logging software” was called b2. It was created in 2001 by developer Michel Valdrighi. At the time, Valdrighi was still pretty new to programming. But the web was full of bright-eyed new programmers looking to hack together solutions for themselves. So he created b2 as an alternative to other popular blogging platforms like Movable Type and Greymatter.

b2 wasn’t the most popular option out there. Movable Type most likely deserved that particular distinction. b2 was also written using the PHP programming language, far from the most coveted choice. But the language was born on the web, fast when it needed to be, and extremely approachable for new developers. b2 was, in turn, just as approachable. It may not have followed traditional computer science techniques, but it was easy to experiment, hack around, and mess with. This was the open web, after all, and that freedom extended to the ideology of its earliest users.

Screenshot of b2 website

Because of that, a small community formed around b2. Valdrighi, with help from a few others, began adding more and more features. He also made one more extremely important decision. After playing around with a few open source licenses, he eventually released b2 under the GPL license. GPL was originally created by Richard Stallman (of Linux fame) and dictated that the software could be distributed, modified, and remixed as long as the re purposed code was also GPL.This is known as copyleft.

Then, in 2002, Valdrighi vanished while he dealt with some personal issues. That’s around the time that Mullenweg published a post about the problem he was having with his favorite blogging software. b2, as I mentioned, was GPL. Mullenweg could fork it. And that’s what he planned to do. His Blogging Software Dilemma post got only a single reply from fellow b2 user and developer Mike Little. “If you’re serious about forking b2 I would be interested in contributing,” he said.

The two formed almost an instantaneous partnership, and on April 1, 2003, Mullenweg created a fork of b2. His friend Christine Tremoulet gave the project a name.


From its start, WordPress always seemed to be ready for opportunity. Little and Mullenweg both had cooperative visions for the future of WordPress, and began to clean things up, each in their own way. Little, for instance, had been a software programmer for over twenty years. He knew that stability would be paramount for the long-term health of the project. His first commits included porting over files missing from the fork, and smoothing over a good amount of the code, like the RSS feeds, post summaries and excerpts.

Mullenweg, on the other hand, was a more inexperienced programmer. He was, however, motivated by the recent efforts of the Web Standards Project. He began sorting through WordPress’ templates, adding semantic HTML wherever possible. By the time he was finished, the platform was almost completely XHTML 1.1 compliant. In the years that followed, this would become more and more important to web developers.

But on top of just adding new features, Mullenweg and Little did a few things right early on.

WordPress wasn’t the only b2 fork on the block. The most notable alternatives were b2++ and b2evolution. Mullenweg contacted the lead developers of both projects to see if they wanted to merge their code into WordPress. The creator of b2++, Donncha Ó Caoimh, agreed. b2++ eventually became WordPress Multisite, which allows users to host multiple blogs on the same site. The developer of b2evolution, though, passed.

It was a Little who brought a zeal for free (free as in beer and free as in speech) software to WordPress. The GPL license was rigorously maintained, and he made sure to keep the independent spirit of b2 alive. Contributors were welcome to make changes anyway they saw fit.

WordPress began to attract a small group of hackers dedicated to making the project better. Each contributed in their own way, shooting messages and code back and forth on IRC and email. It was chaotic, sure, but it was exactly how Little imagined it would be.

Getting some key developers on board got WordPress ready for the first opportunity to come around. When Michel Valdrighi resurfaced in 2004, he dubbed WordPress the official fork of b2. Users looking for b2 where redirected right to WordPress’ homepage.

In the meantime, WordPress developers focused on making things easy for users. They set up documentation and forums for users to post questions. They plucked new features straight from user requests, or Valdrighi’s wish list. WordPress was easy to install (in 5 minutes or less, the project promised) and had a unique admin. The goal was to make it as easy as possible to log into your site and post to your blog without ever having to see any code.

The WordPress edit screen

There was only one major issue. WordPress operated on a system of “hacks,” a carryover from b2. Hacks could be used to change the look or functionality of WordPress. But in order to install them users had to download a package with a few files, and follow the included instructions about where to modify existing WordPress files to make it work. The process was cumbersome, and for most new users, a little bit scary.

Just prior to the release of WordPress 1.2 in May of 2004, developer Ryan Boren came up with an idea. He added programming hooks called actions and filters. These were moments in the code execution when developers could manipulate data, mix in new functionality, or even change some HTML. The WordPress codebase was kept pure, and users with almost no programming knowledge could install “plugins” that took advantage of these hooks.

The timing was once again fortuitous. Just as 1.2 was announced, code-named Mingus (Mullenweg loves jazz, so all WordPress versions are named after jazz musicians), Movable Type made an announcement. Six Apart, the creators of Movable Type, would begin charging for use of the software. The company saw this as more than necessary to keep themselves afloat. But many users did not see it that way.

After the announcement, influential developer Mark Pilgrim wrote up a post on his own blog called Freedom 0. In the post, he called out Movable Type for never truly being free because of its restrictive licensing. Charging for the product was simply the last straw. Pilgrim suggested that instead, users should check out WordPress, which was both free and open source.

Users, especially developers, migrated over to WordPress in droves. In a single month, they more then doubled the amount of users they had. And WordPress was ready. They tried their hardest to welcome new members to the community, and provide resources on where to get started.

A more recent version of WordPress

From there, things only grew. The plugin system became easier to manage, themes were added, and the admin went through several redesigns. Mullenweg is still heavily involved in the project, and Little contributes as well. All because when opportunity rang, they were ready.

WordPress has never really been about its code. As a blogging platform turned content management system that (by some measures) powers over 25% of all websites, the code, of course, matters. But WordPress has grown because of the human connections that hold it together.

So it really should be no surprise that the whole thing got started because of two, like-minded spirits finding common ground in software.


3 responses to “15 Years of WordPress”

  1. […] The History of the Web has posted an interesting article on the history of WordPress. […]

  2. […] WordPress turns 15, via History of the Web […]

  3. […] The Story of WordPress | The Story of Web […]

Leave a Reply

Your email address will not be published. Required fields are marked *