An Inspirational Tour Through Other CMS

WordPress Meetup Vienna | https://kraftner.com/talks

Thomas Kräftner

https://kraftner.com | @kraftner@mastodon.social

WordPress Pain Points

Content Management System

Content Type Product

  • description with requirement for length
    • custom input for post meta, length validation
  • multiple product images for different teasers
    • just 1 featured image, i.e. custom UI for multiple images
  • color
    • custom color picker for post meta, RGB validation
  • weight
    • custom input for post meta, validation number > 0
  • multilingual
    • Plugin

Why structured content?

  • What does it enable on a technical level?
  • What does it enable for the website and its users?
  • What does it need for structured content?

Technical Level

  • separation of content and output
  • optimized editing UI incl. validation

Examples for thereby possible features

  • enforce consistency of content
    e.g. color always RGB, weight a number > 0
  • targeted search in and filtering by field
  • differing ways of output
    e.g. teaser element, PDF, JSON-API for apps
  • enforce consistency of layout
    color and weight always on the right next to description
  • easy global changes
    refactoring of content structure and template changes, independently of each other

Required CMS features

  • definition of structure (UI, config files, code)
  • editing UI
  • output (Templates)

Defining Content Types

Kirby Blueprints - Fields

fields:
  heroImage:
    type: files
    max: 1
  date:
    type: date
    time: true
    default: now
  author:
    type: users
  tags:
    type: tags

Drupal Fields

Kirby Blocks





fields:
  text:
    type: blocks
    fieldsets:
      - heading
      - text
      - image
      - quote
      - list      

Neos Dimensions

Editing Content

Kirby Blueprints Layout

title: Article
icon: 📖

columns:
    main:
      width: 2/3
      fields:
        text:
          type: textarea
          size: large

    sidebar:
      width: 1/3
      sections:
        
        meta:
          type: fields
          fields:
            heroImage:
              type: files
              max: 1
          date:
            type: date
            time: true
            default: now
          author:
            type: users
          tags:
            type: tags
          files:
            type: files

Neos Workspaces

  • "Git for content" - branches, merging
  • workflows:
    • prepare content
    • sign off content

Output Content

Kirby PHP Templates

<html>
  <head>
    <meta charset="UTF-8">
    <title>
      <?= $page->title()->html() ?> | <?= $site->title()->html() ?>
    </title>
  </head>
  <body>
    
    <header>
      <h1>
        <a href="<?= $site->url() ?>">
          <?= $site->title()->html() ?>
        </a>
      </h1>
    </header>
    
    <main>
      <h1><?= $page->title()->html() ?></h1>
      <?= $page->text()->kirbytext() ?>
    </main>
    
  </body>
</html>

Drupal Views, Blocks, Regions

very, very much possible in the UI

Drupal Theming

  • Twig templates
  • component based reusability of HTML/CSS/JS (Single-Directory Components)

Neos Fusion & AFX

  • custom "Fusion" language to retrieve, transform and pass data to output
  • "AFX" template language, inspired by JSX in React
  • interesting but overkill for what one usually needs for my taste

Saving and Migration of Content and Configuration

Kirby Flat File

Title: An interesting article
----
Date: 2026-02-09
----
Text:
This is an interesting text.
  • plaintext files instead of database, one page & assets is a folder
  • simple search & replace
  • easy to version and trace changes with Git
  • easy to copy, move or restore content

Drupal Import/Export/Update

site_uuid: 50e22c09-9645-4a0e-a772-42a0de42eb25
uuid: 0e4dffc0-1bba-4ffb-8e5f-47568bd80968
entity_type: node
bundle: blog
base_fields:
  title: 'A post'
  created: '1770635745'
  url: /blog/2026-02/a-post
custom_fields:
  field_content:
    -
      value: '<p>This is the content of the post</p>'
      format: content_format

Content export/import incl. assets in standardized format

Updates & repeated imports without duplicates thanks to UUIDs

Ecosystem, Governance & Community

Drupal - The Open Source Poster Child

  • practically everything (Core & Modules) Open Source and no commercial extensions, i.e. just cross financing and volunteer work
  • often combined effort to work on community solutions including module dependencies, resulting in sometimes complex net of multiple modules
  • Drupal Association with democratically elected board
  • very sworn in, stable, international community, although smaller than WP
  • contribution credit system for recognition

Kirby - The proprietary Open Web paradox

  • no Open Source, Code available with one-time licence fee per site, but sustainable funding despite very small team of 5 people
  • extensions mostly standalone solutions, partly competing solutions for the same problem, partly commercial, so all in all similar to WordPress
  • small community with clear focus on the DACH region
  • (Certified) Partner Network

Neos - The radical, ideal perfectionist

  • Open Source and no commercial extensions, i.e. just cross financing and volunteer work
  • no central repository or market place for community extensions
  • german Verein with democratically elected board
  • very small (according to website 68 service providers) community basically just in DACH region

Overall impression

