-
Notifications
You must be signed in to change notification settings - Fork 252
Proposal to sunset recommonmark in favor of MyST-Parser #221
Comments
Speaking for the Sanic community, this sounds like a reasonable proposal to keep the project moving forward. A few years ago we tried to move our documentation to Markdown because our contributors complained about RST. Recently, we completed an overhaul of the documentation to separate API docs (RST using autosphinx) from the User docs (markdown using Vuepress on our own hosted site). Therefore, from our perspective, this will not be impactful. Thank you to the RTD team for the thoughtful approach, and good luck with MyST! |
The features provided looks fairly nifty, I like the roadmap all in all. What are the migration problems though? |
Thanks @ericholscher. As the main maintainer of myst-parser, I am happy to help with any quaestions/improvements that would help facilitate the move 😄 Some initials notes: myst-parser was initially written using recommonmark as a template, so a lot of the "core" translations of Markdown -> docutils/sphinx AST should be very similar. In terms of RST to MyST conversion, I have been working on https://github.com/executablebooks/rst-to-myst, which is just about ready. In terms of the AutoStructify, one major difference is the toctree generation ( .. toctree::
:maxdepth: 1
doc1
doc2 to * [Title1](doc1.md)
* [Title2](doc2.md) one would instead use: ```{toctree}
:maxdepth: 1
doc1
doc2
``` Alternatively, I am also working on https://github.com/executablebooks/sphinx-external-toc, which extracts our code in jupyter-book to define the full sitemap in a For the other flags: |
glad that there is a path forward for the markdown story in sphinx |
Oh and I know @grubert recently added experimental support Markdown in docutils, using this package, and I missed a response about issues with myst-parser dependencies for this use (e.g. having sphinx as a dependency). |
Half of the projects I've "converted" so far have actually not had any md usage, just included remarkdown for historical reasons. (Partially due to issues including md into rst in the same page, IIRC). The other half were seamless, myst-parser was a drop in replacement. I don't think I have any projects that were fully md, though (might have at most one), so TOC and such are likely not to hit me. Most usage was in including a few pages like readme or changelog. One of the bigger conversions I'm aware of would likely be LLVM, which uses remarkdown internally for documentation. I've opened a post here. https://llvm.discourse.group/t/switch-recommonmark-to-myst-parser/3259 |
@chrisjsewell Just curious as it wasn't clear in the documentation but does myst-parser resolve links with the |
In addition to In case it's useful to others, I had hacked together this one-time script to convert recommonmark I think this might now be covered more robustly by rst-to-myst mentioned above: https://github.com/executablebooks/rst-to-myst#advanced-usage |
MyST resolves Markdown links (e.g.
Not currently. TBH no one had asked for it before, so I hadn't considered it |
Hey folks, with a sad heart I feel like it's probably time to write this update and make it official. We are planning to officially end support for recommonmark in the near future, and I wanted to give folks a chance to give us feedback on this proposal. We generally recommend everyone to switch to MyST-Parser instead -- read below for more background and a proposed timeline.
Long version
recommonmark is built on top of commonmark.py (originally CommonMark-py by
@rolandshoemaker
) to fill a gap that we observed in the ecosystem: many people wanted to write their Sphinx documentation using Markdown. We are happy to see that so many projects use it nowadays: there is no better confirmation that our observation was true.However, the project has been quite inactive for the past two years (with a minor update on December 2020 to fix an annoying bug), and we have not been responsive enough to bug reports and feature requests. Besides, the landscape of Markdown on Sphinx has changed quite dramatically in recent times: out of frustration for the lack of CommonMark-compliant, extensible Markdown parsing libraries in Python, the Executable Books project has created MyST-Parser, a project that goes beyond the original goals of recommonmark, extends Markdown to add useful features present in reStructuredText, and enjoys excellent community support.
For the reasons outlined above, we would like to effectively deprecate recommonmark and encourage users to migrate their documentation to MyST-Parser. We acknowledge that this migration can take some effort, and that users might miss some features currently not available on MyST-Parser like AutoStructify, but we think it is in the best interest for the community to consolidate interest around the most active and promising alternative.
Plans and timeline
We are currently posting this to the recommonmark GitHub repo, and we'll ask for feedback through our various channels.
The goal it to make sure the transition is as seemless as possible,
so the current proposed timeline is:
myst-parser
for users. We hope this should be a small adjustment, but there are some syntax differences that might take a bit of time to resolve.recommonmark
repo README with a deprecation noticerecommonmark
to recommendmyst-parser
Changes for users
Of note, the published pypi packages will continue to work. We don't plan to remove them, or remove the documentation for older versions of the packages. This change will only mean that new versions of the package will not be released.
If you are happy with the current implementation, you are welcome to continue using it without support.
Feedback requested
Thanks again for working with us to advance the state of markdown in Sphinx, and we hope to continue to build support around this idea with MyST.
Update: translation help
@jpmckinney posted a script in the thread to help convert:
@chrisjsewell also have a repo to help: https://github.com/executablebooks/rst-to-myst
The text was updated successfully, but these errors were encountered: