Drupal 11 preparedness

Created on 7 August 2024, 5 months ago

Problem/Motivation

Drupal 11 is out.
jQuery 3 is replaced with jQuery 4.

Bootstrap 3.4.x is currently not compatible with jQuery 4.

Option going forward is to fork twbs/bootstrap and upgrade it to support jQuery 4 then tag a new release of bootstrap and co-ordinate this with the wet-boew folks so that we get a jQuery 4 compatible version of wet-boew.

#3428283-17: Automated Drupal 11 compatibility fixes for bootstrap

Proposed resolution

See issue summary

Remaining tasks

See issue summary

User interface changes

TBD

API changes

Many

Data model changes

TBD

🌱 Plan
Status

Active

Version

5.2

Component

Code

Created by

🇨🇦Canada joseph.olstad

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

  • Issue created by @joseph.olstad
  • 🇨🇦Canada joseph.olstad

    Working on a plan to fork bootstrap 3.4.x and provide a jQuery 4 compatible version.

  • 🇨🇦Canada joseph.olstad

    I've got bootstrap 3 functioning on Drupal 11.0.3

    Instructions and illustrations here:

    #3428283-38: Automated Drupal 11 compatibility fixes for bootstrap

    Next step is to make it work with wet-boew.

    This might eventually require forking wet-boew just as I have forked bootstrap.

  • 🇨🇦Canada Liam Morland Ontario, CA 🇨🇦

    It would be nice to be able to run upgrade_status. I tried to do that in #3472183: Enable GitLab CI automated testing but if you look at the pipelines in the merge request, you can see that it does not run properly.

  • 🇨🇦Canada smulvih2 Canada 🍁

    I think we should consider removing CKE4 from our D11 upgrade. I'm noticing some funny JS console errors now, ckeditor.js is trying to load two files that don't exist (config.js, styles.js). This doesn't seem to impact functionality. I'm not able to find an issue for this on the drupal/ckeditor issue queue , but it's also not a supported module anymore.

    The latest release of drupal/ckeditor is 1.0.2, and it loads ckeditor/ckeditor4 4.18.0. ckeditor/ckeditor4 has an XSS vulnerability for < 4.24.0-lts. If your site doesn't expose an editor to the public then it's probably not as big of a risk. See related issue from drupal/ckeditor talking about this issue in more detail.

  • Assigned to joseph.olstad
  • 🇨🇦Canada joseph.olstad
     ╰❯ $ drush upgrade_status:analyze wxt_library
     [notice] Processing /var/www/d11/web/modules/contrib/wxt_library.
    
    ================================================================================
    WxT Library,  8.x-8.3
    Scanned on mer 13/11/2024 - 17:48
    
    FILE: web/modules/contrib/wxt_library/wxt_library.info.yml
    
    STATUS         LINE                           MESSAGE                           
    --------------------------------------------------------------------------------
    Check manually 4    Value of core_version_requirement: ^9 || ^10 is not         
                        compatible with the next major version of Drupal core. See  
                        https://drupal.org/node/3070687.                            
    --------------------------------------------------------------------------------
    
    FILE: web/modules/contrib/wxt_library/composer.json
    
    STATUS         LINE                           MESSAGE                           
    --------------------------------------------------------------------------------
    Check manually 1    The drupal/core requirement is not compatible with the next 
                        major version of Drupal. Either remove it or update it to be
                        compatible. See                                             
                        https://www.drupal.org/docs/develop/using-composer/add-a-com
                        poserjson-file#core-compatibility.                          
    --------------------------------------------------------------------------------
    
    

    now for wxt_bootstrap:

     ╰❯ $ vendor/drush/drush/drush upgrade_status:analyze wxt_bootstrap
     [notice] Processing /var/www/d11/web/themes/contrib/wxt_bootstrap.
    
    ================================================================================
    WxT Bootstrap, --
    Scanned on mer 13/11/2024 - 17:51
    
    FILE: web//var/www/d11/vendor/symfony/deprecation-contracts/function.php
    
    STATUS         LINE                           MESSAGE                           
    --------------------------------------------------------------------------------
    Check manually 25   Since twig/twig 3.9: Using the internal                     
                        "twig_escape_filter_is_safe" function is deprecated.        
    --------------------------------------------------------------------------------
    
    FILE:
    web/themes/contrib/wxt_bootstrap/templates/block/block--block-content--search.ht
    ml.twig
    
    STATUS         LINE                           MESSAGE                           
    --------------------------------------------------------------------------------
    Check manually 72   Twig template                                               
                        themes/contrib/wxt_bootstrap/templates/block/block--block-co
                        ntent--search.html.twig contains a syntax error and cannot  
                        be parsed.                                                  
    --------------------------------------------------------------------------------
    
    FILE: web/themes/contrib/wxt_bootstrap/templates/file/file-link.html.twig
    
    STATUS         LINE                           MESSAGE                           
    --------------------------------------------------------------------------------
    Ignore         18   Since twig/twig 3.12: Twig Filter "spaceless" is deprecated.
                        See https://drupal.org/node/3071078.                        
    --------------------------------------------------------------------------------
    
    FILE:
    web/themes/contrib/wxt_bootstrap/templates/input/input--button--split.html.twig
    
    STATUS         LINE                           MESSAGE                           
    --------------------------------------------------------------------------------
    Ignore         26   Since twig/twig 3.12: Twig Filter "spaceless" is deprecated.
                        See https://drupal.org/node/3071078.                        
    --------------------------------------------------------------------------------
    
    FILE:
    web/themes/contrib/wxt_bootstrap/templates/input/input--button--submit.html.twig
    
    STATUS         LINE                           MESSAGE                           
    --------------------------------------------------------------------------------
    Ignore         25   Since twig/twig 3.12: Twig Filter "spaceless" is deprecated.
                        See https://drupal.org/node/3071078.                        
    --------------------------------------------------------------------------------
    
    FILE: web/themes/contrib/wxt_bootstrap/templates/input/input--button.html.twig
    
    STATUS         LINE                           MESSAGE                           
    --------------------------------------------------------------------------------
    Ignore         25   Since twig/twig 3.12: Twig Filter "spaceless" is deprecated.
                        See https://drupal.org/node/3071078.                        
    --------------------------------------------------------------------------------
    
    FILE:
    web/themes/contrib/wxt_bootstrap/templates/input/input--form-control.html.twig
    
    STATUS         LINE                           MESSAGE                           
    --------------------------------------------------------------------------------
    Ignore         24   Since twig/twig 3.12: Twig Filter "spaceless" is deprecated.
                        See https://drupal.org/node/3071078.                        
    --------------------------------------------------------------------------------
    
    FILE: web/themes/contrib/wxt_bootstrap/templates/input/input.html.twig
    
    STATUS         LINE                           MESSAGE                           
    --------------------------------------------------------------------------------
    Ignore         22   Since twig/twig 3.12: Twig Filter "spaceless" is deprecated.
                        See https://drupal.org/node/3071078.                        
    --------------------------------------------------------------------------------
    
    FILE: web/themes/contrib/wxt_bootstrap/templates/input/select.html.twig
    
    STATUS         LINE                           MESSAGE                           
    --------------------------------------------------------------------------------
    Ignore         18   Since twig/twig 3.12: Twig Filter "spaceless" is deprecated.
                        See https://drupal.org/node/3071078.                        
    --------------------------------------------------------------------------------
    
    FILE: web/themes/contrib/wxt_bootstrap/templates/system/page.html.twig
    
    STATUS         LINE                           MESSAGE                           
    --------------------------------------------------------------------------------
    Check manually 138  Twig template                                               
                        themes/contrib/wxt_bootstrap/templates/system/page.html.twig
                        contains a syntax error and cannot be parsed.               
    --------------------------------------------------------------------------------
    
    FILE: web/themes/contrib/wxt_bootstrap/wxt_bootstrap.info.yml
    
    STATUS         LINE                           MESSAGE                           
    --------------------------------------------------------------------------------
    Check manually 4    Value of core_version_requirement: ^9 || ^10 is not         
                        compatible with the next major version of Drupal core. See  
                        https://drupal.org/node/3070687.                            
    --------------------------------------------------------------------------------
    
    FILE: web/themes/contrib/wxt_bootstrap/composer.json
    
    STATUS         LINE                           MESSAGE                           
    --------------------------------------------------------------------------------
    Check manually 1    The drupal/core requirement is not compatible with the next 
                        major version of Drupal. Either remove it or update it to be
                        compatible. See                                             
                        https://www.drupal.org/docs/develop/using-composer/add-a-com
                        poserjson-file#core-compatibility.                          
    --------------------------------------------------------------------------------
    
    
    
  • 🇨🇦Canada joseph.olstad

    First the good news!

    I was able to frankenstein a build of Drupal 11 that included the wet-boew libraries
    upgraded wxt_bootstrap and wxt_library for Drupal 11 compatibility, what is fairly impressive is that things are mostly working in this state.

    I have some very lightly tested patches for wxt_library / wxt_bootstrap , there are likely regressions that I haven't caught yet.

    The somewhat expected challenge remaining is the fact that wet-boew includes Modernizr and has some jQuery v4 compatibility challenges to work out. With that said, it's all looking fairly good with the upgraded bootstrap library.

    The version of bootstrap being used is straight off the D11 merge request commit following the instructions mentioned here:
    📌 Automated Drupal 11 compatibility fixes for bootstrap Needs review

  • 🇨🇦Canada joseph.olstad

    Screenshot of this progress:

  • 🇨🇦Canada joseph.olstad

    I've forked wet-boew and working on jQuery 4 compatibility fixes, I'll be testing local builds before pushing it up for review to the wet-boew folks.

  • 🇨🇦Canada smulvih2 Canada 🍁

    Great news @joseph, this is a major piece to the D11 upgrade!

  • 🇨🇦Canada joseph.olstad

    More good news, I pushed a PR up to wet-boew that resolves the jQuery 4 compatibility issues.

    The PR only resolves the jQuery 4 compatibility issues noticed when using Drupal 11 / wxt_library /wxt_bootstrap as described above, but also has passed the wet-boew lint and automated testing.

    Screenshots in the PR of before/after.

    https://github.com/wet-boew/wet-boew/pull/9831

  • 🇨🇦Canada joseph.olstad

    @smulvih2, we're basically at the point now where we need a wxt 6 branch and we need to think about pushing up/reviewing the wxt_library and wxt_bootstrap related changes, review and test those and then get started on the wxt custom module upgrades from 10 to 11.

    Meanwhile, I'll continue working towards a tagged release of the https://drupal.org/project/bootstrap build which is fairly close as it's in 8.x-3.x dev right now.

  • 🇨🇦Canada joseph.olstad

    The wet-boew PR for jQuery 4 compatibility has been pre-approved by Garneauma and is undergoing thorough testing which I suspect will pass.

  • 🇨🇦Canada joseph.olstad

    w00t!

    WET-BOEW merged our pull request.

    The next release of WET-BOEW will be compatible with jQuery 4 and thus compatible with Drupal 11!

    https://github.com/wet-boew/wet-boew/commits/master/

    Meanwhile over 1200 new installs of bootstrap 3.33 which includes the Drupal 11 in only 5 days of statistics being collected. Zero complaints from any of those.

  • 🇨🇦Canada smulvih2 Canada 🍁

    Awesome, this gets us one step closer to to D11!

  • 🇨🇦Canada joseph.olstad

    @smulvih2

    FYI, there's a new module that replaces embed_block

    https://www.drupal.org/project/ckeditor_insert_blocks

    I believe you had done some work on this.

    The embed_block maintainer has not taken much action for a few years now and ckeditor_insert_blocks is designed for use with ckeditor5

  • 🇨🇦Canada joseph.olstad

    For the D11 upgrade, it will have to target 11.1 as this is the expected upgrade path from 10.4

    Today in the #d11readiness slack channel , been discussing the fontawesome D11 upgrade with one of their maintainers. Expect it to be ready this week, possibly tonight.

    Let's take inventory of all the modules for wxt , hopefully everything else is ready. Some maintainers are forced a contrib major version change but often it's really minor.

  • 🇨🇦Canada joseph.olstad

    wet-boew v4.0.83 was tagged and released and is compatible with jQuery 4 which means it is now compatible with Drupal 11.

    bootstrap 3.34 (over 5000 installs after only a few weeks)
    with
    wet-boew v4.0.83

    are compatible with Drupal 10.4.0 and also Drupal 11.1.0+

    Meanwhile, views_bootstrap has a dev release available which is compatible with Drupal 11. I will ping the maintainer to ask for a tagged release. With that said, we can start with this: https://www.drupal.org/project/views_bootstrap/releases/5.3.x-dev

  • 🇨🇦Canada smulvih2 Canada 🍁

    @joseph I'm working on WxT 6.1.x now and using your drupal/bootstrap ^5.0, great work on this!

    Running into another issue, with views_bootstrap . To keep on Bootstrap 3, we need to use the 5.3.x branch, which doesn't support D11 (yet). Could use your help with this, especially since you are a maintainer for drupal/bootstrap.

  • 🇨🇦Canada joseph.olstad

    @smulvih2, ah, no, bootstrap 5 is not compatible with bootstrap 3, use drupal/bootstrap: ^3.34

    The maintainer from Bario managed to take over the 5.x branch which has nothing to do with the version we need.

    This is the release we need:

    https://www.drupal.org/project/bootstrap/releases/8.x-3.34

    as for views_bootstrap

    use the dev release, it is Drupal 11 compatible:

    composer require 'drupal/views_bootstrap:5.3.x-dev@dev'

  • 🇨🇦Canada joseph.olstad

    @smulvih2 , reminder if you have not done so already. For Drupal 11 compatibility please make sure to apply the patch to wxt_library

    https://www.drupal.org/files/issues/2024-11-13/wxt_library-3466676-14.patch

    and the patch to wxt_bootstrap

    https://www.drupal.org/files/issues/2024-11-13/wxt_bootstrap-3466676-14....

  • 🇨🇦Canada smulvih2 Canada 🍁

    Here is the list of all module in WxT that do not have a D11 compatible version, even in their respective dev branches:

    • drupal/button_link
    • drupal/embed
    • drupal/entity_block
    • drupal/entity_browser_block
    • drupal/entity_embed
    • drupal/fontawesome
    • drupal/layout_builder_st
    • drupal/layout_library
    • drupal/linkit
    • drupal/toc_api

    Proposing to remove the following modules:

    • drupal/webform_migrate (not being used by other modules, should be required in root composer file if needed on a project)
    • drupal/block_content_permissions (Apparently this module's functionality is now in core, as per https://www.drupal.org/project/block_content_permissions/issues/3428999#comment-15829451 📌 Automated Drupal 11 compatibility fixes for block_content_permissions Needs review )
    • Any CKE4-specific module(s) (TBD)
  • 🇨🇦Canada smulvih2 Canada 🍁

    Was able to get WxT composer update working with core 11.1.0. This includes updating all dependencies and replacing/removing patches as needed. Please find below a snapshot of my local composer.json overrides that were needed in order to get this working. These changes have been rolled into the 6.1.x branch so other can install. Next will be fixing some errors in our custom module space.

    Local composer.json changes:

    "patches": {
                "drupal/page_manager": {
                    "Enter drupal/page_manager patch #2752227 description here": "https://www.drupal.org/files/issues/2024-08-22/2752227-50.patch"
                },
                "drupal/bootstrap_layouts": {
                    "3481450": "https://www.drupal.org/files/issues/2025-01-06/3481450-12.patch"
                },
                "drupal/menu_breadcrumb": {
                    "3485520": "https://www.drupal.org/files/issues/2025-01-06/3485520-8.patch"
                }
            },
            "patches-ignore": {
                "drupalwxt/wxt": {
                    "drupal/core": {
                        "3177182 - Book title in breadcrumb not translated": "https://www.drupal.org/files/issues/2020-10-20/book-breadcrumb_title_xlate-3177182-3.patch",
                        "Enter drupal/core patch #2546212 description here": "https://www.drupal.org/files/issues/2020-11-07/2546212-158.patch",
                        "Enter drupal/core patch #2938129 description here": "https://www.drupal.org/files/issues/2024-01-21/drupal-PageTitle_block-2938129-42.patch",
                        "Enter drupal/core patch #3173808 description here": "https://www.drupal.org/files/issues/2024-01-14/3173808-26.patch",
                        "Enter drupal/core patch #3207813 description here": "https://www.drupal.org/files/issues/2021-04-08/3207813-2.patch",
                        "Enter drupal/core patch #3236799 description here": "https://www.drupal.org/files/issues/2021-12-22/drupal-core-9.2.x-li-role-separator-tag-linkGenerator-3236799-11.patch",
                        "3150294 - New translations for moderated nodes are not created in the initial workflow state": "https://www.drupal.org/files/issues/2024-01-03/3150294-128.patch"
                    },
                    "drupal/bootstrap": {
                        "3249470 - Error generated when importing translation": "https://www.drupal.org/files/issues/2021-11-17/3249470-3.patch"
                    },
                    "drupal/page_manager": {
                        "Enter drupal/page_manager patch #2710169 description here": "https://www.drupal.org/files/issues/page_manager-block-css-attributes-9.patch",
                        "Enter drupal/page_manager patch #2752227 description here": "https://www.drupal.org/files/issues/2021-04-14/2752227-47.patch"
                    },
                    "drupal/linkit": {
                        "Enter drupal/linkit patch #3457958 description here": "https://www.drupal.org/files/issues/2024-06-28/linkit--testing-static-methods--3457958.patch",
                        "Detect and strip base URL from pasted URLs to increase matching hits": "https://www.drupal.org/files/issues/2023-11-02/linkit6x-3078075-77.patch"
                    }
                }
            }
    
  • 🇨🇦Canada smulvih2 Canada 🍁

    Fixed one issue with the wxt_ext_layout module and now I have successfully upgraded a vanilla WxT 5.3.x to 6.1.x on core 11.1.0. This is just the first iteration to get the site functional, although there are a few issues I notice immediately, which I will work on next. All changes pushed to drupalwxt/wxt 6.1.x.

  • 🇨🇦Canada smulvih2 Canada 🍁

    My MR for drupal/entity_block was just merged and now there is a D11 version available, 2.0.x. Scratching this one off the list, only 9 remaining.

  • 🇨🇦Canada smulvih2 Canada 🍁

    Will need to prepare 5.4.x to unsinstall the following modules:

    • block_content_permissions
    • ckeditor
Production build 0.71.5 2024