WordPress is basically the gaffer tape of CMS.
Neither elegant nor ever the perfect, abstractly "correct" solution, but one can quickly and with little complications roughly get to where one wants.
A thoroughly pragmatic "Good enough."

Drupal is completely different.
Where WordPress says "Design for the majority" and "Decisions not Options" Drupal allows for absolutely every question to make a custom decision.
So Drupal is more of a CMS construction kit with which one can fulfill 100% of ones requirements, even though the way to get there may quickly become exhausting and confusing.
But for those who need that Drupal will be a dream come true.

Neos is the smart ass of CMS.
The technical core aspects of a CMS have been deconstructed and implemented in the most perfect way.
Unfortunately this also leads to it often feeling like a theoretical, academic work of the departement of computer science. With everything but the technical foundation (documentation, UI/UX, accessibility or simply usage numbers) Neos unfortunately shows its weakness.
Everyone who seeks technical perfection instead of pragmatism should still be happy with Neos.

Kirby mostly manages the balance between the majorities needs and individuality.
No tight corset but still loosely set guardrails derived from practical experience with a lot of love for the details, artisan work and the Open/Indie Web.
If a website can be done inside the feature set of Kirby you probably won't have more fun with any other system.

Thanks for the attention!

Questions? Comments?

Personal experience with these or other CMS?

Thomas Kräftner

https://kraftner.com

@kraftner@mastodon.social

The ongoing WP Drama sparked my interest of what is going on with other CMS systems. My approach was mostly what pain points I personally see with WP and what interesting, different approaches other CMS might have.

As the name says CMS stands for the management of Content. So let's start there. For many people the killer feature of WP in the block era is that already while editing one can see how things will look in the frontend. So that you can see and edit layout and content at the same time. For me this is at the same time the biggest achilles heel of WP. So where exactly do I have a problem with that? Let's have a look at the following content type and how it could be implemented with WP.

As you can already see, this not very exotic content type already is hard to represent in WP. For a proper Editing-UI one needs custom development or at least plugins like ACF. Some things like a multilingual site are not or pretty hard to cleanly do in WP. All in all WP, or at least WP Core, pretty quickly reaches its limits for anything that structurally isn't a classic blog post or generic page.

Let's just reiterate: Why would we even want a content type in such a form? Let's break it up into 3 steps:

So, next, some approaches from other CMS. Very high level, not how everything works, just what is nicer than in WP:

Content easily defined in YAML files. Since just text files easy to version and mergeable.

UI to define content types and fields Easy import/export -> versioning, migration (similar to ACF Export/Import Sync but for everything)

Blocks similar to WP, less flexible, but easier to handle. The combination of fields and blocks enables strict specifications as well as flexibility, as required. Way easier to extend without build chain.

What I haven't mentioned yet is that multilingual content is a core feature for Kirby, just as with Drupal and Neos. With its concept of "Dimensions" it even goes a step further. Without going too much into the details: Translating content into different languages means having different variants of the same content. But languages are not the only situation where such a relation might be needed. For example one could have a situation where a content, although always in german, needs to be different for austria and switzerland. E.g. because of the currency or because features differ per country. Neos makes it possible to define language and market as two different "Dimensions". Then you can create content for each specific content, but can also define fallback rules if something is the same everywhere. This is already a great example of how Neos whenever there is the need for a feature like multilingual content doesn't just implement it, but also tries to find the most generic solution that can also cover more exotic edge cases.

Backend layout can be defined inside a certain range via YAML

Something we need again and again is preparing bigger changes of content. E.g. when launching a product publishing the product page, the corresponding support area and a news. And work on these collaboratively before publication. Here Neos offers Workspaces that work similiar to Git branches.

The templates are very close to what one is used from classic PHP based WP templates. But there is a clean, consistent API that is also easy to extend. What I really like about this is the individual control of HTML instead of markup predetermined by the CMS.

Very powerful tools for complex data queries and transformations. But very steep learning curve for something that only exists in Neos and for plenty of use cases probably only overcomplicates things. Therefore I am not even going deeper into this.

Exporting or importing data from a local environment or backup is rather cumbersome. One the one hand because the final URLs for images are directly inside post content and you always have to mess with the DB. On the other hand because posts or media do not have unique IDs and hence it is easy to break references based on IDs. It is similarly annoying to move setting changes between development environment, staging and live server. Partially as well as fully. Other CMS systems can do this way better:

After all these technical things and features I'd like to close with something else. Since one of the reasons why I have looked at these other CMS was the ongoing WP Drama I was also interested in how the ecosystems as well as the power- and organisational structures around the CMS work. As you all know WP Core is Open Source and developed by volunteers, although often in the form of sponsored fulltime developers. The same applies to many plugins. Especially bigger plugins, often even for essential things like e.g. custom post types or forms are commercial products. That on the one hand means more stable development due to sustainable financing, on the other hand fragmentation and lack of cooperation and standardization. Sometimes even less interest in usability or security than in more profit. So, how does this look elsewhere?