Why we use Outline
So I wanted to write it on a cool editor, but not the usual suspects:
- cryptpad : not MarkDown, kind of buggy on Safari. a plus: it has E2EE. The calc module is based on onlyoffice.
- onlyoffice : compatible with ODT and DOCX but … a mastodon. This is what nextcloud is using.
- LibreOffice Online / Collabora… I don’t know, is there an animal bigger than the mastodon ? then it is that animal.
- etherpad: not natively MD. collab is with OT
- codiMD / HedgeDoc : collab is with OT, not WYSIWYG | code
- (Hackpad) from dropbox, based on etherpad
Nor the fringe one or newcomers
- dokieli : the document editor of Solid. Semantic. Doesn’t have collaboration at all. Not MD.
- peer-pad: Online editor providing collaborative editing in really real-time using CRDTs and IPFS (not WYSIWYG)
- hyperpad: P2P based on scuttlebutt
- Conclave A private and secure real-time collaborative text editor. not WYSIWYG and not maintained anymore.
- caracara : from GEUT LABS. An experimental Dat and automerge based collaborative editor.
- c-markdown-editor: A CRDT based collaborative markdown editor.
- react-md-editor : not WYSIWYG
- CRDT-MD-Editor: React Typescript CRDT based Collaborative Markdown Editor, by Ilyas Toumlilt (INRIA)
- MediaWiki editor real-time collaboration (not ready)
- org-mode
I wanted CRDT inside and WYSIWYG outside
I wanted an editor that could:
- save the content in MarkDown. Even-though AsciiDoc looks interesting too
- completely WYSIWYG (not a preview pane that is not interactive and forces the editor to enter raw MD)
- enable live collaboration
- would use CRDT preferably (and OT if not)
- would be beautiful and easy to use (and to install)
- mobile compatible
- would be interesting to play with and test, so we could possibly integrate it later in our project
- some basic functionalities like: emoji, backlinks, mentions
- and if possible: footnotes and annotations/comments on the text.
- I wanted not only an editor, but also all the workgroup/Wiki features that go around it (accounts, permissions, images, sharing, TOC)
Outline
Outline is offering all the workgroup wrapping i needed, and is based on ProseMirror.
ProseMirror can save in MD, has live collaboration (in OT by default, but can be switched to CRDT with Yjs. it is not clear yet if the version present in Outline is using Yjs or is OT based, seems the dependency is y-prosemirror so it would be a yes).
ProseMirror can have a plugin installed for footnotes, comments and mentions, math, but Online does not include them. The comments plugin provided by The Guardian is not for sure working well with Yjs.
Also the work of integrating Yjs into ProseMirror is still ongoing as there is a refactor work by dmonad
that is not finished yet.
Today I started to adapt the code to use ProseMirror transforms instead. So don’t worry, you will get your transforms I also think it makes sense to support existing plugins. - dmonad, 29 jan 2020
It is not clear if this work is finished or not, but it surely impacts the footnotes and comments plugins mentioned above.
ProseMirror is capable, with plugins or models, to offer much more functionalities and content types embedded in the docs. But Outline stays with the basis features, probably to remain compatible with MD.
The code of the editor in Outline can be integrated as a module into other projects.
I found some other feature-rich editors, notably:
- TipTap is a headless wrapper around proseMirror. It does offer CRDT collab thanks to Yjs, but it does not offer all the workgroup features. TipTap has a very interesting feature of allowing a React component to be instantiated inside the document ! This could be very useful to offer binding of semantic data to placeholders inside documents (like templates)
- Quill with Yjs : not MD
- Milkdown : WYSIWYG markdown Editor, inspired by Typora, built on top of prosemirror and remark. | info
- tui-editor has more features than proseMirror, but no WYSIWYG online collaboration.
- Dante Just another Medium wysiwyg editor clone, built on top of TipTap
- CKEditor 5 : collaboration based on OT and is a premium feature.
- stack-edit from stackoverflow, doesnt have live collab
- Xi editor : apparently had an experience with CRDT but reverted to OT , see here too, and here
- Peritext : by Ink and Switch. based on ProseMirror and automerge. Prototype level. Does not use MD. Should be given a try. It is a baremetal editor, no workgroup wrapping.
- teletype-crdt : String-wise sequence CRDT powering peer-to-peer collaborative editing in Teletype for Atom.
- (overleaf) : latex collaborative editor. SaaS, commercial
That was an appetizer about a short survey on live collaborative editors, let’s dive into the survey about the currently available technologies.