Today we’re excited to announce Quarto, a new open-source scientific and technical publishing system. Quarto is the next generation of R Markdown, and has been re-built from the ground up to support more languages and environments, as well as to take what we’ve learned from 10 years of R Markdown and weave it into a more complete, cohesive whole. While Quarto is a “new” system, it’s important to note that it’s highly compatible with what’s come before. Like R Markdown, Quarto is also based on Knitr and Pandoc, and despite the fact that Quarto does some things differently, most existing R Markdown documents can be rendered unmodified with Quarto. Quarto also supports Jupyter as an alternate computational engine to Knitr, and can also render existing Jupyter notebooks unmodified.
Some highlights and features of note:
- Author documents as plain text markdown or Jupyter notebooks, using a variety of tools including RStudio, VS Code, Jupyter Lab, or any notebook or text editor you like. Publish high-quality reports, presentations, websites, blogs, books, and journal articles in HTML, PDF, MS Word, ePub, and more. Write with scientific markdown extensions, including equations, citations, crossrefs, diagrams, figure panels, callouts, advanced layout, and more.
Now is a great time to start learning Quarto as we recently released version 1.0, our first stable release after nearly two years of development. Get started by heading to https://quarto.org.
If you are a dedicated R Markdown user, fear not, R Markdown is by no means going away! See our FAQ for R Markdown Users or Yihui Xie’s blog post on Quarto for additional details on the future of R Markdown.
Below we’ll go into more depth on why we decided to create a new system as well as talk more about Quarto’s support for the Jupyter ecosystem.
Why a new system?
The goal of Quarto is to make the process of creating and collaborating on scientific and technical documents dramatically better. Quarto combines the functionality of R Markdown, bookdown, distill, xaringian, etc. into a single consistent system with “batteries included” that reflects everything we’ve learned from R Markdown over the past 10 years.
The number of languages and runtimes used for scientific discourse is very large and the Jupyter ecosystem in particular is extraordinarily popular. Quarto is, at its core, multi-language and multi-engine, supporting Knitr, Jupyter, and Observable today and potentially other engines tomorrow.
While creating a new system has given us the opportunity for a fresh look at things, we have also tried to be as compatible as possible with existing investments in learning, content, and code. If you know R Markdown well, you already know Quarto well, and many of your documents are already compatible with Quarto.
Quarto and Jupyter
While the R community has mostly focused on plain text R Markdown for literate programming, the Python community has a very strong tradition of using Jupyter notebooks for interactive computing and the interweaving of narrative, code, and output. With Quarto we are hoping to bring what we’ve learned about publishing dynamic documents with R to the Jupyter ecosystem.
One compelling benefit of Quarto supporting both Knitr and Jupyter is that you can create websites and books that include content from both systems in a single project. Whether users prefer to author in plain markdown, computational markdown, or Jupyter notebooks, they can all contribute to the same project. Similarly, code written in R, Python, Julia, and other languages can co-exist in the same project. We believe that providing a common set of tools will facilitate collaboration and make it much easier to weave together contributions from diverse participants into a cohesive whole.
We also want to enable the many tools built around Jupyter to have access to state of the art scientific publishing capabilities. A great example of this is some recent work we’ve done with https://fast.ai to help integrate Quarto with the nbdev literate programming system. nbdev enables the development of Python libraries within Jupyter Notebooks, putting all code, tests and documentation in one place. In nbdev 2, library documentation written in notebooks can be used to automatically create a Quarto website for the library with a single function call.
Getting more involved with Jupyter as part of working on Quarto has been a great experience. We’re excited to do more with the Jupyter community and to continue supporting the ecosystem as a sponsor of NumFOCUS.
Here are some resources that will help you learn more about Quarto:
- Get started with Quarto by downloading it and following the tutorial for your tool of choice (including RStudio, VS Code, and Jupyter Lab).
- See the User Guide for articles on everything you can do with Quarto, including adding interactivity, using extensions and custom formats, and publishing to a wide variety of destinations.
- Check out the Gallery for examples of the things you can do with Quarto.
- Watch all of the Quarto talks from this year’s rstudio::conf
- Report any issues you encounter or start a discussion about using Quarto.
- Follow us on Twitter at @quarto_pub and subscribe to our blog.
We’re excited to begin the journey of making Quarto the very best scientific publishing system we can, and look forward to sharing many more developments in the months and years ahead.