Markdown provides a great ability to format messages and write structured documents using plain text format.

Zulip uses two different markdown processors: for the backend, it is Python-Markdown and for the frontend, it is marked.js.

While the backend markdown processor is highly extensible but the current frontend markdown processor doesn’t allow the same. Moreover, it is not upgradeable because of the Zulip customisations.

The goals of this project are:

  1. Refactor the frontend-markdown processor with CommonMark parser.
  2. Make the same extensible for Zulip’s custom features like @-mentions.

I’ll take the reference from commonmark.js to write the CommonMark parser for our frontend-markdown processor. And to make it extensible, I'll use the upstream marked.js.

In parallel to this, I’ll focus on works in the markdown area. Integrating them with the Zulip will help to increase the overall users’ experience. The list of them are:

  1. Add support for link shortener
  2. Re-enable backslash escape inline pattern
  3. Add support for online mentions
  4. Add support for importing avatar from GitHub on account creation





  • Rohitt Vashishtha