Why we use Outline

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)

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

That was an appetizer about a short survey on live collaborative editors, let’s dive into the survey :memo: about the currently available technologies.

1 „Gefällt mir“

Missing collab features but nice IO for markdown based content: https://typora.io/

Unfortunately it’s also not FLOSS, like Outline :’(