This post was inspired by Justin Tadlock‘s post on WP Tavern entitled “Themes of the Future: A Design Framework and a Master Theme.”
Justin’s post touches on aspects of WordPress theming that I have contemplated over the past decade while working with WordPress. But some of my thoughts differ from Justin’s because — unlike Justin — I am not a designer nor am I a themer.
“Imagine if — starting with version 6.0 maybe — the WordPress team chose to actually deprecate themes, and then added modules and components as first-class extensions instead? “Mike Schinkel
ASIDE: For those of you reading this who know I am a professional WordPress developer/engineer and are curious how it is I can work with WordPress and am not be able to create an attractive design, the answer is simple. I always work on client projects with a team, which will include a great designer and/or front-end developer.
IOW, my expertise is back-end development and the architecture, maintenance and devops for complex mission-critical WordPress sites. I leave making sites attractive to other people who are great at that kind of stuff.
My frustration related to WordPress theming has stemmed from the state of theming in WordPress and how it feels like many themes are viewed by their creators as works of art, and less like a functional layout designed to provide website owners a layout that meets the (business) objectives for their the website.
As a non-designer, I have tried god-knows how many themes. Ultimately however I have thrown away every. single. one. of. them. I either built a theme from scratch when I had a designer and/or front-end developer on the team, or more often, given up on launching the site.
In my experience any given theme does at best only 85% of what is required for its use-case, and I don’t have the design or CSS skill to finish the other 15%, hence my frustration. Not to mention the fact that (IMO) the more attractive a theme is, the greater likelihood that its code will be a complete mess of spaghetti that is almost impossible for anyone other than the original author to modify.
(Almost) all themes for WordPress are monoliths that end-users cannot maintain themselves, except for those with a myriad of settings (which are typically frowned on by WordPress thought leaders.)
But even those themes with a lot of settings can meet a higher percentage of any given end-user’s needs, typically the more settings a theme has the more complex they are and the slower-to-load they are. Worse, said themes locks a user into never being able to update their theme without a herculean effort and/or paying a king’s ransom.
Just the other day one of my clients asked me for help: “We need help setting up a new WordPress site, and we have picked out a theme.” I told this client that whenever tells me they “have already picked out a theme” it causes an immediate feeling of impending dread for me.
In this particular case I recommended they use a page builder instead of a theme. But not because page builders are a good solution but because they give enough control for an end-user to complete a site without having to bring in the high-paid and temperamental developers and/or designers.
But “high-paid and temperamental” is not a slur! I too am high-paid and temperamental; I just know that few use-cases where WordPress is used can justify the fees of a high-paid person to complete a site.
Returned back to Justin; he writes about “needing more designers in the conversation” — to which I agree with — but in the next sentence he discusses minutia about class naming which just sends designers and front-end developers down a path of so much bikeshedding. Better to focus on the high-level goals rather than the lower level details.
Justin also states that if “you put 20 designers in a room and ask them to discuss design frameworks, it could be a recipe for fisticuffs.”
Which is almost certainly true, but what he does not mention, or possibly does not recognize, is that once a framework is put in place everyone pretty much just falls in line and starts using it. Take a look at Custom Post Types, the Customizer, and even Gutenberg. If WordPress were to implement a design framework into core — and many people would piss and moan about it at the time — almost everyone would fall in line and start using it within a year after release.
But I do not think that a adding a design framework is the right approach. Or should I say I do not think a design framework would be sufficient.
Instead what IMO is really needed is for WordPress to embrace the web components standard and forget thinking about themes altogether. Rather than selecting and installing yet another theme what would be 1000% better for the end-user would be a pallet where they can select components — and composite components a.k.a. “modules” and then assemble their site with those components however they need it.
Rather than look for a theme that has all the features one needs — which I have found always limits the choices to zero — a site owner could look for the components and modules they need and then assemble their site from those modules. They could pick a header, a footer, a home-page hero, a set of article cards, a pricing module, and so on.
This is basically the same concept as the existing page builders, but with a standards twist; read on.
Existing themers could innovate by creating palettes and families of components designed to go together, and WordPress could possibly even create a marketplace for those components so that end users could buy different components from the different developers that they can be sure are designed to work together based on shared design “schemes.”
Frankly I think themers who sell themes would make a lot more money if they sold individual components and modules instead of full themes. And I believe most site owners would be super happy to pay a lot more for a collection of modules and components — I know I would — because they would be getting exactly what they need, and not 50-85% of what they need after which they have to invest a king’s ransom of money and time to complete the final 15-50%.
Justin also wrote “Themes would lose their personality and we would live in a world of cookie-cutter designs” if WordPress were to introduce a theme standard into code. But I say that is just fear of change talking. Constraints are your friend, and constraints can supercharge innovation.
What we have unfortunately seen since the dawn of WordPress is lots of innovation in theming, but most that “innovation” has been duplicated 1000 times over, each time by a different themer, and in a manner that is completely incompatible with what the other 999 themers implemented. None of those themer’s work can be used in combination with the work of any others.
A user can’t take the home page of one theme and the pricing page of another theme. If the theme they like does not have all the components they need — and when does a user ever find a theme that meets all of their needs? — they are pretty much out of luck.
Themes are all silos, and never will any two meet. Theming in WordPress has been like the biblical Tower of Babble where no themes can speak to each other, so we have not been able to build much beyond the themes that exist.
Imagine if — starting with version 6.0 maybe — the WordPress team chose to actually deprecate themes, and then in their place added modules and components as first-class extensions instead? WordPress itself could provide the canvas on which to place components and then WordPress could manage displaying them.
If WordPress core were to deprecate themes and embrace modules and components there would be no cookie-cutter designs; it would free designers to build self-contained user experiences within modules — and those modules could be mix-and-match — and then the sky would be the limit because themers would not have to deal with all the non-creative minutia required to build a fully working and fully workable theme?
But let me address the elephant in the room; Gutenberg Blocks.
I did not speak to Gutenberg Blocks because I have no experience as a developer with them. But what I understand — which could very well be an incorrect understanding — is Gutenberg Blocks are complex and have not really been designed to be used when Gutenberg is not generating and/or orchestrating them.
But what about all the existing page builders? The problem with page builders is that their modules/components/blocks are all proprietary (AFAIK?)
Their modules/components/blocks also work in the context of the page builder but not designed to be developed and/or used without the page builder. I don’t mean to say they do this to lock people in, only that the architect a flexible framework would IMO be an order of magnitude harder than just getting a page builder to work with proprietary markup and CSS.
So ideally WordPress would offer a framework based on web components standards that could support a page builder UI — or many different page builder UIs, each from different vendors — but could also support hardcoding of the components into pages for those who like to version control their websites.
Well, this turned into quite a rant. Once I started writing it just flowed, so this has clearly been a pent-up frustration in me for years.
I know even the thought of deprecating themes will send fear and loathing shockwaves across the WordPress theming ecosystem. But please, before summarily dismissing the idea with a knee-jerk, contemplate the possibilities of delivering modules and components designed to be mixed-and-matched instead of churning out yet another theme that can never be used in conjunction with the work of any other themer.