Skip to content

Research and evaluate editor options against UX and technical requirements

Requirements

Evaluate all the candidate editors to determine the best suited editor for our long term needs. Evaluation criteria as defined here: #231724 (closed)

Category Requirement Definition Evaluation criteria
Technical Maturity How mature is the editor in terms of feature completion (stable API) and duration existence (has it been used and been proven over a period of time) • Who/what type of projects are using it
• Release version looking for API stability
• Feature completeness
• Test suite
• Release changelog
Technical Community We want to ensure that the project is not only worked on by 1 or 2 developers, but that there is healthy activity from the community. Essentialyl we want to avoid a Middleman situation. • How many issues have responses, and rate of response
• How many stale PR/MRs there are (how old, lack of comments)
• Does the project have sponsorship (Corporate or Patreon etc)
• Open to community input in shaping the direction
• Community authored plugins
Technical License The project must have an appropriate open source license for us to be able to embed it in our product • Check licence compatibility
Technical Browser support Our Editor use case requires us to support not only desktop browsers but tablet and mobile form factors as well.

Desktop:
- Match GitLab browser support (last 2 versions of modern browsers, no IE)

Mobile browsers to consider support:
- Chrome Mobile
- Firefox Mobile
- Safari Mobile
• Must work on mobile
Technical Themeability The ability to change the UI to match GitLab design system specifications • Clear separation between presentation and functionality
• Very desirable is theming framework
• Use of SVGs instead of image sprites
Technical Extensibility The ability to extend the functionality without the need for elaborate workarounds/core code customization.

The parser we use to process and render markdown should be extensible
The WYSIWYG editor should allow extending the editing functionalities
• Architectured with extensibility in mind (events etc)
• Well documented API
• Does it have plugin ecosystem
• Text selection/cursor manipulation API
Technical Technology It needs to be compatible with out current tech stack • Either vanilla JS or Vue JS
• No jQuery
Technical Rendering flexibility The ability to customize the rendering of custom template syntax and load partial pieces of content async • Must have the ability to process custom template syntax
• Must have the ability to load content asynchronously
UX Blocked based editing Content consists of separate blocks: paragraphs, headings, images, lists, quotes, etc. Each of them is an independent element in the editor. • Has a block-based editing approach
UX Block modification The ability to edit a block through UI interface once rendered (think table editing, image properties, link editing etc) • Does not have to provide the functionality out of the box, but must allow for it to be creating
UX Block re-arrangement The ability to re-order the blocks on the page • Should have block re-ordering functionality
UX Markdown Shortcuts The ability to type markdown syntaxt in the WYSIWYG editor and have it automatically converted • Provides the functionality as standard with option to extend
• Or, must allow the ability to listen for input and transform input into presentation format

Candidates

Comparison analysis between CKEditor5 and TipTap

#231725 (comment 430630089)

Final Decision

#231725 (comment 435184142)

Edited by Enrique Alcántara