Antes de empezar...

Scroll view
Si estás en un dispositivo móvil.
Fragment view
Tal como se ve en la presentación.
Speaker mode
Para ver las notas del presentador.
Print mode
Exportar a PDF.
Search
Busca en la presentación (Ctrl + Shift + F).
Shortcuts

Navega usando

Documenta tu proyecto

con herramientas open source

Santos Gallegos - [email protected]
@stsewd

$ WHOAMI

Escogiendo tus herramientas

Generador de documentación

Genera documentación a partir de una fuente.

  • MkDocs
  • Sphinx
  • Doxygen
  • Asciidoctor
  • Docusaurus

Formato de la documentación

El formato en el que está escrita la fuente de la documentación.

  • Markdown
  • reStructuredText
  • AsciiDoc

Escogiendo tus herramientas

Escogiendo tus herramientas

Escogiendo tus herramientas

  • Ecosistema/lenguaje
  • Necesidades
  • Tamaño de tu proyecto

Ejemplo: Rust

https://doc.rust-lang.org/rustdoc/

Ejemplo: Python

  • Sphinx
  • MkDocs

Ejemplo: CLI


            $ man man-pages
            $ man groff
        

Ejemplo: API

https://www.openapis.org/

Formato

Markdown

Markdown


            # Título

            Texto *cursivo*, **negrita** y ~~tachado~~.
            [Enlace](https://example.com).

            ## Subtítulo

            - Lista 1
            - Lista 2

            ![Imagen](https://example.com/image.png)

            ```python
            print("Hola mundo")
            ```
        
https://commonmark.org/

Markdown

reStructuredText


            Título
            ======

            Texto *cursivo*, **negrita**.
            `Enlace <https://example.com>`__.

            Ver más en :doc:`/api`.

            Subtítulo
            ---------

            - Lista 1
            - Lista 2

            .. image:: https://example.com/image.png

            .. code:: python

               print("Hola mundo")
        
https://docutils.sourceforge.io/rst.html

Generadores y formatos

  • MkDocs: Markdown
  • Sphinx: reStructuredText, Markdown, MyST
  • Jupyter Book: MyST

Escribiendo documentación

  • Teclado
  • Editor

Teclado

Editor

Editor

LSP

Language server protocol

  • Autocompletado
  • Errores
  • Documentación (hover)
  • Go to definition
  • Refactoring

LSP

Markdown: Marksman

https://github.com/artempyanykh/marksman

LSP

Demo: Neovim, BTW

LSP

reStructuredText: esbonio

https://docs.esbon.io/

LSP

Demo: Neovim, BTW

LSP editor support

Tree-sitter

Syntax highlighting

  • Resaltado más preciso (y rápido)
  • Resaltado basado en scopes y contexto
  • Injections (resaltado de bloques de código)
  • Indentación

tree-sitter-markdown

Demo: Neovim, BTW

tree-sitter-rst

Demo: Neovim, BTW

tree-sitter editor support

Editor

Otras recomendaciones

  • Checker de ortografía/gramática
  • Diccionario
  • Corrector de estilo (https://vale.sh/)
  • AI como GH copilot, or ChatGPT

Otras recomendaciones

Diatáxis

Framework para organizar tu documentación

https://diataxis.fr/

Otras recomendaciones

Semantic line breaks

Separa las líneas por sentido semántico, no por un límite de caracteres.

https://rhodesmill.org/brandon/2012/one-sentence-per-line/

Line breaks arbitrarios

Semantic line breaks

Hosting

Hosting

HTTP server

Hosting

Cloud services

Hosting

¿Cuál escoger?

Git service as documentation hosting

docs/index.md

README.md

Una simple documentación es mejor que no documentación.