Skip to content

Separate the docs by reader need, following Diátaxis #1052

Description

@ecomodeller

The docs are split into User Guide, Examples and API Reference. No rule says what belongs in which, and as a result each section holds a mix. Diátaxis offers a rule: split by what the reader is doing, not by subject. It names four kinds — tutorial, how-to guide, reference, explanation — on two axes: practical vs theoretical, and at study vs at work.

Where we are now

Mapping the 26 hand-written pages onto the four kinds:

Kind Where it actually lives
Reference api/ (generated by quartodoc) — clean and correct. Also hand-copied into user guide pages.
Explanation design.qmd; generic.qmd's "When to use / When not to use the generic module"; the flexible-mesh concepts in dfsu.qmd; data-structures.md. All good material, all filed under "User Guide".
How-to examples/, and also most of mesh.qmd ("Convert mesh to shapely", "Check if points are inside the domain") and dfs0.qmd ("From Dfs0 to pandas DataFrame").
Tutorial Nothing.

The user guide / examples boundary is not defined

  • examples/Time-interpolation.qmd and user-guide/statistics.qmd are the same shape — headed sections of aggregation and interpolation code against test data — and sit in different sections.
  • user-guide/mesh.qmd is almost entirely task recipes. It is a how-to guide filed as a user guide page.
  • examples/dfsu/merge_subdomains.qmd still reads as the working script it was converted from. Its headings are "Import libraries", "(optional) check first file, items etc.", "choose items to process (when in doubt look at one of the files you want to process with mikeio.open)".

getting-started.qmd holds three kinds at once

Its headings are: Requirements, Installation, Using uv, pip, uv, then Dataset, Types and units, Dfs0, Dfs2, Generic dfs, Additional resources. That is installation instructions (how-to), followed by a whirlwind tour of the API (reference), with no single continuous task anywhere. A newcomer has nothing to follow end to end.

Hand-maintained reference is a second source of truth

The Grid1D/Grid2D property lists (removed in #1051) were copied by hand and nothing kept them in step with the code. Grid2D's list advertises contains(), bbox and xy, which Grid3D does not have (#1050). Generated reference cannot drift this way; prose that restates it can, and does.

Why this is worth fixing beyond tidiness

Structure is what stops content going missing. When the docs moved from Sphinx to Quarto in f4aedf5f, docs/dfs0.md, dfs1.md, dfs2.md and dfs3.md were all deleted; the first three were recreated as .qmd pages and dfs3 was not. dfs3 then had no page at all until #1046 — over two years — while remaining a supported format. Nothing detected it because no rule said every format needs a page in a particular place.

The same absence is why #887 exists: content in the notebooks had no defined home in the docs, so it stayed in the notebooks until the notebooks were removed.

What the current docs get right

Worth stating, because it narrows the work to organisation rather than correctness. I executed every code block on all 26 hand-written pages against the test data:

  • all pages run clean, apart from one deliberate AttributeError demonstration correctly marked #| error: true
  • no page uses a deprecated API
  • all 71 mikeio.* cross-references resolve

So this is not a correctness problem. It is that a reader cannot tell where to look.

Proposed target

  1. Write the missing tutorial. One continuous path — open a dfsu, inspect it, subset it, plot it, write it back — that works start to finish with no detours. Split installation out of getting-started.qmd so the tutorial is not preceded by environment setup.
  2. Promote Explanation to its own top-level section. Move design.qmd, data-structures.md, the "when to use the generic module" material, and the flexible-mesh concepts out of the file-type pages.
  3. Make examples/ how-to guides, titled by task. "Convert a mesh to shapely", not "Mesh". Move the recipe-shaped sections currently inside the user guide here.
  4. Keep Reference generated only. No hand-written property lists in prose; link to api/ instead.
  5. Record the rule in CONTRIBUTING.md, so a new page has an obvious home and the split does not drift again. This is the part that prevents a repeat.

Steps 4 and 5 are cheap and independent. Step 1 is the biggest gap for new users. Steps 2 and 3 move ~24 pages and should be agreed before starting.

Related: #887 (content with no Quarto equivalent), #1046, #1051.

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions