Sorry! Internet Explorer is not supported on this site. Please view on Chrome, Firefox, or Edge.

Having fun at Zao is one of our values. We’ve put limited animated flourishes throughout our site to communicate our love of levity. We also recognize that onscreen movement is not fun or possible for everyone. We've turned off all our animations for you per your browser's request to limit motion. That said, we don't want you to miss out on the party.

Here's a funny joke to enjoy!

Where does the General keep his armies?

In his sleevies!

My Thoughts on Gutenberg

We’re in an incredibly exciting time in the development of WordPress as a platform: the REST API is in core, we’re imagining a new JavaScript-driven future for WordPress, and we’re in the early stages of development of a new editor for WordPress, Gutenberg. As one might expect, anytime major changes happen in open source software, hot takes abound! While my take isn’t necessarily as hot (I highly recommend each of those posts!), I’d like to share some of my observations on the community reaction to the process of introducing Gutenberg to WordPress. This post is not a feature-by-feature review of Gutenberg. Any of the posts linked to above do a far better job of that than I could hope to. Rather, I’d like to explore the general sense of animus this project has seemed to introduce into our community – and if possible, I’d like to explore that without pointing any fingers.

Gutenberg is a good thing

Twitter really is the best place to draft blog posts. #SORRYJOHAN
Gutenberg is a great step forward. Truly. It’s not “there” yet, wherever “there” is, but it’s better than what we’re used to. It’s so easy (especially as developers!) to approach these grand new ideas with a sense of skepticism and cynicism. But honestly, can you count on one hand how many times you’ve heard someone rave about how great TinyMCE and the existing WordPress editor are? If you amputate all of the fingers on that hand, you’re still likely good to go here. WordPress needs the revolutionary thinking that is happening as part of the Gutenberg project. But therein lies the rub: most of us, no matter how adept to change we tell ourselves we are, are terrible with change. So naturally, when a project like Gutenberg comes along and threatens to kill our darlings and dash our hopes, we gnash our teeth. The wonderful thing about communal teeth gnashing is that it’s a visceral amalgamation of reasonable reaction and emotional stampeding. This emotional stampede comes in the form of things that I’d like to imagine none of us would ever communicate if we were sitting across the table from someone making the hard decisions the software developers creating Gutenberg are making. It’s easy to malign, assume the worst, and to lack a general sense of empathy whatsoever. Easy, of course, when you’re sitting in front of a screen, not in front of a person. The reality is (and this is true of all open source projects) it can be incredibly deflating to spend hundreds of hours on something, ship it for public review as a beta, and get piled on. The emotional cost of this is difficult to quantify. To date, Gutenberg has received contributions from seventy-nine people (gasp: not even all Automatticians!). With over 3,200 commits publicly available on Github, OpenHub posits that the project has required over eight years of developer time…so far.  Let’s take a step back and consider that. This project has only been in development since February of 2017. As of this writing, that’s barely seven months. In that short time, to have such significant investment into a project, and to bring it to its current state is nothing short of inspiring. It’s an effort that should be applauded. Does that mean it’s perfect? By no means.

It's Not There Yet

Here’s the deal. The weeping and gnashing of teeth I mentioned earlier? There are some legitimate reasons for it:
  • Gutenberg is a good start, but it doesn't go far enough. A block-based editor should never have been imagined in wp-admin, but on the front-end.
  • Related: For something as revolutionary as this could be, what you see should be what you get. But unfortunately, what you see is not always what you get.
  • The HTML-comments-as-a-data-structure concept is clever, but there are better options.
  • The React vs. Vue debate could have been handled perhaps a bit more transparently. The outside perspective presumed (right or wrong) that the debate was a nicety, a technicality, and using React was a foregone conclusion. In my opinion, a clear stance on the licensing issues should have been communicated, a decision should have been made, and that should have been that. That, coupled with the assurance of abstraction from any singular library, and potentially documentation on shimming in alternatives, should have laid the debate to rest. Instead, countless hours, resources, and momentum were wasted. For what it's worth, I'm Team Vue to the end, but I'm grateful the debate is over and momentum has been regained.
  • As of this point in this post, my JavaScript console has over 400 errors and warnings, and any time I try to save my draft, it says "Updating failed." Scary! In addition, autosave doesn't appear to be working. Not good. (Update: This was due to a server misconfiguration from our host. Likely something to preemptively detect in either Gutenberg or the WP API.)
  • While it has come a long way, there's still a long way to go. I miss my word count. (Update: coming soon!)
