Discourse CommonMark migration plans ๐ŸŽŠ ๐ŸŽˆ

I have commenced our migration to markdown-it , all rejoice :confetti_ball:

markdown-it is a compliant CommonMark JavaScript library that is super fast, well maintained and straight forward to extend.

I already have it working on a branch, but so many of our extensions are broken that I do not want to subject everyone on meta to it quite yet.

The plan

Phase 1 - get this running on meta (underway)

The first phase of the migration to the new engine is getting us ready to turn markdown-it on at meta.

To make this feasible and minimize branching I designed it so we can merge in my changes early. Turning on markdown-it requires a hidden site setting and the actual work I am doing is totally segregated from current support.

This means I should be able to merge in my changes next week into the latest branch.

I plan to enable markdown-it at meta once I ported all our extensions and plugins running at meta to the new engine. This is a slow process as a lot of code needs to be re-written to support the new engine.

Expected time frame: 4-8 weeks

Phase 2 (stabalization)

The second phase of the project will be me submitting pull requests to various plugins and stabalizing the new engine. I anticipate running on meta for at least 2-4 weeks before โ€œflicking the switchโ€ and making the new engine default on.

During this phase I will make sure to close all the markdown-it-review bugs. Not touching these bugs till this is live on meta.

Expected time frame: 2-4 weeks

Phase 3 (gutting out old engine)

The third phase of this process will be removing the old engine from core and adding โ€œdeprecationโ€ so plugins that we did not catch can be notified of the change.

Expected time frame: 1-2 weeks

Phase 4 (removing deprecations)

Finally, in the release after next we will remove all the deprecation so we donโ€™t have to carry around dead code.

32 ืœื™ื™ืงื™ื

Also โ€ฆ

AN ENORMOUS thank you goes out to @Vitaly and team for creating the markdown.it engine!!!

15 ืœื™ื™ืงื™ื

Sam, there are CM spec related things, worth to resolve:

  1. quotes syntax (with refer to original)
  2. tables syntax
  3. may beโ€ฆ math formulas embedding syntax/language
6 ืœื™ื™ืงื™ื

I came here by way of the official CommonMark forum, and am morbidly curious: isnโ€™t Discourse a Ruby stack? Why not use the Ruby implementation (https://github.com/gjtorikian/commonmarker) instead of a new JS one? Will the rendering be client-side or server-side?

As well, weโ€™ve implemented an extensions spec at GitHub.

5 ืœื™ื™ืงื™ื

We have always shipped with a js pipeline, cause its a lot more friendly network wise. We have a live preview going.[quote=โ€œgjtorikian, post:4, topic:64234โ€]
Will the rendering be client-side or server-side?
[/quote]We support both, and radical :surfing_man:t5: extensions that need :thinking:

2 ืœื™ื™ืงื™ื

I may pull this out to another topic, but I feel that I need to :hammer_and_wrench: :hamster: some stuff.

Inline multiline quote[quote]that
spans
lines

and blocks

[/quote]Is a terrible format should not be supported

Instead :joy_cat: :man_in_tuxedo:t4:

Inline multiline quote

[quote]
that
spans
lines

and blocks

[/quote]

Is a terrible format should not be supported

At least the new format can not be as unreadable.

6 ืœื™ื™ืงื™ื

A big milestone today, I merged all my work-in-progress into core.

We still ship the old markdown engine as default, but now have a special flag you can set to turn on commonmark.

I plan to turn this on early next week on meta.

13 ืœื™ื™ืงื™ื

Update

  1. Phase 2 has been initiated, we have commenced testing on meta.discourse: CommonMark testing started here!
5 ืœื™ื™ืงื™ื

Short of more documentation and more samples I feel like we are mostly done now.

We even integrated the โ€œcore pluginโ€ test suite into our build process to catch regression going forward.

Old engine is gone, many plugins have been migrated to new engine.

Documentation is out: Developer's guide to Markdown extensions

I think I am closing this one up! :crazy_face: will continue applying more :heart_eyes_cat: over the next few weeks.

6 ืœื™ื™ืงื™ื