conda-forge/conda-forge.github.io

Split up infrastructure page

Opened this issue Β· 7 comments

I'm looking at our infrastructure page, and it's pretty long and unwieldy.

I think it should be split up, possibly into several different pages. At the very least, I'd like to split it into stuff that's recipe-relevant (compilers, sysroot, CDTs), and stuff that regular maintainers need much less often (website, metadata, CI setup, etc.).

Other possible things that might deserve their own pages:

  • bot commands
  • staged-recipes
  • "special package handling" (i.e. repodata patches, admin requests, feedstock-outputs)
  • everything regro-related

Thoughts @conda-forge/core?

CC @zklaus for recent efforts on these pages.

Last year, I experimented with how DiΓ‘taxis would apply to our docs in https://cf-infra-docs.netlify.app/docs. Some of the docs written for that experiment are being migrated over to our new website. @zklaus is almost finished, I think, with that effort.

I fully support the splitting. Here are some unordered thoughts that might make sense along with these efforts:

  • I think it would be beneficial to have the "life cycle" published as a standalone documentation entry because it gives a big picture of the whole infra. And then more details can be filled in in specific pages.
  • The bot-commands could be autogenerated from the conda-forge-webservices code similar to what we have done with the conda-forge.yml JSON schema.
  • If there's code out there emitting documentation, we should not rewrite those in the website. Either make it programmatically renderable in the website, or just point to the external documentation from the place(s) that make(s) most sense.

Also I think we need to distinguish between the infra that supports running a single build job, and the infra that supports orchestrating build jobs and automation. The line gets blurry at times, but I think it's worth trying it.

It is worth noting that we link to the admin bot requests all over the place. So if there is some way to forward the old links to whatever new page they live on, that would be quite helpful

Last year, I experimented with how DiΓ‘taxis would apply to our docs in https://cf-infra-docs.netlify.app/docs. Some of the docs written for that experiment are being migrated over to our new website. @zklaus is almost finished, I think, with that effort.

That looks very nice! I think we should not only take over the content, but also start structuring things in a similar way.

I think it would be beneficial to have the "life cycle" published as a standalone documentation entry because it gives a big picture of the whole infra. And then more details can be filled in in specific pages.

Sounds great - i.e. a big overview that branches off into separate little topic pages. I think in terms of diataxis quadrants that would be "Explanation" AFAICT, and very useful at that. We're lacking in that category a bit IMO (e.g. people struggle a lot with understanding the different roles of build: & host: environments; I have been wanting to write something up about that for a long time).

Hm, this turned out to be a way deeper rabbit hole than I wanted to dive into πŸ˜…

First, a proposal only for Reference:Infrastructure (topic of this issue):

[...]
β”œ Reference
| β”œ Infrastructure
| | β”œ Staged recipes            # including teams
| | β”œ Compilers
| | β”œ Other core packages       # sysroots, CDTs, msys2, ...
| | β”œ CI Setup                  # docker images, conda-forge-ci-setup
| | β”œ CI providers
| | β”œ Global pinning
| | β”œ Feedstock evolution       # conda-smithy
| | β”œ Feedstock metadata        # graphs, feedstocks feedstock-outputs
| | β”œ Metadata corrections      # repodata-patches, admin-requests
| | β”œ Bot repos                 # all things regro
| | β”œ Website
| | β”” ...
| β”œ Bot commands
| β”” ...
β”” ...

In order to orient myself, I however had to look at the bigger picture, so here's a suggested page structure based on the existing docs and the @jaimergp's experiment:

Overall structure proposal
vs. docs vs. Infra Exp. Comment
Welcome == here == Welcome
For users == here n/a could surely be improved...
β”” ... ... but not in scope here
For maintainers == here n/a
β”œ Tutorials partially here == Tutorials
| β”œ Generate a conda recipe Using greyskull or whatever
| β”œ Write your first recipe Segue from first tutorial,
make some changes
| β”œ Submit your first recipe ~= placeholder Segue again,
process for submission
| β”” ...
β”œ How-to guides distributed all over == How-to guides
| β”œ Easy
| | β”œ Read a recipe Component overview,
refer to in-depth explanation
| | β”œ Rerender feedstock
| | β”œ Test packages
| | β”œ Deal with numpy roughly here
| | β”œ Enable osx-arm64 roughly here Same for arches
| | β”œ Talk to the bots refer to bot command
reference page
| | β”” ...
| β”œ Medium
| | β”œ Cross-compile ~= here
| | β”œ Enable CUDA ~= here
| | β”œ Multi-output recipes ~= here
| | β”œ LTS branches ~= here
| | β”” ...
| β”œ Emergencies
| | β”œ Patch repodata
| | β”” Mark a package broken ~= here
β”œ Understanding c-f not much ~= Fundamentals "Explanation" part of diataxis
| β”œ Life-cycle of a pkg == here
| | β”” ...
| β”œ How a pkg gets built
| | β”œ Compilation concepts shared/static/etc.
| | β”œ Env. roles short comment e.g. build: vs. host:
| | β”œ Compilers partially here e.g. role of activation
| | β”œ Global pinning ~= here
| | β”œ Run exports ~= here
| | β”œ Jinja functions
| | β”” ...
| β”œ How our bots work see here
| | β”œ Migrations ~= here
| | β”œ regro infra
| | β”” ...
| β”œ Security ~= here see placeholder
| | β”œ Output validation
| | β”” ...
| β”œ Maintainer roles roughly here & here
| β”” ...
β”œ Reference all over == Reference
| β”œ Infrastructure ~same content split
somewhat differently
| | β”œ Staged recipes roughly here incl. teams
| | β”œ Compilers roughly here
| | β”œ Other core packages sysroots, CDTs, msys2, ...
| | β”œ CI Setup docker images,
conda-forge-ci-setup
| | β”œ CI providers roughly here
| | β”œ Global pinning ~= here +explain migrators
| | β”œ Feedstock evolution conda-smithy
| | β”œ Feedstock metadata graphs, feedstocks,
feedstock-outputs
| | β”œ Metadata corrections repodata-patches, admin-requests
| | β”œ Bot repos all things regro
| | β”œ Website == here
| | β”” ...
| β”œ Bot commands ~= here == here
| β”œ Feedstock settings mostly here == here conda-forge.yml, CBC, migrators
| β”œ Glossary == here == here
| β”œ Current pins == here Auto-generated / subset?
| β”œ Ongoing migrations refer to status page
| β”” ...
β”œ Miniforge == here
β”” FAQ ~= here separate because
there's no clean split
into how-to & reference...?

I really like this! One of the great things about DiΓ‘taxis is that it's explicitly build to not force you to do everything in one fell swoop. So moving in this direction with a plan as posted by @h-vetinari as a general guideline to follow sounds great to me.

With #2158, my transfer of content into the infrastructure page will be concluded, so I am all for moving forward in the proposed direction.

With #2158, my transfer of content into the infrastructure page will be concluded, so I am all for moving forward in the proposed direction.

This was merged earlier today. So it sounds like this issue is wide open

I opened a more broadly-scoped issue about the overall structure proposed above in #2164. I'll bring it up in the core call this week to see if people are on board with the overall direction. Once we have a Reference section, it would be easier to move things, I think.