I enjoy talking with fellow developers about the problems they are thinking about as it relates to their field, and the problem spaces in WordPress is no exception.
That is, I enjoy hearing about what they are working on, what they are thinking about, or what they are tinkering with as it relates to their primary line of work.
For many who read this blog (and this includes myself though I’m the one actually writing it), we spend a lot of our time working within the WordPress space but does mean we spend a lot of time thinking about the WordPress space? Furthermore, does this mean that we spend a lot of time thinking about problems and potential solutions to what we see in our area?
First, this is not something that’s unique to our space. I believe that you can find this in any programming community.
Secondly, I think that this notion of thinking about a particular set of problems is something that’s a bit more abstract than what we usually discuss or see written about on other blogs.
The Problem Spaces in WordPress
For example, many of us are used to thinking about how to solve a problem whenever a customer brings us a set of requirements. They want us to build whatever feature they’ve specified. We spend time thinking about it, solving it, testing it, and then releasing it.
Similarly, many of us also think (and some often complain or voice concerns) about features that are potentially going into WordPress core or that are adding functionality to a pre-existing feature (such as The Customizer).
Although I think these are important discussions to be had, I’m not really referring to them in this post. Like I said, I’m thinking about a space of problems that exists at a slightly higher level of abstractions.
A Digression on Computational Theory
I know, the heading sounds like one big snore-fest, but it’s about the topic at hand, so it seems worth covering. So hang with me.
When I was in school, I had to take a class in Computational Theory. For the most part, I’m more of a fan of practical application, but I know that much of said practical applications are the concrete implementations of proven theories.
Here’s the thing: Studying theory is something that may be exciting (admittedly, for some more than others). At the core of computer science, it sits at the intersection of math and machine capabilities (or, more generally, programming) and the various types of problems that exist within that space. And this is a very, very broad space.
At one end of the spectrum, one set of challenges may include the amount of time it takes to traverse a data set such as a tree or a graph of a certain size when you have a starting path and are looking for, say, an optimal point to a destination in the data structure. These problems are solved (how do you think your favorite maps application works?).
On the other end of the spectrum, there are these whole other sets of problems that are not solved. These are known as NP-complete problems. If you’re interested in the topic, feel free to read more about it.
But what does this have to do with WordPress?
More Abstract Problems in WordPress
As with any programming environment, there are unique sets of problem spaces in WordPress that are fun to think about even if there’s not yet a clear to implement them.
I take that back. Let’s put it this way:
There are a variety of ways to achieve a given solution (this is the nature of computer programming, after all), but the most optimal solution may not always be the easiest to find.
Right now, there’s an entire group of people that are thinking about:
- How to properly handle package management as it relates to WordPress,
- Fighting the tension as it relates to using WordPress to create terrific solutions while juggling the hurdles of backward compatibility,
- Thinking regarding more modular programming such that we can bring in libraries through things like wppackagist and not break an entire installation,
- Reliable ways to handle repetitive tasks that we see as it relates to bootstrapping plugins,
- Handling the case of testing anonymous functions,
- Fighting the good fight against more recent features of PHP and legacy versions,
- And other things that are even still more abstract.
Sure, some of these may be more practical than others. But the point I’m trying to make is that the way we think about WordPress doesn’t always have to be relegated to existing features, feature plugins, debates, and other things that may be going into the core application.
If WordPress is a sphere, then there’s an entire set of rings or perhaps even an atmosphere of other problems that are sitting slightly above the core application that many people like to think about not only for the sake of just thinking about but for the sake of improving development for all who all interested.
I don’t know if this post strikes you more or less as an unfocused smattering of things somewhat related to WordPress, or if it strikes a chord with you. Or maybe it seems completely pointless.
Whatever the case, what I know to be true is this:
- WordPress is a program
- Programs are based in computer science
- Computer science is rooted in computational theory
- Thinking through problem spaces in WordPress is natural to computational theory, but computer science, as well.
In a future post, I hope to talk about some concrete examples as to what constitutes problem spaces in WordPress because I still feel dissatisfied with my attempts in this post. But for the sake of at least starting to share my thoughts on it, I thought it would be worth sharing some initial thoughts than nothing at all.
I know some of you are out there because we’ve talked at WordCamps, via email, on Slack, and so on. So please, feel free to chime in and comment on this.
Finally, if you specifically have any thoughts one way or the other about any of this either directly related or tangentially related, I’d love to hear more about them in the comments.