We would like to announce that the third developer preview of CKEditor 5 has recently been tagged as version v0.3.0.
While the second developer preview (v0.2.0) was mainly focused on project cleanup and refactoring, iteration 3 brought new important features and resulted in closing over 100 tickets.
New Features
Iteration 3 introduces two major features that are paramount to every WYSIWYG editor: lists and links.
The List Feature
It is the biggest feature so far and it was a great test for the CKEditor 5 editing engine. We are very happy with the result, because in a single iteration we were able to achieve something that would not have been possible in the past.
The most important problem that we had to deal with was how to represent lists in the data model. There were two options:
- Like in HTML — as a nested
<ul/ol>
and<li>
structure. - As a flat structure of
<listItem>
elements (where the nesting level is defined by an attribute).
After a very long discussion we decided to go with the second approach. Having lists normalised to a flat structure is convenient for implementing operations on them, however, very demanding for conversion to the view (virtual DOM). It was a tough test for the converters and we are happy that they passed it. List support is one of the trickiest editing feature which you can imagine, so — with such an experience — we are optimistic about implementing more features in the future.
You can see the result below. Mind, for example, cases like automatic merging (on delete) subsequent list items into one list or integration with the headings feature. Thanks to how the lists are represented in the data model, we achieved those results automatically, without touching the code of other features.
Note: Nested lists are not fully supported yet. Most of the code is in place, but we will be working on stability issues in the next iteration.
Package: https://github.com/ckeditor/ckeditor5-list
The Link Feature
No web content can exist without links so introducing the link feature at an early stage was natural for us. Comparing to the lists feature its implementation was simple, but we had to find answers for many UX/UI related issues (starting point).
Package: https://github.com/ckeditor/ckeditor5-link
Other Changes
As usual, we worked on countless bigger and smaller changes, among which these deserve mentioning the most:
- We implemented a GitHub flavored Markdown data processor. It is now possible to get data in HTML and Markdown formats.
- We worked on compatibility issues with Safari and Firefox and checked the status of things in Edge and IE11. The editor now works in Chrome, Opera and Safari out of the box, and in Firefox after enabling the
selectionchange
event. - We added tooltips to buttons.
- We implemented a rename operation which will allow to resolve conflicting changes such as applying headings or lists in a more graceful way.
- And we would not be ourselves if we have not carefully discussed some architectural matters.
Sample
We updated the basic CKEditor 5 sample that you can play with. Check out the developer preview of CKEditor 5 (version 0.3.0) on the CKEditor 5 GitHub.io page.
What’s Next – Iteration 4
Iterantion 4 has already started. Apart from stabilising the new features, we plan to tackle the image, autoformat and clipboard packages. We also plan to switch to Karma and Webpack for the testing environment and we are going to work on various selection, typing and engine improvements, targeted at stabilising this piece of functionality.
Feel free to ask questions and join the discussion about iteration 4.
Feedback and Collaboration
We are most excited about the project and would love to get some feedback about this early preview.
You can report all general issues in the main CKEditor 5 repository. Specific issues, like those related to the editing engine, should be reported in their respective repositories. Very general ideas and questions can be reported in the design repository.