Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 31 additions & 7 deletions docs/guide/tools/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,38 @@
Tools for documentation writing
================================

Writing documentation requires good tools.
There are a bunch of different tools in the world,
but we figure we should give you the sharpest.
Below we talk about some of our favorites and the ones we find do the job
the best.
Writing documentation requires good tools. This section covers documentation tools recommended by the Write the Docs community, with a focus on tools widely used for technical documentation.

Sphinx
------

Sphinx is a documentation generator widely used in the Python ecosystem and beyond. It converts reStructuredText (and Markdown via MyST Parser) into HTML, PDF, and other formats. Sphinx excels at technical documentation with features like code introspection, cross-referencing, and multiple output formats.

See the following pages for Sphinx guidance:

.. toctree::
:maxdepth: 2

sphinx
sphinx-themes
sphinx-community

Other documentation tools
-------------------------

While this section currently focuses on Sphinx, the Write the Docs community uses many documentation tools depending on project needs:

- **MkDocs**: Markdown-focused static site generator with live preview
- **Docusaurus**: React-based tool by Meta with built-in versioning and i18n
- **Jekyll**: Ruby-based static site generator, popular for GitHub Pages
- **Hugo**: Extremely fast Go-based generator for content sites

See the main :doc:`/guide/index` for broader documentation guidance applicable across tools.

Testing and quality
-------------------

.. toctree::
:maxdepth: 2
:glob:

*
testing
37 changes: 37 additions & 0 deletions docs/guide/tools/sphinx-community.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
Community perspectives on Sphinx
==================================

This page captures common experiences and feedback from the Write the Docs community about using Sphinx, based on discussions at Write the Docs Portland 2021 and ongoing community conversations.

What users appreciate
---------------------

Community members frequently highlight Sphinx's strengths for technical documentation:

- Code introspection and tight integration with source code (docs-as-code approach)
- Powerful reStructuredText markup for complex documentation needs
- Intersphinx for cross-linking between projects
- Strong domain support for multiple programming languages

Common challenges
-----------------

New users often encounter similar hurdles when learning Sphinx:

**Learning curve**: Sphinx presents a significant barrier to entry, particularly for those new to documentation tools or reStructuredText.

**Navigation setup**: Creating and managing toctree structures requires careful planning and can be unintuitive initially.

**Documentation style**: The official Sphinx documentation is comprehensive but geared toward reference rather than learning. New users often benefit from supplementary tutorials like those listed in the :doc:`/guide/tools/sphinx` introduction.

**Theming**: Customizing Sphinx themes requires understanding the templating system, which can be challenging. The :doc:`/guide/tools/sphinx-themes` page provides recommended starting points.

Resources and community
-----------------------

The Sphinx community continues to create learning resources to address the steep learning curve:

- `Sphinx Tutorial <https://www.sphinx-doc.org/en/master/tutorial/>`_ - Official tutorial for newcomers
- `Read the Docs Getting Started <https://docs.readthedocs.io/en/stable/intro/getting-started-with-sphinx.html>`_ - Step-by-step guide

Join the #sphinx channel on the Write the Docs Slack to connect with other Sphinx users and get help.
20 changes: 17 additions & 3 deletions docs/guide/tools/sphinx-themes.rst
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
Sphinx themes
=============

These are the Sphinx themes that we recommend.
If there are any others you like,
feel free to open a pull request to add them.
These are Sphinx themes that the Write the Docs community recommends.
The Sphinx ecosystem includes many themes - this list highlights popular, well-maintained options.
If there are others you like, feel free to open a pull request to add them.

Requirements to be included on this list:

Expand Down Expand Up @@ -84,3 +84,17 @@ designed navigation features (sidebar, inter-page links).

.. image:: /_static/img/furo.png
:width: 80%

PyData Sphinx theme
-------------------

A clean, three-column, Bootstrap-based theme widely adopted by scientific and data science projects. Features responsive design and excellent navigation for complex documentation.

* https://github.com/pydata/pydata-sphinx-theme

Shibuya
-------

A modern, responsive theme with excellent light/dark mode support and great integration with Jupyter extensions. Features Radix color system and flexible layouts.

* https://github.com/lepture/shibuya
24 changes: 24 additions & 0 deletions docs/guide/tools/sphinx.rst
Original file line number Diff line number Diff line change
Expand Up @@ -182,3 +182,27 @@ You can now open them in your browser by typing::

open _build/html/index.html

Markdown support
----------------

While Sphinx primarily uses reStructuredText, it can also work with Markdown files using the MyST Parser. MyST (Markedly Structured Text) extends CommonMark Markdown with features needed for technical documentation while maintaining compatibility with Sphinx's ecosystem.

To use Markdown in your Sphinx project, install myst-parser and configure it in ``conf.py``. You can mix ``.rst`` and ``.md`` files in the same project.

* `MyST Parser documentation <https://myst-parser.readthedocs.io/>`_

Key features and extensions
----------------------------

Sphinx includes powerful features for technical documentation:

**Intersphinx**: Cross-reference documentation from other Sphinx projects without duplicating content. Particularly valuable for projects with multiple interconnected documentation sites.

* `Intersphinx documentation <https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html>`_

**Domains**: Built-in support for documenting Python, C, C++, JavaScript, and reStructuredText code with specialized directives and roles. Extensions available for other languages.

**Extensions ecosystem**: Large collection of extensions for specialized needs (autodoc, viewcode, todo, napoleon, and many more).

* `Extensions documentation <https://www.sphinx-doc.org/en/master/usage/extensions/index.html>`_

1 change: 1 addition & 0 deletions vale/WTD/headings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ exceptions:
- Git
- Guzzle
- HTMLProofer
- PyData
- Read the Docs
- README
- SEO
Expand Down