Skip to content

ngff repo structural changes #399

@jo-mueller

Description

@jo-mueller

Hi all,

in the past weeks/months, we saw a few issues accumulating here pertaining to the structure and appearance of the repo/webpage:

I think the source/solutions to these issues fall under a few categories:

Bikeshed & static html

While powerful, the inherent "flaw" of using bikeshed in this context is that we are mixing together multiple markdown flavors (sphinx and bikeshed) that don't go so well with each other. As a result, we are building the html-rendered pages of the spec document and serving them as static extra pages with sphinx. On the one hand, this gives access to URLs like ngff.openmicroscopy.org/0.5. On the other hand, these html pages are not part of the website's actual toctree, which makes them hard to access/navigate.

Similarly, there are html pages (like https://ngff.openmicroscopy.org/0.5/schemas/) that aren't linked anywhere on the main page so you kinda have to know that they exist top find them.

Solution The obvious solution here, would be to deprecate bikeshed, convert the index.bs to "normal" markdown and serve them through the sphinx build pipeline.

Readthedocs

Imho, the real power of RTD shines when publishing documents from a versioned repo since RTD provides that nice dropdown in the buttoms with which you can flip between versions easily. Since we are not doing this here on the ngff page, that feature isn't helping us much. RTD does provide a nice pre-rendered version of docs in every PR, which is a valuable thing to have.

Solution: We could think about deprecating RTD and use gh pages instead. I think @lubianat knows of some magic tools to also provide PR preview pages with gh pages, which I think is our primary feature of interest with RTD.

Submodules

Currently, the submodules link out to different branches of this repository, whereas the branches have little in common with the main branch. There's also no real active development head for new spec versions, which led (and still leads) to some confusion.

Solution: Since this makes contributing and managing forks of ome/ngff a bit difficult, we started exploring breaking out the spec content (consisting of schemas, examples and the spec itself) to a different repo - ome/ngff-spec. The latter uses myst/jupyter-powered markdown to build pages (which is really just sphinx with extra steps). Fully endorsing this as the place for the spec to live would require these steps:

  • Copy spec versions (0.1-0.5) over there on different branches
  • Convert to markdown (cheap convert: Replace headlines with h1, h2, etc and update crosslinks)
  • Tag and release these old versions from their own branches
  • Some smaller structural changes over at ngff-spec to get clean URLs for the spec on the ngff page Splash repository ngff-spec#36

Once this is done, we could replace the submodules here under the root level and introduce new submodules under ./specifications/0.5/<content of 0.5 branch on ngff-spec>. Since the latter is just a bunch of markdown, we can just add these md files to the toctrees over here and have a fully rendered ngff page. This is how this could (more or less) look like. Any development of the spec would then just include a PR to ngff-spec/main and a tagged release from there would constitute a new spec release. Done.

Embrace myst/jupyter book (optional)

Further down the line, moving more of the doc work in here to myst/jupyter-book would give way to a few more nice styling options. For once, it's easier to create navbar elements, that could move the contents of the primary navigation bar on the left of the ngff page to a new header section. In turn this would make room for less cluttered navigation in the primary sidebar. For instance, the different spec versions could take up that space and make flipping through versions a bit easier. For an example of how that could look like, check out the ro-crate specification page.

Myst supports the toctree directives used throughout the pages here, so we would just have to create a myst.yml file with the basic site layout and convert the index.rst to index.md.

Again, the last item (myst conversion) is entirely optional and not a must to the solution of the above-linked issues.

cc @lubianat @joshmoore @dstansby @govekk @clbarnes @gouttegd ...who else was routinely engaging with documentation stuff here on the page?

Anyway, LMKWYT :)

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentation

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions