Those who are heavily involved in development of WordPress often times refer to “the WordPress framework” or “WordPress as a framework.” Perhaps you’ve heard this – it’s used in terms of building sites and creating blogs and things like that.
And I try not to be too pedantic about terms, jargon, and so on but there are times where I think it’s important to distinguish the terms that we’re using.
I mean, who wants to be the person sitting there with their pointy-rimmed glasses far down on the bridge of their nose, pushing them up slightly, pointing into the air, and with as much of a nasal voice as possible, saying:
That’s not really true.
But I’ll be that person (except I don’t wear glasses and I don’t have a nasal voice).
The WordPress Framework?
Primarily, I see this as something that’s necessary because it can end up being confusing for people who are just entering the field, people who are coming from another field, or people who are curious but don’t really have the background for how to distinguish between the difference of a framework, a library, a tool, a foundation, a stack, a toolchain, and so on.
We have a lot of words for a lot of things and they aren’t all immediately clear. And the motivating quote behind this whole post is from a related (albeit a good) post.
Rails is not “better” than WordPress. They are apples and oranges, but laying the concrete myself has given me the ability to truly make the thing I want to make.
And yes, I’ve said this before, but sometimes I think it’s okay to talk about things multiple times (we do it with conversations with our friends, right?). WordPress is not a framework.
WordPress Is a Foundation for Software
First and foremost, WordPress is an application. It started out as a blogging application and has grown into a full-featured content management system.
WordPress, the application, happens to offer an API that allows developers to extend it by writing their own code to integrate with the application.
WordPress also offers a REST API that allows us to work with the application without actually having to launch the application in a web browser. But even the REST API itself is a plugin or an extension – and a partially-integrated feature – of the core application.
What’s the Difference?
The difference in WordPress, Rails, Laravel, .NET, and many of the other options WordPress is often compared and contrasted against is that none of the other frameworks offer a functioning application upon installation.
That means when you install Rails or .NET, you don’t have anything that you can actually open in a web browser and use to get work done. Instead, you have a defined set of constraints to which you must adhere and certain tools that are available for building your own applications.
Software frameworks are defined as:
In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by additional user-written code, thus providing application-specific software.
Whereas software applications are defined as:
An application program (app or application for short) is a computer program designed to perform a group of coordinated functions, tasks, or activities for the benefit of the user.
And although we can build our own applications on WordPress, that doesn’t mean WordPress is a framework. Because, unlike the rest of the frameworks that are listed, WordPress is a complete, fully-functional application upon installation.
To that end, I see WordPress as a foundation. It’s an application all on its own, but it’s an application on which we can build other applications. Thus, a foundation.
Why Does It Matter?
On one hand, I guess I could say that it doesn’t really matter and that I’m trying to make a point out of something that amounts to nothing. But then I’d be guilty of not being honest with myself.
Here’s why: I receive occasional emails from those who are working in another field of the industry and who are used to working with other frameworks. They have a curiosity about WordPress because they’ve used it, seen it, heard enough of us talking about it and doing things with it to warrant a closer look (and that’s awesome, isn’t it?).
The inevitable question comes up, though:
Is WordPress a framework for software development?
And I’m really iffy about using that phrase because many people who have been working in software for any length of time have a conceptual model and a working definition for what a framework is. If I say that it is a framework, but then they launch this thing in their web browser, it’s not going to feel like a framework at all.
It’s going to look like an application.
As such, I think it’s important to be able to provide a clear definition as to what it is so that future developers understand what it is they are going to be working with before they get started.