I’ve only just been catching up with the news about Gutenberg, the name for a revamp of the WordPress editor. You can use it right now, as it’s being built as a plugin first, with the idea that eventually it goes into core. The repo has better information.
It seems to me this is the most major change to the WordPress editor in WordPress history. It also seems particularly relevant here as we were just talking about content blocks and how different CMS’s handle them. That’s exactly what Gutenberg is: a content block editor.
Rather than the content area being a glorified textarea (perhaps one of the most valid criticisms of WordPress), the content area becomes a wrapper for whatever different “blocks” you want to put there. Blocks are things like headings, text, lists, and images. They are also more elaborate things like galleries and embeds. Crucially, blocks are extensible and really could be anything. Like a [shortcode], I imagine.
Some images from Brian Jackson’s Diving Into the New Gutenberg WordPress Editor help drive it home:



As with any big software change, it’s controversial (even polarizing). I received an email from someone effectively warning me about it.
The consensus is this UI upgrade could either move WP into the future or alienate millions of WP site owners and kill WordPress.
I tend to think WordPress is 2-BIG-2-DIE, so probably the former.
I also think piecing together block types is a generic and smart abstraction for a CMS to make. Gutenberg seems to be handling it in a healthy way. The blocks are simply wrapped in specially formatted <!– wp:core/text –> <!– /wp:core/text –> to designate a block, so that the content highly compatible. A WordPress site without Gutenberg won’t have any trouble with it, nor porting it elsewhere.
Plus the content is still treated in templates as one big chunk:
To ensure we keep a key component of WordPress’ strength intact, the source of truth for the content should remain in
post_content
, where the bulk of the post data needs to be present in a way that is accessible and portable.
So regardless of how you structure it in the editor, it’s stored as a chunk in the database and barfed out in templates with one command. That makes it perhaps less flexible than you might want from a templating perspective, but scopes down this change to a palatable level and remains very WordPress-y.
It seems a lot of the controversy stems from either who moved my cheese sentiments or what it does and doesn’t support at this second. I don’t put much stock in either, as people tend to find the cheese fairly quickly and this still under what seems to be heavy active development.
A big support worry is custom meta boxes. Joost de Valk:
Fact remains that, if you test Gutenberg right now, you’ll see that Yoast SEO is not on the page, anywhere. Nor, for that matter, are all the other plugins you might use like Advanced Custom Fields or CMB2. All of these plugins use so-called meta boxes, the boxes below and to the side of the current editor.
The fact that the Gutenberg team is considering changing meta boxes is, in our eyes, a big mistake. This would mean that many, many plugins would not work anymore the minute Gutenberg comes out. Lots and lots of custom-built integrations would stop working. Hundreds of thousands of hours of development time would have to be, at least partly, redone. All of this while, for most sites, the current editor works just fine.
That does sound like a big deal. I wonder how easy baby-stepping into Gutenberg will be. For example, enabling it for standard posts and pages while leaving it off for custom post types where you are more likely to need custom meta boxes (or some combination like that).
On this site, I make fairly heavy use of custom meta boxes (even just classic custom fields), as well as using my own HTML in the editor, so Gutenberg won’t be something I can hop on quickly. Which makes me wonder if there will always be a “classic” editor or if the new editor will be mandatory at a certain point release.
Yet more controversy came from the React licensing stuff. That went essentially like:
- Matt Mullenweg: we’re gonna switch away from React (which Gutenberg uses) because licencing.
- React: You’re all wrong but we give up. It’s MIT now.
- Matt Mullenweg: That’s good, but the talk now is allowing people to use whatever New JavaScript lib they want.
I’ve never heard of “framework-agnostic” block rendering, but apparently, it’s a thing. Or maybe it’s not? Omar Reiss:
With the new Gutenberg editor we’re changing the way the WordPress admin is being built. Where we now render the interface with PHP, we will start rendering more and more on the client-side with JavaScript. After the editor, this is likely to become true for most of the admin. That means that if you want to integrate with the admin interface, you’ll have to integrate with the JavaScript that renders the interface. If WordPress chooses Vue, you’ll have to feed WordPress Vue components to render. If WordPress chooses React, you’ll have to feed WordPress React components to render. These things don’t go together. React doesn’t render Vue components or vice versa. There is no library that does both. If WordPress uses a particular framework, everyone will have to start using that framework in order to be able to integrate.
That’s a tricky situation right there. Before the React license change, I bet a nickel they’d go Vue. After, I suspect they’ll stick with React. Their own Calypso is all React in addition to what already exists for Gutenberg, so it seems like a continuity bonus.
This will be a fun tech story to follow! Sites like Post Status will likely be covering it closer than I’ll be able to.
Ive been thinking about a good replacement for a CMS that’s actually fast and secure.
What does anyone think of .NET Core 2.0? C# and Java both offer great security (far above PHP), as well as speed.
.NET Core 2 runs on Linux as well, and can be containerized in Docker.
See here:
http://redhatloves.net
There’s nothing inherently secure or insecure about a programming language. It all comes down to how you use it.
I can’t believe you are replacing PHP with .NET in 2017
I don’t know what your security requirements are, but check out https://craftcms.com as a WordPress replacement, or use https://www.contentful.com to store content and write your own front-end.
These are my choices for CMS now a days, I would consider going back to WordPress, but never to Java or C#. They are very verbose languages not designed for websites.
Joe, like, what even are you even talking about. WordPress is plenty fast and secure?
The only reason why WordPress (and a lot of people) use PHP is portability. Choose any hosting and it has PHP.
But it’s a terrible programming language and you don’t need to have followed carefully the formal languages class at university to realize that. Heck, even its author told in several interviews that things got out of hand and he never intended to create a programming language.
If we were to freely replace the language, the obvious choice would be Python (and probably Flask, albeit this is just my preference).
Nowadays, for custom work I usually tell my customers to rent a VPS and I develop the server side software with Flask. It seems nowadays there are also CMS being developed in Python, either with Flask or Django.
If someone made a CMS as good as Craft in ASP.NET Core, I would weep long held tears of joy.
The problem is that despite the many really good things .NET offers, it’s never had a great CMS. The previous platform limitations, the preference for MSSQL and the dearth pf front-end focused developers in that space has made it nigh impossible. (Yes, Orchard that’s a thing – an overarchitected barely used thing)
Now that code is compiled on the fly on multiple platforms, the ghosts of WebForms have been excised, javascript front-ends are standard & the wickedly fast performance is even more wickedly fast – perhaps it will happen.
GM was too big to fail.
” I wonder how easy baby stepping into Gutenberg will be.”
That’s the core issue that many of us are concerned about – the current stated plan is that it will not be optional. It will ship in 5.0 and will be the default editor, period. Now, Matt has stated that 5.0 is gated on Gutenberg being ready vs this being a date driven release, but few of us have confidence that 5.0 will be held until, say, Fall ’18. So the question of what it supports and how well it will have been tested with a variety of sites is critical.
There are a LOT of sites that use things like Advanced Custom Fields, various shortcodes, etc. Changing how all of this is managed and generated is a HUGE undertaking and highly risky. To me, the risk is exacerbated by the lack of clarity and detail. We dont have a detailed roadmap. We don’t have any stated requirements that must be satisfied before release. We don’t have any stated plan for how compatibility testing will be done. Last I checked, plugin developers don’t yet have a stable API with docs or clear documentation on how to adapt their plugins to work with Gutenberg.
What I’d like to see is the approach that core took with t he REST API. That took a long time to evolve, was available as a plugin for much of that time and was only finally integrated when it really was ready. Releases weren’t held for it. And it pretty much launched without incident.
Gutenberg changes THE core part of WordPress – how content is created and managed. It should be changed with caution and a lot of thought and feedback.
I’ve been taking part on that circus the last 2 – 3 years, with idioties like the half-done, crappily documented Customizer (which apparently was originally complemented by the Change Issues .. but they are arriving 2 years late!), the Media Widgets (instead of getting the Media DB properly done), etc. pp.
A lot of feature creep, most of the time making development more stressful.
Now the “gutenberg” ‘fun’ on the way .. I’ve been seriously thinking about forking WP for good. Not to rework it into extreme ways like a lot of folks think about it, splitting it into several iterations, but just to remove the feature creep, calm everything down a bit, and maybe add options to disable usability nightmares like the Theme Customizer, XML-RPC and so on.
cu, w0lf.
You said: “That’s the core issue that many of us are concerned about – the current stated plan is that it will not be optional…Matt has stated…”
I guess Open Source doesn’t entail Open To Discussion? ;)
It must be nice to rule the world, or at least the 28% of all websites part of it.
Rick:
You should definitely check out the work allowing existing metaboxes to work with Gutenberg. It’s being tested against ACF, as well as many other the plugins that make advanced use of metaboxes. Once it lands in a Gutenberg release, you should definitely test it against your workflow.
Which plugins or shortcodes have you been having problems with? Shortcodes should continue to work.
Is there anything in particular that this “etc” refers to? Gutenberg is still in active development, but the aim is to cover the vast majority of existing use cases. If there’s something we’ve missed, I’d love to know about it.
I agree that we need to improve the docs, this is an ongoing effort. Do you have particular plugins in mind when you think about converting them to work for Gutenberg? Looking at real uses cases will definitely help when creating the documentation.
WPezDeveloper:
That’s not really fair, there are many ways to participate in the discussion. WordPress Slack, the Make WordPress blogs, the Gutenberg issue tracker, and we also read the comments on posts like these. Pretty much everything written about Gutenberg will be read by someone on the core Gutenberg team. Naturally, decisions need to be made, and you may not always agree with those decisions. But everyone is always welcome to participate in the discussion!
It sounds rather obvious that they should leave the regular metaboxes below the Gutenberg editor, at least during the (lengthy) transition phase.
Existing plugins would continue working and new ones will be built in React.
Soon enough, users will start preferring “modern” plugins that make use of Gutenberg and the community will transition naturally. Only then WordPress should remove support for the old plugins.
Federico:
That’s exactly what’s being worked on now! Existing metaboxes will work with Gutenberg, though plugins should definitely be looking at how to transition their metabox usage to Gutenblocks.
I don’t like this kind of experiment. Why change something that works? I’m seriously thinking about alternative, Publii (static CMS https://getpublii.com) looks really good.
Other options I’m considering:
Bolt
ProcessWire (as a stand-alone option; better to focus on more than just one CMS)
October CMS
Sitecake
ImpressPages
The main specifications are: Proper documentation (or at least proper source code commenting / PHPDoc), features comparable to the current WP, enhancable with plugins or extensions, no insane system requirements
cu, w0lf.
I already have put together a few sites with Grav which falls in the category of Static CMSs.
Works fine albeit with somewhat of a learning curve. Especially suitable for small and medium websites.
For the larger projects perhaps make the switch to Drupal?
Well now that you mention it… you can now effortlessly compile Vue to React with the React-Vue-Loader.
They could go with Stenciljs which promises to be framework agnostic.
Nice review, Chris!
I know the block format has been a bit of a point of controversy, but I’m glad to see that the benefits of it are becoming clearer. There are downsides to every decision, of course, as you noted:
Portability and legibility are two of the key features, though, so we hope people find it easy to use and read.
That’s certainly one of the options being considered, but metaboxes should ideally just work. There’s a really cool PR in progress, which allows existing metaboxes to work with Gutenberg. It’s shaping up pretty well, so should be landing in an upcoming Gutenberg release. Testing and feedback is highly encouraged!
Funnily enough, we’re working fixing this, too! This is still experimental, but the approach shown in this PR allows a Gutenblock written in Vue to make use of Gutenberg components written against React (in this case, the Vue Gutenblock is able to behave as an “editable” block, which relies on a bunch of internal components). The current experiment uses custom elements in the interoperability layer, which are supported natively in some frameworks (notably, Polymer and Stencil), and have wrappers available in other frameworks.
As Chris mentioned, this could(!) be done using Vuera or React-Vue-Loader
These content blocks give me Django flashbacks. Thanks.
/goes for a liedown.
One of the features that seems obvious (not really addressed here but likely soon to follow) is live view aka front-end editing. I would love to see this in the roadmap even if it is a reach goal.
There are developers that have done an exceptional job at providing a front-end experience with ACF and the ‘blocks’ method. The development of custom editors views such as Panels by Modern Tribe are a step in the right direction https://vimeo.com/194057171.
Hey Jake,
Front-end editing isn’t on the roadmap for WordPress 5.0, but you should expect to see much more front-end work after that. The Gutenberg focus will be shifting to the Customisation experience, which naturally involves tying in closely with the front-end. I don’t doubt that there’ll be some interesting experiments in front-end editing along the way.
In the mean time, the plan is to refine how themes can hook into Gutenberg in the Dashboard, so you can see a front-end-esque style for the content you’re working on.
Surprised so many people here are that attached to the WP content editor. I have been building out custom field sets & options for years to compensate for a lack of modular, flexible content in WP.
Looking forward to diving into Gutenberg.
Gutenberg seems really interesting and it’s already live on WP.com.
But IMHO one of its biggest drawbacks is that it puts
&nbps;
almost everywhere. It’s really annoying and generates rendering issues like sentences breaking at weird points.So, what I’m reading between the lines is that WordPress is slowly migrating away from PHP to a Javascript framework.