The final point in that list segues nicely to my next point ??

Let's All Just Slow Down a Bit

Everyone involved in the process (the community, core developers, those of us deep in the weeds, users, etc.) would benefit from slowing down a bit and taking a look at the big picture. Software development is hard, and revolutionary software development is even harder. Add to that considerations for backwards compatibility spanning well over a decade and you’re dealing with a near impossible task.
The world isn’t going to end if Gutenberg uses React. Gutenberg won’t be a failure if it doesn’t ship until WordPress 5.5. This type of project requires the patience and leadership to get it right. It requires willingness to listen to stakeholders that you might not normally listen to, and to consider positions you might not normally consider. I have two significant concerns right now. The first is that the lead decision makers for Gutenberg might fall prey to the sunk cost fallacy. None of us, no matter how brilliant, are immune from its grip. It would be very easy to think, “We’ve already invested seven months into this; we’re likely beyond a half-way point at this time. Any major architectural departure cannot be considered, we need to ship this, and soon.”  That would be an unfortunate conclusion to come to. While an initial version of Gutenberg may very well ship in WordPress 5.0 as anticipated, the cost of investment now has to be weighed against the lifetime of the editor, not the expected ship date for the editor. If this is the editor that exists in WordPress for the next fifteen years, I think we can wait an extra few months now to get it right. The sunk-cost fallacy is just that–a fallacy. The second major concern I have is not for the Gutenberg team, but for us as a community. The general sense of “us vs. them” that I continue to see gives me great cause for concern. I’ve seen it in many open source projects in the past, including WordPress, but the extended nature of the Gutenberg timeline means extended exposure to this reality. Having maintained a large open source project myself, let me tell you, developers are real people. We spend time, expend emotional energy, use real resources and capital, and miss time away from our real spouses and children. The constant barrage of sometimes personal attacks, character malignment, assumption of ill intention, ignorance, or downright stupidity is completely out of line, and ultimately, self-defeating. I say it’s self-defeating for one simple reason. The person who give criticism instead of critique, who complains loudly in all directions instead of tactfully in the right direction, and who spouts assumption rather than well-researched position is a person that no one will listen to. Open-source software maintainers–the ones that stick around–have developed an acutely tuned filter for people like this. We don’t always admit it, and rarely say this publicly, but this type of feedback never influences project direction. If you can’t say something that’s worth saying, and say it nicely, then don’t say it! Maybe that sounds harsh, but the reality is we all want the same thing: a beautiful, modern interface that just works. It’s not there yet, but it will get there, in time.

We're Still Early

Let me end with a story. Disclaimer: I come from the church world, so if that’s a turn-off, you’re free to check out here–no hard feelings whatsoever. The theological heritage I come from is filled with people, who for better or worse (usually worse) are quite certain Jesus is returning in the next decade or two. Our lifetimes, at least. They don’t all think this way, not by any stretch. But enough do to make me want them to be right, and for them be raptured sooner than later. The problem is that, in their minds, the world is continuing to get worse and worse, so naturally, that means we’re mere historic seconds away from Jesus riding in on a white horse. So imagine how refreshing it was for me to hear a recent theological perspective from someone. He said something along the lines of:
What if these aren’t the “last days?” What if the evangelicals and the Moral Majority were wrong all along? What if, much to our chagrin, 2,000 years into this, we’re still the early church?
– Someone whose name I can’t recall. Probably BZ or JM
What if? You may not come from the same theological background I do, or any theology at all, but to me, that sort of paradigm shift was beyond refreshing. If some of my Christian brothers and sisters shifted mindsets from a place of “OMG THE WORLD IS ENDING! LET’S ALL HUNKER DOWN!” to “Heeey, you know, we may still have a few thousand years to go. Let’s make those millennia AWESOME FOR EVERYONE,” it would serve us (and everyone else) in an incredible way. In the same way, the sense of urgency around the Gutenberg is likely misplaced. If we could all allow ourselves a similar paradigm shift, and start to imagine the project in a broader scope, over a longer term, our hopes and expectations in the short-term might start becoming a bit more realistic. I do hope our community rallies around this project in a greater way than we’ve seen yet, and I also hope that the core development team considers substantive critical feedback. I know in our own open source projects at Zao, we’re keeping a close eye on Gutenberg and discovering the best ways we can integrate it into our own projects and contribute back. I think all of us together, over the long haul, can build this into something that is truly revolutionary.

