I’ve shared my thoughts on WordPress as an application framework, but I think that simply making a case for how the core application can be used for web applications isn’t enough to help others see that it’s a viable platform.
Lately, I’ve had several conversations with others who are skeptical (and rightly so). Themes are often viewed as “skins” for WordPress and plugins are often viewed as little ways to add new features to a blog. If anything, I’d say that one could make a stronger case for plugins being software rather than themes.
But to a point, I disagree. There are several reasons why I think both WordPress themes and plugins are software.
The truth is, I’ve not always considered work done on WordPress to be any type of software (and my partners can validate this!), but the more work I’ve done with the application and the more serious I’ve taken said projects, the more similarities I’ve noticed so much so that I believe it’s boiled down to nothing more than semantics.
What it isn’t
I should clarify that I do draw the line somewhere: I don’t think that static sites are software. I believe that there are two characteristics that qualify something as a piece of software:
- The application takes input from a user and responds to the action
- Data is typically written and/or read from a backend data store
What it is?
Though I’ve outlined what I believe software to be, I do think that there are additional points that can be made. Generally speaking, web applications also include the following:
- Distinguishable layers: Presentation, Application, and Data. There are often sublayers within each of these.
- A core framework, library, or language with a set of API’s that provide scaffolding for development.
Additionally, each layer can have it’s own framework, too.
Case in point, the presentation layer could using something like Bootstrap or Foundation whereas the middle layer could use CakePHP or, you know, WordPress. There may also be some type of middle-ware for interfacing with the database.
So what makes a developer?
Finally, some would say that if you write code – any type of code – then you’re a programmer (on which I’ve already written), but I ask:
- How far (or how often) do you have to run before you’re a runner?
- How often do you have to blog before you’re a blogger?
- If you speak in front of 10 people are you a speaker or does an audience have to be larger?
The point is that I’m not as forgiving – just because you write a bit of a code doesn’t make you a professional developer. There’s a certain level of experience or understanding that I’d expect out of a person who claims to be such.
- Understanding of the significance of development, staging, and production environments
- Some level of experience with software testing
- Experience with version control
- Understanding the significance of code reviews
- Knowing why coding standards matter (and actually applying them!)
- Knowing when to apply various design patterns
- …and more
Granted, none of us start here but our career gets us there.
I’d venture to say that this, coupled with the aforementioned points, is what constitutes a developer. That said, I’ve yet to really address the case of why themes and plugins can both be viewed as software.
Why WordPress Themes and Plugins are Software
Given everything I’ve shared above, here’s the point of contingency:
Thousands of themes can be reduced to nothing more than elaborate sites. That is, they consist of nothing more than templates with stylesheets.
But this isn’t all encompassing. That is to say that although this is true for many, many themes, it’s not the case for all of them.
I’ve met some incredibly talented people via Twitter who are doing amazing things using WordPress plugins or who have built some fantastic features into their themes that definitely push them over the edge as simple extensions or site templates.
Given everything I’ve shared above, themes and plugins and those who build them are subject to the same qualifications:
- Coding Standards. Defined by WordPress, employed by you and your team (or not).
- Unit Testing. Available, but not always employed.
- Code Reviews. Subject to the team building the WordPress-based product.
- Design Patterns. WordPress itself employes several which is why we can take advantage of actions and filters.
- Set of API’s. Defined by WordPress, used by developers (or not).
But I’d love your thoughts, too. I know that many still view WordPress as a blogging platform or a CMS, at best and don’t consider it a true application development framework like some of the other tools that are available.
So where do you stand: Are themes and plugins software or not?