The new Gutenberg Editor, which is slated for inclusion in WordPress 5.0, aims to dramatically improve the editor experience in WordPress by adding easy-to-use, dynamic content blocks. While beautiful, and definitely something I could see myself creating content in, I worry about what the new editor could mean for the future of WordPress.
WordPress as a Content Management System (CMS) originated as a blogging platform but has grown far beyond that, today dominating 28 percent of the entire internet. In a post sharing his first experience with the Gutenberg Editor, Chris Lema asks an important question: “Didn’t we want to tell the world that WordPress was more than just for bloggers?”
I use WordPress mainly for ecommerce these days, and most of the WordPress users I speak to use WordPress for their business site or as a way to build a unique application function by cobbling together plugins and a little bit of custom code. More often, they are building a site like this for a client.
I thought that’s what WordPress had become. I thought it has become a complex, highly customizable CMS. The Gutenberg project isn’t halting this progress necessarily, but it could change the focus of WordPress.
Is the future of WordPress about making a better blogging platform? If so, we — people who make self-hosted WordPress sites or tools and services for those sites — might be in trouble. It’s too early to know for sure. But after trying the plugin and reading the code, I’m concerned, so I want to share some thoughts about what worries. It’s my honest hope that none of these concerns are addressed, but I’m worried we’re this far along without clear answers.
Good for Writers
It’s no secret that the WordPress editor needs a lot of work.
Like many of us, I spend a lot of time creating content for WordPress and have encountered some serious problems with the current model. This is why I write anything that is a blog post in Google Docs. I manage other content directly in WordPress — products, documentation and other content that is stored as a custom post type. Those I do write directly in WordPress, and I encounter the definite problems.
The established WordPress User Interface (UI) pattern that led to having lots of metaboxes everywhere is not what we should expect from a content editor in 2017. This scattered look is a visual representation of the technical debt that has accumulated in WordPress. We have no way to declare the fields a plugin adds to the post editor, and there is no metabox API for saving or rending them.
The editor, in its current state, needs serious improvements to make it easier to create content in WordPress. I think Gutenberg is a much cleaner UI and is an essential step in improving the editor experience in WordPress.
But, since we do not have a declarative API for generating and rendering metaboxes in core already, we’re stuck with a big mess of ad-hoc systems. That’s a big technical debt. If WordPress core had committed to the Fields API project as a priority in 2014 when it started, we could be way ahead of this problem.
The Technical Debt Jubilee?
After trying out Gutenberg, I become increasingly concerned about how it would impact the future of WordPress. Again, I like this idea of a block editor, but to me, WordPress is all the stuff around the post content text area.
So I did what any responsible developer would do: I complained on Twitter. Kevin Hoffman suggested I comment on the relevant GitHub ticket, so I did. I wrote that the proposed solution — a new way to create metaboxes in JavaScript — was problematic because “so many plugins, themes and custom code hooks in at save_action and accesses $_POST superglobal. That’s not good design, but it’s a technical debt affecting millions of sites.”
Weston Ruter, a core contributor, commented that “I think it’s the intentional and conscious decision of Matt that the technical debt must be canceled if WordPress is to evolve in the way that it will remain relevant in the future.”
Part of me loves this response. WordPress has very real problems with its past catching up with it. WordPress developers, myself included, talk a lot about technical debt — how to avoid taking on new debt and reduce existing debt. This is unsurprising given that we are working on a 14+ year old framework and are encouraged to code for a version of PHP that is 10 years out of date.
I’m constantly frustrated by intentionally writing code that I know could be better because I want as many users as possible for my plugin and requiring PHP 7 or even just PHP 5.5 would dramatically affect user acquisition.
I spent years talking about how to build applications using the modern tools that WordPress provides like the REST API. Then I went out a built a SaaS product for my WordPress plugin using Laravel because I wanted the solutions and developer experience of a modern PHP framework.
Technical debt, like financial debt, isn’t all bad. Homeowners take out mortgages all the time because without it , most of them couldn’t become homeowners.
Let’s not forget that the WordPress post editor, in the real world, is an infinite edge case generator. It’s implemented on millions of sites using thousands of plugins. Plugins, like Advanced Custom Fields, that enable users to customize the post editor and add unique custom code to their sites are what makes WordPress, WordPress.
There is a massive downside to that. Same with having to maintain sites. It’s why those who just want to write and not worry about ongoing site security and maintenance use Medium, Squarespace or WordPress.com.
The Gutenberg printing press is an interesting metaphor. Not only did it mechanize printing in a way that revolutionized access to information but it also brought about standardization.
Services that bundle the innovation of the open web in a neat package are great. But I think the tens of millions of websites running a CMS like WordPress crave something in between a standardized and totally customized digital experience.
We like to say in open source that we are standing on the shoulders of giants, who provided the free tools that we modify, fork, and improve. Although true, the reality is that we are also swimming in their technical debt.
The fanatical commitment to backwards compatibility in WordPress has brought about serious technical debt, but it’s also why WordPress has been so successful. From those selling sites to SMBs to those selling enterprise sites, backwards compatibility is how WordPress has been sold.
If upgrading to WordPress 5.0 means that before you can save another post you need to rewrite your custom code for the post editor, and upgrade all of your plugins, many of which are not 5.0-compatible, then millions of sites are in trouble.
I’m using the metaphor “technical debt jubilee” because of the biblical concept of jubilee where all debts are forgiven at the same time. I’m not a biblical scholar or an economist, but I assume that idea works because it all happens at once and the losses and the gains all cancel each other out.
But in the case of Gutenberg, the debt is paid by the plugin and theme developers who have to rewrite tons of code and not by the core software. The debt is transferred to those who were paid to develop WordPress sites, who sold their clients on a backwards compatibility that is suddenly gone.
What I worry about are businesses that paid for a WordPress site and will be faced with a bill to fix their sites to work with a no longer backwards compatible WordPress. How many site owners are going to move to a different CMS? As long as they are paying to fix their problem, why not remove the source of the problem? Businesses of all sizes paying for WordPress developers are fueling the WordPress economy: hiring developers, paying for hosting, buying plugins and themes.
How many plugin and theme developers are going to have the resources and desire to deal with these problems? How many are just going to give up?
In the real world there is no Elliot Alderson or Tyler Durden to wipe out all debt in one dramatic flourish. We have to be smart about it, making sure we pay down our debt in a way that allows us to still get by and still keep on top of the debts we can’t yet eliminate.
I love the commitment to paying down WordPress’s significant technical debts, but it only seems acceptable when the feature is user-focused. For example, users can’t see the problems with supporting PHP 5, so that support, which hurts developers who make features for users, is sacred.
Where Are We Going?
Clearly there is a demand for an editor that is more expressive then what we have now. Divi, Beaver Builder, and all the other page builders prove that. But is our goal standardization? Can there be one true editor that replaces all of those page builders because it solves the needs of tens of millions of sites?
To simplify, is there a problem with the fact that the WordPress editor can’t be all things to all people at this scale? I don’t think so.
Gutenberg the printing press and the industrial revolution that it was a part of was about replacing the bespoke and artisanal with standardization. But here I am, building open source software on a Linux-powered computer I assembled myself, while drinking locally roasted coffee that I brewed by hand pouring water through my Chemex out of my WordCamp Tampa 2016 mug.
10 Comments