neos / neos-ui

Neos CMS UI written in ReactJS with Immutable data structures.
GNU General Public License v3.0
266 stars 135 forks source link

Upgrade CKEditor5 to v37 #2836

Open paxuclus opened 4 years ago

paxuclus commented 4 years ago

Description

Currently v16 is in use. As of creating this issue, https://github.com/ckeditor/ckeditor5/releases/tag/v23.1.0 is the latest release.

paxuclus commented 4 years ago

If nobody else wants to take care of this I might be able to work on this in december 🤞

markusguenther commented 4 years ago

@nlx-lars You are welcome to provide a PR ❤️

mhsdesign commented 1 year ago

Was just reminded again that we neeeeeed to update ^^

Ckeditor is currently moving to typescript (instead of jsdocs) so we should definitely wait for 37 (maybe some breakiness will occur ^^)

i know that v22 is pretty breaky for external plugins as the upcast and downcast callback is slightly changed

currently v16

        conversion.for( 'downcast' ).elementToElement( {
            model: 'placeholder',
            view: ( modelItem, viewWriter ) => createPlaceholderView( modelItem, viewWriter );
        } );

starting with v22 see https://github.com/ckeditor/ckeditor5/releases/tag/v22.0.0

        conversion.for( 'downcast' ).elementToElement( {
            model: 'placeholder',
            view: ( modelItem, { writer: viewWriter } ) => createPlaceholderView( modelItem, viewWriter );
        } );

@reinmar wrote in slack

There were quite many releases since 16.0.0 so it’s not going to be automatic for sure. I also don’t know which parts of API you rely on so it’s hard for me to assess the size of the scope.

Some resources that may help are

In general, we didn’t have changes that would make migrating hard for a long long time. We regularly ship some smaller breaking changes, but always (at least for the last 2-3 years) with easy upgrade paths.

I think our biggest problem will be plugins (as how can we support two apis at the same time? Wed need to expose the currently used ckeditor version so people can based on their enviroment call the correct api. This is a bit cumbersome for plugin authors but the only way i see. It sure will be a breaking change so 9.0 it is.

Another funny thing to see will be wether our manual extracted css will hold up, or if we need the correct build setup: see

mhsdesign commented 1 year ago

also we can get rid of:

https://github.com/neos/neos-ui/blob/a0683ed157699042aa269ea0819977efafb5be46/packages/neos-ui-ckeditor5-bindings/src/ckEditorApi.js#L7

and we should also try to fix: https://github.com/neos/neos-ui/issues/3223