Join the Conversation

13 Comments

  1. A) I come from a theological background as well, and I appreciate the end story – it really brings home the point.

    B) I think it’s safe to say that Matt Mullenweg’s definitely trying to drag WordPress out of the “Sunk Cost” bog with yesterday’s announcement. It’s good to see someone make a hard decision like that. It may not be good for Gutenberg in the short term, but the long term project as a whole will avoid a lot of scrutiny and possible litigation.

    C) I mentioned this on my own Twitter feed, but I think it’s a good time for Matt to step up and purchase the rights to / create his own system to replace React. Vue is a GREAT alternative, but doesn’t have a big brand backing it. If WordPress BECOMES that big brand, that could easily set it up to win in the Javascript world. Personally, I’ve been using it to develop a few Twitch Extensions, and I’d love to see it gain some more mainstream appeal.

    1. Howdy Mitch!

      Awesome, glad you appreciated the end 🙂

      Yes, I was super surprised and so pleased by Matt’s post – the timeliness of it coming out right after this was pretty awesome!

      While I’d LOVE it if Vue became the framework of choice here – and I haven’t heard anything “official” counting that out – but all unofficial signs seem to be pointing to Preact.

  2. This is an wonderful post, thanks for taking the time to write it, Justin. ?

    There’s no denying that Gutenberg is a big change, and it’s on us (the Gutenberg team) to make the case for that change. There’s been massive amounts of feedback over the post months, some of it positive, some of it negative. For every post or comment that isn’t so empathetic, however, there are dozens that are. I’m seeing more and more optimism in all the feedback, which makes it worth the hard slog in a so many ways. Even the outright negative feedback is still helpful, though it’s draining to read. People are rightly passionate about a change that will potentially impact their livelihood in unforeseeable ways, I can’t begrudge them being a bit worried about what’s coming.

    I really like your priority list of things that Gutenberg needs to address, I have a few comments on them:

    A block-based editor should never have been imagined in wp-admin, but on the front-end.

    If Gutenberg were a greenfields project, I would absolutely agree with you. There have been some really interesting experiments with front-end editing, and I agree that it’s a direction Gutenberg could go, but I think there are some big changes that need to come, first. In many ways, Gutenberg tech on the front-end will redefine what it means to theme a site, so it’s not a bad thing to start a little smaller, with just the_content(). ?

    The HTML-comments-as-a-data-structure concept is clever, but there are better options.

    Again, if Gutenberg were a greenfields project… ?

    The HTML-comments-as-a-data-structure concept isn’t just there to be clever, it’s there to maintain backwards compatibility in a way that a structured format like mobiledoc cannot. We’re dealing with many millions of sites, running all manner of plugins and themes, many of which make fairly fundamental assumptions about what the raw data they’ll find in the `post_content` table. The Gutenberg team made an early decision to maintain backwards compatibility with all this old code, and I 100% agree with it.

    It also worth noting, as the Gutenberg format is sometimes written off as a weird hack, it’s anything but that. It has a formal grammar, and can quite easily manage all sorts of complex nesting and recursion. Thinking of it as a markup language is heading in the right direction.

    The React vs. Vue debate could have been handled perhaps a bit more transparently.

    It’s been a strange few months on that. After the multiple JS framework chats, the intention was to review everything during the Community Summit, and come up with a way forward. That’s what happened – the post was written, and there was just one outstanding item: asking Facebook to change the patent grant wording. We were in the process of reaching out to Facebook when the Apache thing happened, which was exceedingly poor timing for everyone involved. ? Unfortunately, these things are always slow moving, so we had no information to provide for some time. Facebook made their announcement, we continued discussing it with them (on the off chance that they would consider changing). That didn’t happen, which brings us to Matt’s post.

    I promise there’s no grand conspiracy, just slow moving discussions. Facebook were obviously under a lot of pressure to change, but there was nothing to be gained by us adding to that, hence the lack of public updates. As for this story, we haven’t spoken about it much, because it’s kind of just a mildly interesting process story, the decision to use “not React” is the thing that matters here.

    …the assurance of abstraction from any singular library, and potentially documentation on shimming in alternatives…

    I’m disproportionately excited about this, we really have an amazing opportunity to build something completely framework agnostic. If you’re after a way to make an impactful contribution to Gutenberg, I’d love to see a wide range of frameworks tested and documented with the current work – tell us what it’s like to build a Gutenblock in a coding style you’re familiar with.

    …the lead decision makers for Gutenberg might fall prey to the sunk cost fallacy. None of us, no matter how brilliant, are immune from its grip.

    You’re absolutely right, and I can’t overstate how important continued feedback from the entire community is in preventing this. We’re entrusted with building something that works for everyone, and it’s only through continued iteration and feedback that we can avoid getting stuck in an echo chamber.

    That said, we have to be careful not let the balance go too far in the other direction. Holding off releasing for a few months in order to rearchitect something is not necessarily the wisest move. Speaking as someone who spends a lot of time maintaining WordPress’ architectural legacy, some of the hardest parts to maintain are those that were rearchitected in response to problems at the time, whether they were real or perceived, that no longer apply. Avoiding over-architecting is one of the most important things we can do, when planning for the next 15 years.

    “Heeey, you know, we may still have a few thousand years to go. Let’s make those millennia AWESOME FOR EVERYONE”

    ? I love this so much. We might not have the same beliefs, but we absolutely agree on this. We’re all in this together, and we all have the same goals, we just disagree on how to get there sometimes. So, let’s have our disagreements, but we can have fun and respect each other while we’re doing it.

    1. Thanks so much for the great and thoughtful reply, Gary! This is the type of dialogue that I love in comments sections that seems to be a rarity!

      A few thoughts on your thoughts:

      I’m seeing more and more optimism in all the feedback, which makes it worth the hard slog in a so many ways

      This is so encouraging! I’m glad to hear that the core team for Gutenberg is noticing more optimism in feedback – it can be so frustrating to get the constant “vocal minority” barrage.

      Again, if Gutenberg were a greenfields project

      Totally understand and agree with the sentiments here on both of these points. I’m personally very hopeful that the iterative nature of this work means that possibilities are opened up in the future for things like front-end editing. But I so appreciate the amount of effort, compromise, and deep thinking that goes into making decisions like this at the scale this is at.

      If indeed the underlying PEG.js structures that exist in place for this now are the best approach – I hope we all find a way to fully document and provide education to the wider WordPress developer community about the piece this plays in Gutenberg (education to a greater extent than we experienced with something like the introduction of Backbone.js for media.).

      In addition, I hope we find a way to help users not have a negative experience if they, say, navigate from Visual mode to Text Mode, wonder what all the comment blocks are, and start removing them haphazardly.

      I promise there’s no grand conspiracy, just slow moving discussions.

      Absolutely. I think any allusion to the contrary is a bit too tinfoil hat for my taste 🙂

      Avoiding over-architecting is one of the most important things we can do, when planning for the next 15 years.

      Completely agree. That’s the temptation, sometimes – the proverbial pendulum swings too far one direction, and rather than bringing it back to center, we swing too far the other way.

      I think as a community, we have the capacity to find that “center” – and I think the commitment to openness and transparency in the development process thus far has been a huge reason for that.

      We’re all in this together, and we all have the same goals, we just disagree on how to get there sometimes. So, let’s have our disagreements, but we can have fun and respect each other while we’re doing it.

      1,000 times yes! Trust is given, mistrust is earned. The more we can all work together, assume the very best of one another, and trust that we’re all working toward the same end – the better off Gutenberg (and WordPress) will be.

  3. Hey Justin,

    Thanks for the great article, it’s been a refreshing take on the subject!

    I myself am one of the people that are nervous and worried about Gutenberg, so I’d like to briefly explain why that is.

    I don’t care about the current technical state of the plugin, as this is something time and effort can fix. And although I am relieved that we are getting away from React, this has more to do with ideologies, than technical merits.

    However, what I am missing in most discussions, is that Gutenberg represents not only a big opportunity but also a very specific risk: it might just introduce a hard limitation to the types of use cases the open source WordPress project can deal with.

    Right now, WordPress is not only being used for “democratizing publishing”, but it also enables serious business and enterprise projects, that ultimately inject a lot of money and resources into helping to “democratize publishing” as well. A big part of the market share of WordPress represents individual people that use it to make their voice heard, which is one of the most awesome feats a project like WordPress can achieve. However, I’d bet that large parts of this segment are cross-financed by the other, much smaller part of the market, that uses WordPress in the corporate world.

    So, to make sure I’m not being misunderstood: I understand the mission that the open source WordPress project has taken on. I know that the goal is not to make enterprise development easier.

    However, a large open source project does not simply sustain itself on ideology and good will. Everything in this world comes with a cost, and somebody has to pay that cost in the end.

    This is why I’m a bit nervous about Gutenberg. I sincerely hope it manages to achieve its goals without having a negative impact on the long-term sustainability of the WordPress ecosystem. I have no doubts that this is something that is achievable. However, I’m not quite sure right now that the priorities take this into account. The way it is currently being communicated makes enterprise users unsure of whether they can still bet on WordPress as a flexible framework. They would never think about using something like Wix or SquareSpace. WordPress stating (whether it’d be directly or indirectly) that this is the target market to shoot for makes it immediately much less attractive for a number of more complex use cases. I know full well that you can build something that works for both worlds. But I’m not sure that this is even being considered right now.

    Yes, so there you have my “criticism”, for what it’s worth. You’re absolutely right that the world won’t end with Gutenberg. However, a lot of enterprise investment just might…

    Let’s make sure this won’t happen!

    Cheers,
    Alain

    1. Thanks for the super thoughtful comment, Alain! You’re probably one of the small handful of developers in the WordPress community that have my utmost levels of respect, deference, and trust – so it’s a pleasure to read through your thoughts on my post.

      it might just introduce a hard limitation to the types of use cases the open source WordPress project can deal with

      Yes! So I love this – I’ve talked to or heard from several folks in the last few weeks that share your concern, especially when thinking about enterprise/government/education. Basically, the fringe of WordPress. I hope that hosts get involved, government gets involved, enterprise gets involved – I hope all of these voices come to the table and work together to bring their perspective and their needs and their use cases. Because if they stay silent and uninvolved, we all lose.

      I know full well that you can build something that works for both worlds. But I’m not sure that this is even being considered right now.

      I think you have a unique perspective and capacity here! Being someone who A) Recognizes this concern B) Recognizes that it can be addressed and C) Is in a position to address it via core contribution is an incredible place to be! I hope you recognize the unique gift in yourself that you are to the WordPress community and continue to pursue communicating this perspective. You have more allies in this Enterprise concern than you probably realize!

  4. I do hope that a JS driven wordpress will still function gracefully when JS is unavailable. Generally if a website cannot function without JS, it is badly designed.

    1. Hi Richard,

      Thanks for the comment, that’s a great thought! I’m not sure yet what the end result for a user would be if JavaScript were disabled.

      My understanding currently is that Gutenberg will have the possibility of being disabled in favor of the previous editor, at least for a time. One presumes that a user without JavaScript enabled would have the same experience. I couldn’t find any issue on Github to that effect, though, so you may want to post one there!

  5. Good thoughts on this. I pretty much agree with all your takes on this, but want to emphasize your point about the sense of urgency those who are driving this project seem to have. It takes a long time to build good open-source software, especially one that is trying to solve many problems at once, and the apparent rush to release it into core is the only thing I really fear about it.

    I proposed over at WPTavern that Gutenberg would be better as a feature plugin that is included in WordPress core for many different versions before actually adding into the core code and I am suprised no-one else seems to be mentioning that as a way to get it in the hands of as many WordPress users as possible sooner than later, but still leave the options open to evolve it before it is finally released into core.

    Bottom line, the biggest concern I have related to Gutenberg is the core team won’t allow it to mature before they add it to more than 25% of the web.

    1. I think that’s a fair concern, Mike – thanks for the comment! I share your concern, but also recognize Gary’s point – it would be easy to swing too far in the other direction and never ship it due to over-architecting.

      I have a lot of faith in our community to get this right 🙂

      1. To clarify, my concern is that they will over-architect rather than allow time to recognize that some things are really not needed. Complexity is easy; simplicity is hard.

  6. I resent the fact that you find my comment malign. I find it a fair preoccupation that a major WordPress core project is started based on a framework which license isn’t clear enough to be compatible with WordPress’ license. That was always a major concern within the WordPress project, was it not? Why was it suddenly a secondary issue?

  7. I’ve long wondered if the trend toward page builders would do this to themes as well. With most modern page builders, often the best theme is more like a vanilla theme with little styling to interfere with the page builder generated pages and templates.

    Basically each page has its own design, top to bottom, that overrides any theme styling anyways. Taken to its logical conclusion, themes would become obsolete.

    That said, I don’t have the impression that Gutenberg goes nearly as far in this direction.

Leave a comment

Your email address will not be published. Required fields are marked *