Skip to content
This repository has been archived by the owner on Sep 16, 2019. It is now read-only.

Roadmap to Marp 1.0.0

Yuki Hattori edited this page Mar 29, 2018 · 5 revisions

TL;DR

For meeting user demands, I'm going to try below in order.

  1. Improve performance by using Incremental DOM
  2. Create Marp renderer based on markdown-it (and 1)
  3. Componentize preview (rendering slide) by Polymer
  4. Implement Presentation mode

I wanna split product scopes more clearly.

Roadmap to Marp 1.0.0


First, I must thank to many feedback from Marp user!

Marp had started as my personal study, but I'm still unbelievable that it was spread out rapidly. To be frank, I think the current Marp is still an extension of personal, and it's inflexible.

I has received so many feature requests as the issue of GitHub. To implement received features, I should make spiffy codes.

1. Improvement of preview performance based on Incremental DOM

Live preview is Marp’s key feature. But we have issues of performance in a large markdown. It is caused by re-creating/re-rendering DOM from the beginning to the end. I wanna improve it by an approach of difference creation/rendering based on Incremental DOM (by Google).

The markdown parser using in Marp (markdown-it) can output the parsed AST object. It would be better to implement external renderer to convert from AST to Incremental DOM.

This would split to another repository (like a markdown-it plugin).

➡️ yhatt/markdown-it-incremental-dom

2. Create Marp renderer based on markdown-it

This must do to realize 1.

For converting to HTML/PDF slides, currently Marp have forced to use jQuery to the result of markdown-it rendering. I think this approach is bad way because it will make complex codes by having a responsibility for too wide scope.

I think we should create Marp’s renderer based on markdown-it. By this, the spec of Markdown syntaxes / outputted HTML would become clear. It would mean to be able to create tests / themes more easily.

➡️ @marp-team/marpit

3. Componentize preview (rendering slide) by Polymer

Though I have received request of exporting HTML, Marp has not implemented it because an outputted HTML is depending on Electron for performance (e.g. Experimental Chromium feature like CSS Variables).

For custom CSS theme creator, It is not too friendly to create CSS with Sass pre-compiler while paying attention to Marp's internal logic (e.g. Preview mode). They must surely be more simple.

The technology of Web Components would be resolved issues in above. Especially Polymer Project supports local scope styling and CSS Variables with polyfill. It means to be able to export useful presentation HTML that supports any browser. But not only that, it can componentize Marp's slide preview.

We had mistaken decision about adopting premature Web standard. Currently not all browsers have stable implementation of Web Components. I had seen that using Polymer is a good choice, but it would not become to make Marp available in a wide range of scenes.

By using a skinny framework like Marpit, you can choice a better technology in a partial scene.

4 Implement Presentation mode

Presentation mode in Marp, it's the top of feature requests, has not implemented by too complex dependent between objects. (Main process / Window process / Editor / Preview)

A componentize of rendering slides would be able to develop presentation mode more easily. Developer can focus to its behavior in cross-platform application.


If the above are completed, I think Marp repository could focus to Electron behavior, and could define specs by Spectron E2E test more easily.