CKEditor's company blog covers its rich-text editors, real-time collaboration, bundle size, pricing, and licensing.
HN commenters recommend CKEditor as a good WYSIWYG editor compared with TinyMCE, though some note license fees.
Here are a few quick, random things I noticed after looking through the PDF.
The emphasis on documentation is great. We need more of this.
You say that the "hint text" in the various form fields should disappear when
the field has focus. I actually find it much easier to use when the text gets
lighter but doesn't disappear until the user has started to type. I usually
navigate forms by tabbing through the fields, and I hit tab as soon as I'm done
with one field, which means that by the time my eyes get down to the next field
the hit text would be gone. The jQuery In-Field Labels plugin is a great way
to make it a little bit more usable: http://fuelyourcoding.com/scripts/infield/
I'm assuming that users create groups. When two users inevitably create
similar groups, is there any way to merge them?
Do you really need a separate "add link" button for each reagent? Why not just
show the link field and clearly mark it as optional, so someone doesn't have to
click many times if they have a bunch of reagents with links?
You mentioned videos for steps. Are you thinking people will upload them? If
so, that's tricky. What formats do you accept, do you have the space/bandwidth
to host them, etc? Or are you thinking that people will upload them to
YouTube/Vimeo/etc and paste the link? If so, are they embedded or do users
need to go to the video page to view it?
The requirements for the step editor seem awfully specific. I'd suggest taking
a look at the available editors…
A CKEditor 5 team member here. Thanks a lot for such an in-depth analysis, the article is a great read and we truly appreciate being a contender there.
As for the existing implementations of CKEditor 5 with real-time collaboration, I'm afraid since the collaborative editor is usually a component of a larger platform (publishing, e-learning, CMS, intranet, documentation management system etc.) it'd be difficult to find something like a publicly available real-life use case demo of it. Without much effort, you can check out the real-time collaborative editing demos (https://ckeditor.com/collaboration/real-time-collaborative-editing/demo/?active-demo=collaboration) that we have on our website.
A while ago we started building our own internal implementation of a collaborative document management system using CKEditor 5 and features such as real-time collaboration with track changes (something like Google Docs) for our own needs - hopefully, once we polish it a bit, we will be able to release it. We are working on publishing a few case studies with existing customers, too.
As for offline collaboration, our current solution switches the editor to read-only when you e.g. lose connectivity, and then the editing mode is back on when you reconnect, along with the changes that were done in the meantime by other users when you were offline. The platform is ready to fully support "offline" writing. We tested some more complex scenarios with one of the users being offline - and it…
We have selected CKEditor 5 for our SaaS application for the following reasons:
* We need to implement a custom user interface and CKEditor 5 makes this easy. Its modular nature enables us to build a custom "headless" bundle using Webpack. Keystroke handling is currently tied to the CKEditor 5 user interface, though, which is problematic as you don't want to reimplement what the Enter key does when editing, say, lists or block quotes. The team is actively looking into this issue, though, and it is possible to use a custom user interface while still benefiting from CKEditor's keystroke handling using a hack I documented here[1].
* The output format is (very clean) HTML. If we ever change our implementation to use another rich text editor, we don't want to write a server-side migrator moving user content from one editor format to another. Also, HTML is the output format we're looking to consume.
* Unlike most other rich text editors, CKEditor 5 will likely support pasting from Word (and possibly Excel) in the future[2]. Our end users are likely to copy content from Word and Excel (after all, we're creating "Excel for apps"). Handling this well is notoriously difficult -- here's the CKEditor 4 implementation[3]. Where TinyMCE makes this a proprietary add-on[4], CKSource will likely make this part of the open source version of CKEditor 5[5].
* When CKEditor 5 matures, CKSource will offer commercial support.
* We're interested in adding collaborative editing to our SaaS…
We have in mind the "block-based editor" or "content builder" solution you're talking about. This could be relatively easily created having CKEditor as its base. This means that CKEditor may not be the ready to use way for it but it provides a good framework to develop such solution.
For example, its powerful widgets system [1], which can be used to handle "blocks", providing at the same time an excellent user experience.
At the same time, it would avoid issues that we see with the current solutions or prototypes available out there. For example, paragraphs would not be treated as separate blocks, like a video embed, but instead, they would be part of the content flow. This would allow for easy selection of multiple paragraphs. This would also avoid issues with large selection copy-and-paste.
What is needed here, is work. And this work much probably would go beyond the CKEditor scope, because it needs some level of integration with the application. It needs the development of such "blocks, and control of its behavior. All this on top of a dedicated UI solution, maybe in some senses similar to what we have with Letter [2].
There are hundreds of different use cases for editors. Our intent with CKEditor was designing a decent framework for others to build on top of it. It would be great to see the community getting together to bring such solutions to life. We're more than happy to help.
[1] https://docs.ckeditor.com/ckeditor4/docs/#!/guide/dev_widgets
[2]…
Great timing, we were just looking for a new editor for our project. Since there are so many choices, here's a list of everything mentioned in this post.
Trix - https://github.com/basecamp/trix - demo here: http://trix-editor.org/ by basecamp and used in v3, handles files/images well
Squire - https://github.com/neilj/Squire - used in FastMail webmail, better for text than images
ProseMirror - http://prosemirror.net/ - not great with images
Scribe - https://github.com/guardian/scribe - by the Guardian team
CKEditor - http://ckeditor.com/ - solid and very customizable, lots of plugins, a little dated in look/feel
Quill - http://quilljs.com/
Summernote - http://summernote.org/
wysihtml - http://wysihtml.com/
Etherpad - http://etherpad.org/ - collaborative realtime editing
TinyMCE - http://www.tinymce.com/ - older editor but still good
Textbox.IO - https://textbox.io/ - new from the owners of tinymce project
Froala - https://www.froala.com/wysiwyg-editor - solid editor, newer features like drag/drop images, v2 RC3 just released
Redactor - http://imperavi.com/redactor/ - we used this in production but quality has gone down, v2 is half the functionality at 3x the price, not recommended anymore
I am curious about this argument - I think CKEditor 5 made a similar one in this epic blog post about how they implemented real-time collaboration (https://ckeditor.com/blog/Lessons-learned-from-creating-a-rich-text-editor-with-real-time-collaboration/). We're using Quill.js with ShareDB, which supports JSON structures (which is great, because for us we often have documents with several rich text fields, and other complex structures). So far we've been able to do anything we wanted with Quill, and I've never felt limited by the data structures we have available... (We also do all kinds of other stuff with ShareDB JSON).
I guess one reason you could need custom types would be to ensure consistency - if two keys depend on each other, and one user sets one key, and the other user sets another key, and the document is now invalid, you'd need the engine to be able to reconcile at a higher level?