What will WordPress be?

Change is upon us!

If you work with WordPress, that is.

I won’t go into details on the WordPress REST API that’s going to be a part of the software soon, or of “Calypso” which is a new tool for edit content and managing WordPress sites (both wordpress.com and self-hosted wordpress.org) that uses an API (or two) to communicate with WordPress.

But these things are coming…or are already here…and they will change what WordPress is.

I’ve been thinking about this for a while. The idea of having a WordPress REST API seems really good on the surface. It will let developers do some amazing things. But here’s the problem: it will let developers do amazing things!

If developers can build cool things they will. They will build amazing new themes based on JS frameworks. And they will build new dashboards and editing interfaces.

Is this good? Well, who knows? We can only guess and speculate at this point.

I predict short term pain and confusion as lots of new things bolt on to the WordPress API. There will be fragmentation and experimentation as new user interfaces for WordPress appear. Users will be confused about what WordPress is. And after a while this will probably settle down and the good things will mature. But I think there may still be confusion. And people may have lost faith in the mean time.

Ssssh…don’t tell anyone but…

Now…here’s the thing. And I kinda need to whisper this because it may be quite controversial:

WordPress doesn’t have a great data model for general purpose app development!

Some people try to build really complex web applications using WordPress – yes, I have too! – and it’s hard and inefficient because of the limitations of the data model.

So if you’re going to build a new JavaScript-based user interface that communicates with a back-end using a REST API then, well, it doesn’t matter what the back-end is. You can write your own. And it could well be better suited to a web-application’s needs than WordPress is.

Many people are asking “What can we build on top of WordPress now that it has an API?” but an alternative question might be “If Calypso is a good user experience, what can we build to go behind Calypso?”

There’s another way of looking at this too. I’m going to call it:

Throwing the baby out with the bathwater

Here are some of the things I really like about WordPress:

  • It’s actually a really well thought out blogging tool and simple CMS that has evolved over time
  • It has (relatively) great built-in media management
  • LOTS of people already know how to use it and are familiar with the UI
  • It has loads of plugins that you can use to extend its functionality, many of which extend the UI
  • It’s really easy to install and update – automatic security updates are great!
  • It’s templating system isn’t great, but its easy to get to grips with which makes simple development work easy, and it’s a low barrier-of-entry for new developers.

Here are some of the things that I don’t like about WordPress:

  • It has a limited data model with no relationships between object types (taxonomies are not general purpose objects!) and no real ORM
  • It’s well coded and easy to understand, but it doesn’t use modern – well quite well-established now! – patterns for development
  • The PHP code is well documented. But the JavaScript code and libraries is/are really hard to learn how to use.

It seems to me that building a new user interface using the REST API will embrace those things that I dislike while throwing away a lot of the things that I like. If you’re not going to use the Dashboard, then why accept the limitations of the data model?

If I’m going to build a complex web app, I’m not going to use WordPress as a back-end because its data model is not good enough. It’s a data model designed for blogs and low-to-moderately complex websites.

If I’m going to build a blog or low-to-moderately complex website then WordPress is ideal precisely because of the user interface. It’s a user interface designed for blogs and low-to-moderately complex websites.

It seems to me that it’s the combination of these two things that makes WordPress what it is: the de-facto website content management system that powers more than 25% of the web. And that separating them could actually be a disaster.

Even one of the WordPress REST API’s developers seems to agree:

https://twitter.com/danielbachhuber/status/672207252019945472

So the future for WordPress seems uncertain to me. In some ways I hope that all the UI experimentation comes to nothing and the API is just used to enhance the existing WordPress dashboard (AJAX-based post filtering and pagination PLEASE!!!). It seems to me that the Dashboard is one of WordPress’s best assets. Throw it out and it’s not WordPress anymore. Throw it out, and you may as well use something else altogether.

This, for me, is the identity crisis that WordPress will have in the months and years to come.