Inception CMS

Christopher Zimmermann
The Future Content
Published in
4 min readFeb 15, 2020

What if a CMS could edit itself?

Photo by Simon Zhu on Unsplash

A CMS is a tool, an app, to edit a website.

It’s interesting that the tool itself is a website.

And it’s interesting that websites become more app-like.

OK, there have been “web apps” for years. But an important recent shift is that the app-ness is moving from the backend into the frontend. Back-in-tha-day, the web part of the web app was just a thin UI to communicate with the actual application, which was running on the server. Now, with Vue, React, Angular frameworks and PWAs, the app is really running “on the web”, in your browser. For example, consider any web app with an offline mode — like Google docs.

(We’ve had “thin clients” back in days of yore — but usually running in other technologies like Java Applets, Flash or other “embeds”. They were only running “on the web”, but were not “of the web” as they are today.)

Inception

So, if a modern CMS has tooling to assemble not just static web pages, but also more dynamic app behaviours… And if this modern CMS is itself a web app that is running more in the browser and less on the server… then can I use the CMS to edit itself? That’s what I mean by Inception CMS.

Still from the film Inception, 2010, Warner Brothers. All rights reserved.

Chicken and Egg

Does that mean I could just build the whole CMS with its own tools?!??

M.C. Escher, Drawing Hands. Copyright 2017 The M.C. Escher Company, The Netherlands. All rights reserved. www.mcescher.com

It’s fun to imagine what would be the simplest, most minimal primitives that you would need to be able to do this. (A button, a view, and a layout?) But that’s really just a thought experiment. Reminds me of all the self-assembly research in robotics that was big 10 years ago.

Oh wow. Still going strong — check this out!

Realistically though I’m picturing a fully functioning CMS with a really good “Page Builder” tool. But now it’s not just editing pages, it’s editing frontend apps (SPA, or “micro-frontends”). Lets call it an App Editor. A user can use the App Editor to edit or customise other features of the CMS, like adding a field to an existing form. Or they could assemble and add a new specialised tool to it — for example for choosing products out of an integrated e-commerce system. A CMS that can edit itself.

The user, the “app author”, can choose from a palette of useful high-level components and place them on layouts to build even higher level units of functionality.

Same technology for the CMS & the website

That nice theoretical idea relies on the assumption that the CMS is built with the same building blocks as the websites it builds. Usually that is not the case. (For example Magnolia CMS where I work is built with Java but creates websites with HTML or frontend frameworks.) But when it is, it brings another nice advantage: What a developer learns about building websites also applies to building or tuning the CMS itself, and vice versa. I love it when things have this consistency. It’s one of the attractions and advantages of NodeJS, leverage your same javascript knowledge on the client and the server.

Today

I don’t know of any “Inception CMS” today. At Magnolia we recently launched a Visual SPA Editing feature that goes in the direction of the “App Editor” proposed above. (It lets teams take the headless CMS approach, but still give content authors a WYSIWYG editing experience.) But we don’t yet support using it to edit the Magnolia interface itself. The Inception CMS idea is not an explicit goal for us currently.

Photo by Joshua Fuller on Unsplash

What about you? Do you think the idea makes sense, or does the story have some gaping “plot holes”? Would a capability like this be practically useful? Do you know of CMS that can do this already — or one that is close?

--

--

Christopher Zimmermann
The Future Content

Love the mountains, motion graphics & photography, electronic music. Product manager at Magnolia CMS by day. Hacking front-end tech by night.