12 Aug 2026

feedDrupal.org aggregator

Stuart Clark (Deciphered): JSON:API Views 8.x-1.2

JSON:API on its own gets you decoupled entities: fetch a node, fetch a set of IDs, done. It doesn't get you the filtering, sorting and pagination that most real content listings actually need - a list of articles by tag, a paginated product catalogue, an events calendar with a date filter. You either reimplement that logic on the frontend, or Drupal ships a hand-written custom resource for every list on the site. That gap is the same regardless of what's rendering on the other end, React and Next.js, Vue and Nuxt, or anything else that can call an API.

JSON:API Views closes it: whatever a View can already do, a decoupled frontend can ask for over JSON:API, using the access checks and query logic the view already has, no separate endpoint to write or maintain. It's also, not coincidentally, why I still maintain the module at all: it's the backend half of DruxtViews, the piece that makes Views work in Druxt, my own Nuxt-based decoupled Drupal framework.

Continue reading →

12 Aug 2026 6:50am GMT

11 Aug 2026

feedDrupal.org aggregator

Drupal Association blog: Responding to Drupal Enquiries with a Community-First Mindset

This is a guest post from the team at Zoocha, a Gold Drupal Certified Partner with offices in the United Kingdom, Spain, Brazil, and the United States.

As Drupal agencies, we're fortunate to benefit from a vibrant ecosystem that generates awareness, interest, and opportunities for all of us. At Zoocha we receive inbound enquiries from a variety of sources. Whether they arrive via Drupal AI, Drupal CMS, a community recommendation, a Drupal event, or direct through our site, every enquiry often represents something important: a person taking their first step towards our community.

Not every lead is a project.
Not every lead has a budget.
Not every lead is ready to buy.

But they always deserve a meaningful response.

The First Impression of Drupal

When someone reaches out to a Drupal agency, they're rarely just evaluating that agency, they're more often than not seeking to engage with Drupal itself. For many prospective clients, they may not know the difference between Drupal, the Drupal Association, Drupal CMS, an implementation partner, a hosting provider, or the wider open source community. They simply know they've heard about Drupal and are looking for guidance.

The response they receive helps shape their perception of the entire ecosystem. If their first interaction feels dismissive, transactional, or overly focused on qualification, they may walk away believing that's what the Drupal community is like. If their first interaction is friendly and genuine, they leave with a very different impression.

Resist the Urge to Qualify Too Early

Most agencies have some form of qualification process. It's sensible, and so do we. Time is valuable, and we know not every conversation will become a project.

However, there is a difference between understanding someone's needs and interrogating them. We've all seen responses that immediately ask:

  • What's your budget?
  • What's your timeline?
  • Have you secured funding?
  • How many pages does the site need?
  • Can you complete this requirements questionnaire?

While those questions have their place, they are rarely the most important thing during an initial conversation. Many prospects simply don't know the answers yet.

Some are conducting research. Some are exploring options. Some are trying to understand whether Drupal is even the right fit. At this stage, what they often need most is guidance.

Be Helpful Without Expectation

One of the most effective approaches we've found at Zoocha is to assume that the first conversation may never lead to a sale. That does sound counterintuitive for a commercial organisation, but it changes the nature of the interaction. Instead of trying to move the conversation towards a proposal as quickly as possible, we focus on being useful. That might mean:

  • Answering questions about Drupal CMS
  • Explaining how Drupal compares to other platforms
  • Pointing someone towards community resources
  • Offering advice on procurement approaches
  • Helping clarify requirements
  • Suggesting next steps, even if they don't directly involve us

Sometimes that conversation ends there, and that's ok. The contact doesn't leave empty handed. They leave with a positive impression of who we are in the Drupal community.

The Long-Term Value of Community-First Thinking

Interestingly, some of our most successful client relationships started with conversations that had no immediate commercial outcome. We've had early exchanges that were little more than an idea, with individuals facing a specific challenge and just looking to find out if they're even in the right place with Drupal. After a person-first conversation, they disappeared. But a few months, or even a year, later, they came back, and what began as a casual enquiry became a long-term client partnership.

This didn't happen because we had the best sales team or process. It happened because we prioritised human connection over a fast sale.

Open Source Values Apply to Business Development Too

Drupal has always been built around principles of collaboration, openness, and knowledge sharing, these values really shouldn't stop at code contributions. They can also shape how we engage with prospective users of the platform. When we answer questions generously, share expertise freely, and help organisations make informed decisions, we're strengthening confidence in Drupal itself.

Even if a particular opportunity never becomes a client engagement, the person on the other end of that conversation is left with a positive impression of the community. That's good for all of us!

Conclusion

The next time a speculative Drupal enquiry lands in your inbox, try viewing it differently. Consider simply asking, "How can we actually help this person?" The answer might only require a short email, a useful link, or a brief conversation, and yes, the immediate commercial return is likely to be zero. But the long-term return, for your agency and for the Drupal ecosystem, can be significant.

Every first interaction is an opportunity to demonstrate what makes the Drupal community different. Let's make sure it's a positive one.

11 Aug 2026 8:00pm GMT

Aten Design Group: Choosing a Multisite Approach in Drupal

Choosing a Multisite Approach in Drupal Joel Steidl Drupal

Organizations usually begin considering a multisite approach (the ability to manage multiple distinct websites from one single Drupal instance) when they are scaling their digital presence. This scaling is not only about traffic, but also about organizational structure.

Common drivers include:

  • the need to support many related brands, locations, or programs that require their own websites
  • pressure to reduce long-term maintenance costs and duplicated effort
  • desire to balance central governance with local autonomy, while maintaining shared design systems or functionality across multiple properties.

A multisite architecture is not always the right answer. It often introduces additional complexity and is rarely justified when sites have fundamentally different goals or audiences, when editorial teams require complete independence, or when there is insufficient technical capacity to support shared infrastructure.

When a multisite approach does make sense, there are several established patterns in Drupal. Each pattern solves a different organizational problem and comes with meaningful tradeoffs.

Single Codebase, Multiple Sites

This category includes approaches where many independent Drupal sites share a common codebase while maintaining separate databases, configuration, and content.

Two common implementations of this pattern are custom upstreams (commonly used on Pantheon) and Acquia Site Factory. These approaches are often discussed together, but they differ in important and practical ways.

Custom Upstreams

What it is

Custom upstreams allow multiple Drupal sites to inherit from a shared upstream Git repository. Each site is a fully independent Drupal installation. The upstream defines only the shared code, and perhaps a starting point for the site configuration.

Sites choose when to pull updates and can diverge when necessary.

Best fit when

  • You have many similar sites such as offices, chapters, or locations.
  • Central engineering teams manage releases.
  • Site autonomy and failure isolation are important.
  • Governance can be handled through process rather than tooling.

Pros

  • Clear separation between sites, including content, configuration, and databases.
  • Centralized feature and security updates.
  • Predictable deployments and rollbacks.
  • Site-specific issues are easier to debug and reason about.
  • Strong failure isolation between sites.

Cons

  • Cross-site content sharing is difficult.
  • Mass content updates require custom tooling or workflows.
  • Site-level customization can lead to long-term divergence.
  • Consistency depends on discipline rather than enforcement.

Summary

Custom upstreams optimize for operational clarity and independence. They scale well when sites are intentionally similar but not tightly coupled.

Acquia Site Factory

What it is

Acquia Site Factory is a managed multisite platform layered on top of Drupal and Acquia's hosting infrastructure. In addition to sharing code, Acquia Site Factory provides a central control plane for provisioning, governance, and operations across a large portfolio of sites.

The platform is designed as a true site factory, with templated site creation and centralized management.

Best fit when

  • You manage very large site portfolios, often numbering in the hundreds.
  • Governance, compliance, and standardization are primary concerns.
  • Non-technical users need to create new sites.
  • Central control is valued over flexibility.

Pros

  • Centralized site creation and lifecycle management.
  • Built-in governance, roles, and permission models.
  • Templated site provisioning at scale.
  • Integrated security, monitoring, and platform support.
  • Reduced operational burden for large programs.

Cons

  • Higher platform dependency and lock-in.
  • More opinionated workflows and constraints.
  • Less transparency into the underlying architecture.
  • Cost and complexity may be excessive for smaller portfolios.
  • Failure domains may be broader depending on platform configuration.

Summary

Acquia Site Factory optimizes for governance and scale. It trades architectural flexibility for centralized control and operational efficiency.

A critical distinction

While both approaches support a single codebase with multiple sites, they emphasize different priorities.

  • Pantheon Custom Upstreams emphasize site autonomy.
  • Acquia Site Factory emphasizes centralized governance.

This distinction affects deployment workflows, debugging, onboarding new sites, and the long-term evolution of the platform.

Traditional Drupal Multisite

What it is

Traditional Drupal multisite allows multiple websites to run from a single Drupal codebase using separate directories under /sites. Each site typically has its own database and configuration. All sites share the same runtime, deployment process, and underlying infrastructure.

This approach is built into Drupal core and remains fully supported.

Best fit when

  • You manage a small number of closely related sites.
  • Infrastructure simplicity is a priority.
  • Centralized deployments are acceptable.
  • Failure isolation is not critical.

Pros

  • Native to Drupal with no additional platform requirements.
  • Shared codebase with minimal tooling.
  • Lower hosting and infrastructure costs.
  • Familiar pattern for long-time Drupal teams.

Cons

  • All sites share the same runtime and infrastructure.
  • A deployment issue, performance problem, or outage can affect every site.
  • Limited isolation between sites.
  • CI/CD and rollback workflows are more complex.
  • Risk increases significantly as the number of sites grows.

Summary

Traditional multisite optimizes for simplicity and cost reduction at small scale. Shared runtime risk becomes a significant drawback as complexity increases.

Drupal Domain module

What it is

The Domain module allows a single Drupal site and database to serve multiple domains or subdomains. Content is explicitly assigned to one or more domains at publish time.

Out of the box, content is not automatically shared across domains. Editors must intentionally choose which domain or domains the content belongs to.

Best fit when

  • Domains represent closely related organizations, programs, or campaigns.
  • Editorial teams overlap significantly.
  • Content reuse is intentional and controlled.
  • Centralized user management is important.

Pros

  • A single codebase, database, and user system.
  • Explicit control over where content appears.
  • Content can be assigned to multiple domains when needed.
  • Shared media libraries and assets.
  • Centralized editorial workflows and permissions.

Cons

  • Content sharing is manual and intentional rather than implicit.
  • Editorial complexity increases as the number of domains grows.
  • Menus, blocks, and layouts often require domain-specific configuration.
  • Configuration management becomes significantly more complex.
  • All domains share the same runtime and infrastructure.
  • A failure or deployment issue affects every domain.

Summary

The Domain module shifts complexity away from infrastructure and into editorial experience and configuration management. Clear domain boundaries and editor training are essential.

Decoupled or Composable Multisite

What it is

In a decoupled approach, multiple sites share front-end applications, design systems, or component libraries. Each site maintains its own Drupal backend or content management system.

This pattern is typically part of a broader composable architecture strategy.

Best fit when

  • Front-end engineering maturity is high.
  • User experiences vary significantly.
  • Design systems are a long-term investment.
  • Teams already operate across multiple platforms.

Pros

  • Maximum flexibility in frontend experiences.
  • Clear separation of concerns.
  • Independent evolution of design systems.
  • Reduced coupling at the Drupal layer.

Cons

  • Significantly higher technical complexity.
  • Increased infrastructure and operational overhead.
  • Slower initial development timelines.
  • Strong DevOps and frontend discipline are required.
  • Shared frontend infrastructure can introduce shared failure domains.

Summary

Decoupled multisite architectures prioritize strategic flexibility rather than cost savings.

Fully Separate Sites

In some cases, the best multisite decision is not to use a multisite approach at all and maintain separate websites.

Pros

  • Maximum autonomy.
  • The simplest editorial model.
  • Complete isolation of failures.

Cons

  • Duplicated effort and higher long-term cost.
  • Difficulty enforcing standards.
  • Feature parity becomes expensive over time.

Comparison Table

Approach Governance Editorial Complexity Technical Complexity Content Sharing Failure Isolation Best For
Pantheon Custom Upstreams Low to medium, process-driven Low Medium Low High Many similar sites that require autonomy
Acquia Site Factory High, platform-enforced Medium High Low to medium Medium Very large, compliance-driven portfolios
Traditional Drupal multisite Low Medium Medium Low Low Small multisite portfolios
Domain module Medium High High Intentional and manual Low Closely related brands with shared teams
Decoupled multisite Low to medium Medium Very high Low Low to medium Highly differentiated experiences
Fully separate sites Low Low Low None High Independent organizations or brands

Final Thoughts

There is no universally perfect Drupal multisite solution.

The real question is what are you optimizing your site for? Autonomy, consistency, speed, and shared content lead to different architectural decisions.

Most multisite challenges are organizational first and technical second. The right architecture reflects how teams work today and how they expect to scale in the future.

Get in touch with us to talk about the best multisite options for your organization.

Joel Steidl

11 Aug 2026 3:56pm GMT

BloomIdea: Rendering Mermaid diagrams in Drupal, and the highlight.js trap along the way

This started with an agent writing a comment into our Drupal intranet. It had traced an authentication flow, decided a sequence diagram was the clearest way to say it, and wrote one. What landed on the page was a grey box of monospaced text.

That is a small failure with a wider shape behind it. A growing share of what gets written into a Drupal site is no longer typed by a person into CKEditor. It arrives through an API, from a script, from an agent with an MCP connection to the site. And whatever writes it, the diagram comes out the same way:

<pre><code class="language-mermaid">sequenceDiagram
  Alice-&gt;&gt;Bob: hello</code></pre>

That is not a choice anyone made. It is what a fenced ```mermaid block becomes when Markdown is converted to HTML, which is the shape a language model writes in because it is the shape it was trained on. It is also, independently, exactly what CKEditor 5's Code Block plugin emits when a human picks a language from the dropdown. Human authors and machine authors converge on the same markup, which is a convenient thing to be able to rely on.

Mermaid is worth supporting for the ordinary reasons too. The diagram stays as text in the field, so it is searchable, it diffs, and the next person fixes one line instead of rebuilding a PNG that nobody has the source for. But the reason it became urgent for us is the one above: content we did not hand-write was arriving in a form the site silently failed to render.

Getting it working turned out to be short, with one genuinely non-obvious trap in the middle. This post is the trap, wrapped in the working solution.

What already exists

Mermaid Integration is the contrib module. It has been around since 2020, it is maintained by people whose names you will recognise, and its filter renders diagrams from a [mermaid]...[/mermaid] shortcode.

That syntax is the whole problem, and it is worth being precise about why. No model will ever emit [mermaid] unprompted, because nothing in its training data looks like that. Neither will any Markdown converter, nor CKEditor, nor a paste from a README. A human can be told to switch to source view and hand-type a shortcode. A pipeline cannot be told anything, and it does not fail loudly: the content saves fine, the page renders fine, and the diagram is simply a code block forever.

So a shortcode-only integration is invisible to every non-human author your site has. That is a different problem from being inconvenient, and it is the one that decided this for us.

We wrote our own filter rather than fight that, and we are contributing code block support back upstream. More on that at the end.

The filter

The pattern to copy is Highlight.js Input Filter. Its filter does a cheap regex first and only attaches its libraries when the text actually contains a code block. That conditional attachment is the whole game when your library is measured in megabytes.

public function process($text, $langcode): FilterProcessResult {
  $result = new FilterProcessResult($text);

  // No diagram in this text: attach nothing, change nothing.
  if (!preg_match(self::DETECT_PATTERN, (string) $text)) {
    return $result;
  }

  $count = 0;
  $processed = preg_replace_callback(self::BLOCK_PATTERN, /* ... */, (string) $text);

  if ($processed === NULL || $count === 0) {
    return $result;
  }

  $result->setProcessedText($processed);
  $result->addAttachments(['library' => ['your_module/mermaid']]);

  return $result;
}

Nothing surprising so far. Then you turn it on next to your existing syntax highlighter and the page breaks in two ways at once.

The trap: highlight.js has two halves

Our site runs Highlight.js Input Filter on the same text format. The moment a language-mermaid block appeared, two things went wrong: a 404 in the console on every page with a diagram, and syntax highlighting painted underneath the rendered graph.

The 404 is easy to explain. That module scans the text server-side for language-* classes and passes the languages it found to the browser in drupalSettings, and the front end then imports a grammar per language from a CDN. There is no Mermaid grammar in highlight.js, and there never will be, because highlighting and diagramming are not the same operation. One paints tokens and leaves the text as text. The other deletes the block and draws something else in its place. So the import 404s:

GET https://unpkg.com/@highlightjs/cdn-assets@11.9.0/es/languages/mermaid.min.js  404

The obvious fix is filter weight. Give your filter a negative weight so it runs before the highlighter, take the block out of the way, done.

It is not enough, and this is the part worth remembering. The highlighter has a second half that filter weight cannot reach. Its JavaScript calls:

hljs.highlightAll();

highlightAll() walks every pre code element in the document and auto-detects a language for each one. It does not consult drupalSettings. It does not know or care what your PHP decided. Ordering filters fixes the server-side half and leaves the client-side half completely untouched, which is why the double-render survives a fix that looks like it should have worked.

So the filter has to change the markup, not just run first. Two edits, one per half:

// Before: what CKEditor stored.
<pre><code class="language-mermaid">…

// After: what our filter emits.
<pre data-bloom-mermaid="1"><code class="nohighlight">…

The attribute on the <pre> defeats the server-side half, because that module's regex requires a bare <pre> immediately followed by <code:

'/<pre>\s*<code\s+class="\s*(?:[\w-]+\s+)?\b[\w-]*lang(?:uage)?-([\w-]+)\b/i'

Add any attribute and it stops matching, so mermaid never reaches drupalSettings and the 404 never happens.

The nohighlight class defeats the client-side half. It is the class highlightElement checks before giving up on an element:

const shouldNotHighlight = (languageName) => /^(no-?highlight)$/i.test(languageName);

Both, or you have only half a fix. We have this written down in the repo with a note not to remove it, because the rewrite looks redundant if you only know about the filter ordering.

There is a neater variant available if you control the output shape. Contrib's module emits <pre class="mermaid"> with no <code> element inside at all, and highlightAll() selects pre code, so the collision simply cannot occur. We kept the <code> because we wanted a readable code block as the failure mode. Pick whichever tradeoff you prefer, but pick deliberately.

Vendor the library, and know what you are vendoring

Contrib pulls Mermaid from cdn.jsdelivr.net with no version pin. We wanted the file in the repo: no third-party dependency in the critical path of an internal page, and no surprise when a major version lands.

The tidy Drupal answer is composer require npm-asset/mermaid, which installs into web/libraries. We measured before committing to it, and the numbers ended the discussion. Mermaid 11.16.1 unpacks to 83 MB across 1171 files, about 26 MB of which are source maps that never reach a browser. web/libraries is tracked in git in our project, so that is 83 MB of repository for one diagram renderer.

What you actually need is one file. dist/mermaid.min.js is the self-contained UMD build, 3.6 MB raw and 975 KB gzipped, and it sets globalThis.mermaid. We vendored that single file with a README next to it recording the version, the licence, the exact source URL and the upgrade command.

3.6 MB is still a lot, which is exactly why the conditional attachment matters. A page with no diagram downloads none of it. We also set preprocess: false on the library so a file that size stays out of the aggregated JavaScript bundle:

mermaid:
  version: 11.16.1
  js:
    js/vendor/mermaid.min.js: { minified: true, preprocess: false }
    js/mermaid-init.js: {}
  dependencies:
    - core/drupal
    - core/once

Two details in the JavaScript

Read textContent, never innerHTML. The stored markup escapes the arrows, so a sequence diagram is sitting in the database as A--&gt;&gt;B. textContent gives you the decoded text that Mermaid's parser expects; innerHTML hands the parser the entities and it fails on every diagram with an arrow in it, which is to say all of them.

A broken diagram must never break the page. Someone will eventually get the syntax wrong in a comment, and a syntax error in one diagram cannot be allowed to take down a task page. So the render is wrapped, the failure is silent, and the original code block stays visible and readable:

mermaid.render(id, source)
  .then((result) => { /* replace the <pre> with the SVG */ })
  .catch((error) => {
    // Degrade to the plain code block.
    pre.classList.add('bloom-mermaid-error');
    console.warn('Mermaid: diagram not rendered.', error);
  });

Set securityLevel: 'strict' while you are there, and suppressErrorRendering: true so Mermaid does not inject its own error graphic into your page when a parse fails.

One more that cost us a test to find: Mermaid leaves a throwaway measurement element in document.body when parsing throws. It cleans up after a successful render but not always after a failed one. Remove #d<your-id> in a finally.

Adding it to the editor

Last step, and easy to forget: put Mermaid in CKEditor's Code Block language list, so authors can pick it from the dropdown instead of needing source view.

plugins:
  ckeditor5_codeBlock:
    languages:
      # …
      -
        label: Mermaid
        language: mermaid

Export that config. If it only exists in the active store, the next config:import takes it away again.

Contributing back

None of the above is Mermaid-specific except the library name. Any renderer that replaces a code block rather than colouring it hits the same two-halves problem: PlantUML, Vega-Lite, ABC notation, chemical structures. If you build one of those, the ordering fix will look like it worked and it will not have.

Two merge requests are open against Mermaid Integration:

  • #3616088 adds code block support alongside the shortcode, carries the highlight.js de-confliction, and makes the library attachment conditional instead of unconditional.
  • #3592975 adds the config schema the filter currently lacks. Without it, installing the module blocks saving any text format on Drupal 11.3, whether or not the Mermaid filter is enabled anywhere.

Reviews welcome.

As for the comment that started this: the agent reran it after the filter went live, and the diagram drew. Which is the useful test, in the end. If the machines writing into your site cannot render a diagram, neither the machines nor the people reading after them get one.

11 Aug 2026 1:18pm GMT

Specbee: How to build accessible Drupal Themes with Twig and BEM

Accessibility in a Drupal theme starts in your .html.twig files. Here's a practical guide to learning how to structure templates with semantic HTML5 and BEM class naming.

11 Aug 2026 11:09am GMT

The Drop Times: Drupal GovCon 2026 Speakers Preview AI Governance, Migrations, Performance, and Delivery

Several Drupal GovCon speakers are looking past demos and idealised workflows to the harder questions of what government teams can govern, maintain, afford, migrate, and trust in real projects.

11 Aug 2026 5:09am GMT

Cheppers: ExperienceKit: AI Landing Page Generation for Drupal - How It Actually Works

Describe the landing page you need in plain language. A few minutes later, it exists in your Drupal site: production-ready, on brand, and waiting for your review. That is the promise of an AI landing page generator for Drupal, and it is no longer a demo trick. It works, it is reliable enough for enterprise sites, and it changes how marketing and development teams divide their work.

11 Aug 2026 12:00am GMT

10 Aug 2026

feedDrupal.org aggregator

The Drop Times: Who Pays for Drupal’s Shared Work?

Recent audited figures give Drupal's sustainability debate a concrete baseline. The Drupal Association says unrestricted reserves are about $960,000, equal to 2.3 months of operating expenses and below the board's three-month minimum. Its 2025 accounts put Drupal.org and supporting services at about $2.1 million in programme expenses, without a dedicated funding mechanism. The question is no longer whether shared work has a cost, but how those costs become recurring commitments.

The same problem appears across infrastructure, security review, dependency maintenance and contribution. These responsibilities continue after software is adopted and cannot be assumed to exist indefinitely through volunteer capacity, one-off grants, donated services or event revenue. Current proposals differ on the mechanism, but increasingly treat stewardship as capacity that organisations and institutions have to plan and fund.

That makes this week's question narrower than whether Drupal needs stewardship. It is who pays, for what, and on what recurring basis. With voting in the 2026 Drupal Association at-large board election open until 14 August 2026 at 23:59 UTC, those choices are also part of a live governance decision.

Follow The DropTimes on LinkedIn, X, Bluesky, and Facebook, or join #thedroptimes on Drupal Slack.

This issue of Editor's Pick was written and curated by Allen Jason.

10 Aug 2026 5:12am GMT

08 Aug 2026

feedDrupal.org aggregator

PreviousNext: Why PreviousNext signed Drupal's Manifesto for an Open Future

We recently added PreviousNext's name to "A Manifesto for an Open Future," joining 15 other Drupal agency founders and leaders in a public declaration that open source, not closed platforms, is the foundation for the future. Since founding PreviousNext in 2009, we've built our business on that premise, so signing felt less like adopting a new position and more like putting our name to something we've already been doing for 17 years.

by Owen Lansbury /

The manifesto's core conviction is: "we are here to help build a resilient civilisation, and to build it in the open." The nine statements that follow reinforce that open source code becomes a refuge as trust in proprietary technology erodes; that data sovereignty stops being optional; that structured content becomes the raw material machines reason best on; and that security earned through a quarter-century of public scrutiny counts for more than a security case a vendor simply asserts rather than proves.

We didn't need much convincing to sign. PreviousNext invests around 5% of our annual revenue by contributing to Drupal's codebase and community, we're Australia's only Top Tier Drupal Certified Partner, and we rank among the top five global contributors to the project despite our comparatively small team. From helping formalise the DrupalSouth Steering Committee through the 2010s and volunteering on the Drupal Association board from 2019 to 2025, the manifesto's language about supporting the wider community across competitive lines is the essence of the commitment we already have.

The manifesto asks signatories to commit to four things: contribute; support each other; tell the story of what open source makes possible; and meet the moment with courage instead of retreating into nostalgia. For us, our contributed time is a budget line, not a marketing spiel. The second means we'll keep sharing what we learn building on Drupal rather than treating it as a competitive advantage to hoard. The third and fourth are more about attitude: talking about Drupal in public more, like we just did with other Drupal Certified Partners at a major government conference, and being ambitious about Drupal's future evolution, rather than assuming 25 years of Drupal's legacy settles all arguments.

That last point matters more for our clients. While most of the industry conversation around AI has been about which platform is the newest and shiniest, the manifesto explains that machines reason best on content that's modelled, labelled and meaningful, which is what Drupal has spent two and ahlf decades getting right. As more of our clients start integrating AI into their platforms, that structure stops being a technical detail and starts being the difference between AI that actually understands content and AI that's guessing at it. Sovereignty works the same way: Drupal carries no licensing cost, we can modify and enhance every line of code we build on, and clients own their platform outright, something PreviousNext's clients already benefit from. From a security perspective, Drupal's codebase is available for any security researcher to inspect and is overseen by a global security team that PreviousNext team members are an active part of.

If you're a Drupal agency, hosting provider or product team that shares this view, the manifesto is still open for signatories at https://drupal-open-future-manifesto.com/. If you're a client wondering what our commitment to open source principles means for your own projects, please get in touch.

08 Aug 2026 6:12am GMT

07 Aug 2026

feedDrupal.org aggregator

Gábor Hojtsy: Introducing Language Audit and Configuration Language Lock for Drupal and asking for your feedback

Introducing Language Audit and Configuration Language Lock for Drupal and asking for your feedback

I am neck deep in Drupal configuration language recently as I was diagnosing problems with how recipes are installed on foreign language Drupal CMS sites and how Drupal Canvas operates under that inconsistent configuration. I did a lot of research and while already fixed a few of the side-quest bugs fund, there are many old standing issues that this area connects. As a result I built two open source Drupal modules: one to diagnose and another to force language behavior. These two modules may be used today (although both are fresh and not yet widely proven so consider that a caveat).

Gábor Hojtsy

07 Aug 2026 4:22pm GMT

The Drop Times: Display Builder Beta 6 Brings UX Refresh and Drupal 11.4 Fixes

Display Builder Beta 6 carries the UX refresh previewed in July, adds Drupal 11.4 compatibility fixes, and replaces a Beta 5 affected by a fresh-install failure. Translation and accessibility work remain before a release candidate.

07 Aug 2026 12:26pm GMT

06 Aug 2026

feedDrupal.org aggregator

Talking Drupal: Talking Drupal #564 - Approachable Open Source

Today we are talking about Maintaining NodeJS, Patternlab, Writing Books, and Open Source with guest Brian Muenzenmeyer. We'll also cover AI Webform Generator as our module of the week.

For show notes visit: https://www.talkingDrupal.com/564

Topics

Resources

Guests

Brian Muenzenmeyer - brianmuenzenmeyer.com

Hosts

Nic Laflin - nLighteneddevelopment.com nicxvan John Picozzi - epam.com johnpicozzi Bernardo Martinez - bernardm28 JD Flynn - dorficus

MOTW Correspondent

Jacob Rockowitz - jrockowitz.com jrockowitz

06 Aug 2026 6:00pm GMT

The Drop Times: James Abrahams Makes Sustainable Funding a Focus of Board Candidacy

How the Drupal Association raises money can shape who influences the project and which work gets sustained. James Abrahams makes that tension central to his board candidacy.

06 Aug 2026 2:50pm GMT

joshics.in: A backend engineer guide to Single Directory Components in Drupal

A backend engineer guide to Single Directory Components in Drupal bhavinhjoshi

Single Directory Components completely changed how we handle the frontend. But if you spend most of your time engineering the backend, SDC can feel incredibly frustrating.

You build a massive render array, pass it to the template, and the strict schema rejects it instantly. The days of dumping raw entity objects into Twig are over.

When you work with SDC, the component dictates exactly what data it accepts. This guide details the cleanest way to format your data and bridge the gap between custom backend logic and strict frontend schemas.

Implementing the Component Workflow

If your backend architecture does not format data perfectly, the system throws a fatal error. Follow these steps to ensure your data matches the strict schema requirements.

1. Define your component schema

Every component needs a YAML file. This is the contract your backend must follow. Keep your properties simple and predictable.

name: Article Card
description: A strict component for displaying article summaries.
props:
  type: object
  required:
    - title
    - url
  properties:
    title:
      type: string
      title: Article Title
    url:
      type: string
      title: Target Link
    summary:
      type: string
      title: Teaser Text

2. Format the render array

Backend engineers usually try to pass the entire node object. Do not do that. Extract the exact strings your schema demands. Set the render array type to component so Drupal knows how to route it.

$build['article_card'] = [
  '#type' => 'component',
  '#component' => 'my_theme:article_card',
  '#props' => [
    'title' => $node->getTitle(),
    'url' => $node->toUrl()->toString(),
    'summary' => $node->get('field_summary')->value,
  ],
];

3. Render the component

Your Twig file is now incredibly clean. It only prints exactly what the backend provided. No complex logic. No processing overhead.

<div class="article-card">
  <h2><a href="{{ url }}">{{ title }}</a></h2>
  <p>{{ summary }}</p>
</div>

Notice how we completely avoid preprocess functions here. The template simply accepts the data contract and renders the output.

Key Considerations

  • Never pass full entity objects into SDC props. Always extract the raw values first.
  • Validate your schema early. A mismatched type will trigger a rendering error that brings down the page.
  • Keep your #props mapping clean by handling all complex business logic in the controller rather than the template.

This strict separation keeps your backend logic secure and your templates highly predictable. Adapting to Single Directory Components requires a mindset shift for backend developers. But it is the absolute best way to scale enterprise software without creating a massive technical debt trap for future engineers.

Add new comment

06 Aug 2026 12:06pm GMT

The Drop Times: Open-Source Dependency Stewardship Continues After Adoption

Open-source code may remain available while the services, organisations, licences, and support arrangements around it change. Drupal delivery teams need accurate dependency records and workable continuity plans throughout the software's operational life.

06 Aug 2026 11:17am GMT

The Drop Times: EU Open Source Strategy Backs Public Code With Procurement and Maintenance Measures

The European Commission wants public bodies to become stronger users and contributors to open source, supported by fairer procurement, maintenance funding, security measures and long-term stewardship.

06 Aug 2026 7:59am GMT