Skip to content

Reorganize the Omega documentation around the questions readers bring - #550

Draft
xylar wants to merge 3 commits into
E3SM-Project:developfrom
xylar:omega/docs/reorg
Draft

xylar wants to merge 3 commits into
E3SM-Project:developfrom
xylar:omega/docs/reorg

Conversation

@xylar

@xylar xylar commented Sep 13, 2026

Copy link
Copy Markdown

Reorganize the Omega documentation from one page per source module into a User Guide, Developer Guide and Technical Guide, each answering one kind of question, with the design documents kept as a frozen archive. This draft starts with the design document so the structure and principles can be reviewed before pages move; the reorganization itself will follow on this branch.

The shape is a hybrid: the E3SM User/Developer/Technical Guide triad on the outside, a MOM6-style science spine inside the Technical Guide. The User Guide is organized by task (build, run, configure, I/O, model options), the Developer Guide by what a developer is trying to do (getting started, contributing, framework, model, how-to recipes), and the math moves out of the Developer Guide into the Technical Guide. Section 3 of the design surveys MOM6, MITgcm, NEMO, ROMS, Oceananigans and the E3SM component docs and says what we take from each; section 5 lists the principles a reviewer should hold future doc changes to.

For reviewers to weigh in on:

  • The eleven principles in section 5, especially "one home per fact" and "design documents are frozen".
  • Generating the configuration reference from a sidecar configs/ConfigDescriptions.yml (section 6.7) rather than from descriptions in the C++ Config::get calls, which stays open as a discussion item.
  • Publishing one directory per version on gh-pages, Polaris-style, in this PR (section 6.9).
  • Breaking old page URLs without redirects (section 6.6).

This PR restructures and writes the connective pages only. A real user quick start, running-in-E3SM pages, migrating the governing equations into the Technical Guide, the remaining how-to recipes and tutorials will be placeholders with tracking issues (section 7).

Checklist


Posted by Claude Code on @xylar's behalf. The analysis and wording above are AI-authored; please check them accordingly.

🤖 Generated with Claude Code

@xylar
xylar requested a review from sbrus89 September 13, 2026 09:36
@xylar

xylar commented Sep 13, 2026 •

Copy link
Copy Markdown
Author

@sbrus89, could you give this design a look at some point so we can chat about it when we meet next. Not a rush.

@xylar xylar added the documentation Improvements or additions to documentation label Sep 13, 2026
@xylar xylar self-assigned this Sep 13, 2026

@cbegeman cbegeman left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@xylar I endorse this reorg! I just noticed one thing that was unclear (to me).

Comment on lines +395 to +397
2. *A sidecar descriptions file* (chosen): explicit, validated, and usable by
other tools; costs a second file that must be kept in step, which the build
check enforces.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not clear on how this would be validated and usable

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, that was too terse. I rewrote §6.7 in 74c8d97 to show the descriptions file next to the matching Default.yml section, list what the build checks (every option described, no stale entries, defaults satisfy their own allowed values, doc anchors exist), and say what omega_buildnml can do with the allowed values. Also dropped "sidecar" for "companion file".


Posted by Claude Code on @xylar's behalf. The wording above is AI-authored; please check it accordingly.

xylar and others added 2 commits September 18, 2026 12:40
Record the plan to move the docs from one page per source module to a
User Guide, Developer Guide and Technical Guide organized around the
questions readers bring, with the design documents kept as a frozen
archive. The document surveys MOM6, MITgcm, NEMO, ROMS, Oceananigans and
the E3SM component docs, sets out the principles the docs should follow,
and settles the mechanisms the structure depends on: a generated
configuration reference from a sidecar descriptions file, a BibTeX
bibliography, and Polaris-style versioned publication.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Show an example of the companion file next to the matching Default.yml
section, list the four consistency checks that fail the documentation
build, and say what omega_buildnml can do with the allowed values and
ranges. Replace "sidecar" with "companion file" throughout.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@vanroekel

Copy link
Copy Markdown
Collaborator

This reorg sounds very logical to me. I'm a little worried about having to carry to Default.yml files, but it seems the best option without touching tons of omega code.

A clarification question on the Description in Default.yml - each parameter would have a description? How long can / should these be and can this be split easily over lines? I'd maybe advocate for a short description in that file then a more robust one in the companion file.

Reviewers read the two-file design as putting descriptions in
Default.yml. State that it keeps values only, that the companion file
never holds a default so the two cannot disagree about one, and that a
description is one or two sentences that YAML folds over lines.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@xylar

xylar commented Sep 30, 2026

Copy link
Copy Markdown
Author

@vanroekel Default.yml doesn't change — no descriptions go in it. All of them live in ConfigDescriptions.yml, so the file you edit to change a default stays exactly as light as it is now. That's most of what you're advocating; the open question is only whether you also want a short description in Default.yml, and my inclination is no, since two descriptions per option is two things to keep in step and the companion file is one git grep away.

On the mechanics: a description is aimed at one or two sentences, there's no limit, and YAML folds over as many lines as you like with no escaping or continuation characters:

HaloWidth:
  description: >-
    Number of halo layers around each subdomain. Must be at least 3
    so that all baroclinic and higher-order tracer advection terms
    can be computed without communication.
  type: int

On carrying two files: the companion never holds a default value, so the two can't disagree about one. What it duplicates is the option names and nesting, and that's exactly what the build check compares — a new option in Default.yml fails CI until it's described, and a renamed or deleted one fails until its description follows. There are 170 options today, so the initial pass is real work, but it's a one-time pass and CI keeps it honest after that.

§6.7 now says all of this outright, since it wasn't clear (0949219).


Posted by Claude Code on @xylar's behalf. The wording above is AI-authored; please check it accordingly.

@vanroekel

Copy link
Copy Markdown
Collaborator

Thanks for the explanation and change @xylar

This branch has not been deployed

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

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants