Progress on the Drupal8 upgrade

2020-04-05 16:25
Written by

Back in September 2019, we had announced a plan to upgrade the content management system (CMS) running the website, as well as plans to make available in many languages. Today I'm happy to announce that we have reached a major milestone: most of the static content, user logins, blogs and many CiviCRM forms are now being served from Drupal8.

Before you login to see the shiny new toys available: please read this announcement first! We have done good progress, we are on track, but we are not done yet. A lot of the work is about getting moving to a more "modern" CMS, doing a lot of cleanup and otherwise providing feature-parity (or at least, we hope that the upgrade is not too disruptive). At this point, we are not asking people to actively test, but please report issues (in the marketing/civicrm-website issue queue) if you think that something important is broken.

What's new?

Contact Dashboard: If you click on the "Login" button in the top-right corner of the screen, we now default to displaying the CiviCRM Contact Dashboard. Tasks such as "Add blog post" or "Add new job posting" are now under the "Participate" menu (which may not be very obvious for now, but we will improve it eventually). Using the CiviCRM contact dashboard (instead of the Drupal user profiles) is part of the decision to leverage and promote CivICRM features where possible.

Blogs with Gutenberg: The blog now uses the Gutenberg content editor. People may have strong opinions about it, but we found that Gutenberg provides a great experience for content editing on Drupal. It addresses many of the criticisms about Drupal's user interface. We really wanted to simplify the interface, avoid having dozens of fields in a node just to comply with specific visuals. We wanted to avoid complex block configurations and panels. Finally, we also wanted to remove some hardcoded pages, such as the download page (which used to require changing PHP/template files in order to update the content, and now the page is a simple Gutenberg page that includes a Drupal block for the download links).


CiviCRM's user interface has been available in over 25 languages for a long time. I would argue that CiviCRM's powerful language features offers key advantages over other CRMs. Very few CRMs understand translation correctly, or can handle the complexities of countries or regions with many official languages, not to mention international organizations.

That said, while many techies understand English, having content in their own language is often a key factor for decisions makers and end-users. Many CiviCRM partners have highlighted that the decision to adopt or change a CRM is no longer a decision taken only by techies, but now increasingly a decision under scrutiny from their board of directors. In many regions, having a website and documentation available in their language can be a legal requirement for many organizations.

We have built on top of various previous community initiatives carried out in the past. We believe that by adding language support on the website, we will provide a more consistent and robust experience for all languages, and will make it easier to add support for new languages. More importantly, we hope it will reduce the barrier to entry for anyone who is not fluent in English.

For a glimpse of what it looks like, you can read about CiviCRM in Catalan or in French, or see a work-in-progress home page in French (note: this is not a design proposal for all languages, for now each language can create their own home page). Ah, and note how the home page in French is just a single Gutenberg node, with views/blocks inside it.

It will also be possible to have blogs in different languages. They will display language-specific content, if any, then any translations, if available, and finally they will fallback to English. So for example, the French-language blog may have blog posts specific to the French-speaking community, mixed with CiviCRM release announcements that have been translated, and will also display English blog posts that have not been translated. For now we encourage translators to focusing on translating static content (front page, "about CiviCRM", etc), rather than translating content that is only relevant for a short period of time.

CiviCRM forms (such as donation forms or event forms) will also eventually be available in other languages. We aim to build on top of Aidan's improvement to CiviCRM core which makes it possible to use different languages without enabling multilingual (read more), and we hope to improve core to implement something based on Bjoern's l10nx (i.e. a new mode for translations of content, such as contribution page titles or descriptions).

If you wish to get involved in translating the website, there is more information in the website translation wiki page.

A few technical notes

As mentioned earlier, most of the pages are being served from Drupal8, but not all. Notably, the English front page is still being served from Drupal7, as are a few of the "views" (listings), such as the Find and Expert page, and the extension releases.

We have been running two sites since November 2019. The two sites have the same theme (both Bootstrap-based, so it was easy to port the theme from Drupal7 to Drupal8). You can see whether the page is being served from Drupal7 or Drupal8 by looking at the page footer:

Technically, this was made possible using a proxy (nginx) that was sending specific pages to Drupal8, as we completed various sections. Since we knew that this was going to a be a long journey, we wanted to be sure that we could deploy features as soon as they were ready, to avoid feature-freezing the website for over six months. That being said, while it took a long time, we did not spend a lot of hours on the upgrade itself. We took a more minimalist approach in order to stay within budget (under $2000 so far, funded by the Core Team's regular budget, plus some pro-bono work).

Next steps

We still have to finish migrating important sections, such as the "experts" views/listings, case studies, events, extension management, as well as some more complex static-content pages. You can read more about it in the website tech revamp wiki page.

Once that is done, we can shift our focus back to content, design and adding features to the website (ex: improving the access-control features on CiviCRM itself, so that regional communities can more easily collaborate on


Many people are contributing to the upgrade. Josh is doing most of the real work, making sure the end result and content make sense. Nic W has also been a long-time website contributor and supporter (and instigator of the 2019 translation survey). Francesc and Usha have helped beta-test translation. Luciano and Alejandro have been long-time instigators to have available in other languages.

Of course, using CiviCRM and Drupal8 has been possible only because many volunteers, partners and the Core Team are investing a lot of time to make it happen (and there's still work to do!). Hat-tip to the CiviCRM Entity folks (Mark, Karin, David S, Luke, Matt G, and others) for the Drupal8 Views integration, as well as to helpful support from the folks in the Drupal mattermost channel. Finally, thanks to someone (I think?) who went to a CiviCamp Amsterdam to demo Gutenberg on Drupal, and somehow that demo made its way to convince us to stay on Drupal and to adopt Gutenberg (if someone knows the story, please leave a comment!).


Glad to learn about the progress on Drupal 8 update. Regarding Gutenberg, that was a longer discussion between and myself. Glad to be able to bring value to Civi on my first Civi event. Thanks!