conda-forge / conda-forge.github.io

The conda-forge website.
https://conda-forge.org
BSD 3-Clause "New" or "Revised" License
131 stars 274 forks source link

Split up infrastructure page #2154

Open h-vetinari opened 6 months ago

h-vetinari commented 6 months ago

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:

Thoughts @conda-forge/core?

CC @zklaus for recent efforts on these pages.

jaimergp commented 6 months ago

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:

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.

jakirkham commented 6 months ago

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

h-vetinari commented 6 months ago

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).

h-vetinari commented 6 months ago

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](https://conda-forge.org/docs/) | vs. [Infra Exp.](https://cf-infra-docs.netlify.app/docs/) | Comment | |--------|--------|--------|--------| | `Welcome` | == [here](https://conda-forge.org/docs/) | == [Welcome](https://cf-infra-docs.netlify.app/docs/) | | | `For users` | == [here](https://conda-forge.org/docs/user/) | n/a | could surely be improved... | | `β”” ...` | | | ... but not in scope here| | `For maintainers` | == [here](https://conda-forge.org/docs/maintainer/) | n/a | | | `β”œ Tutorials` | partially [here](https://conda-forge.org/docs/maintainer/adding_pkgs) | == [Tutorials](https://cf-infra-docs.netlify.app/docs/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](https://cf-infra-docs.netlify.app/docs/tutorials/submit-a-recipe/) | Segue again,
process for submission | | `\| β”” ...` | | | | | `β”œ How-to guides` | distributed all over | == [How-to guides](https://cf-infra-docs.netlify.app/docs/howto/) | | | `\| β”œ Easy` | | | | | `\| \| β”œ Read a recipe` | | | Component overview,
refer to in-depth explanation | | `\| \| β”œ Rerender feedstock` | | | | | `\| \| β”œ Test packages` | | | | | `\| \| β”œ Deal with numpy` | roughly [here](https://conda-forge.org/docs/maintainer/knowledge_base/#building-against-numpy) | | | | `\| \| β”œ Enable osx-arm64` | roughly [here](https://conda-forge.org/docs/maintainer/knowledge_base/#apple-silicon-builds) | | Same for [arches](https://conda-forge.org/docs/maintainer/knowledge_base/#using-arch_rebuildtxt) | | `\| \| β”œ Talk to the bots` | | | refer to bot command
reference page | | `\| \| β”” ...` | | | | | `\| β”œ Medium` | | | | | `\| \| β”œ Cross-compile` | ~= [here](https://conda-forge.org/docs/maintainer/knowledge_base/#cross-compilation) | | | | `\| \| β”œ Enable CUDA` | ~= [here](https://conda-forge.org/docs/maintainer/knowledge_base/#cuda-builds) | | | | `\| \| β”œ Multi-output recipes` | ~= [here](https://conda-forge.org/docs/maintainer/knowledge_base/#multi-output-recipes) | | | | `\| \| β”œ LTS branches` | ~= [here](https://conda-forge.org/docs/maintainer/updating_pkgs/#maintaining-several-versions) | | | | `\| \| β”” ...` | | | | | `\| β”œ Emergencies` | | | | | `\| \| β”œ Patch repodata` | | | | | `\| \| β”” Mark a package broken` | ~= [here](https://conda-forge.org/docs/maintainer/updating_pkgs/#removing-broken-packages) | | | | `β”œ Understanding c-f` | not much | ~= [Fundamentals](https://cf-infra-docs.netlify.app/docs/fundamentals/) | "Explanation" part of [diataxis](https://diataxis.fr/) | | `\| β”œ Life-cycle of a pkg` | | == [here](https://cf-infra-docs.netlify.app/docs/fundamentals/life-cycle/) | | | `\| \| β”” ...` | | | | | `\| β”œ How a pkg gets built` | | | | | `\| \| β”œ Compilation concepts` | | | shared/static/etc. | | `\| \| β”œ Env. roles` | short [comment](https://conda-forge.org/docs/maintainer/knowledge_base/#placing-requirements-in-build-or-host) | | e.g. `build:` vs. `host:` | | `\| \| β”œ Compilers` | partially [here](https://conda-forge.org/docs/maintainer/infrastructure/#compilers-and-runtimes) | | e.g. role of activation | | `\| \| β”œ Global pinning` | ~= [here](https://conda-forge.org/docs/maintainer/pinning_deps/) | | | | `\| \| β”œ Run exports` | ~= [here](https://conda-forge.org/docs/maintainer/pinning_deps/#specifying-run_exports) | | | | `\| \| β”œ Jinja functions` | | | | | `\| \| β”” ...` | | | | | `\| β”œ How our bots work` | | see [here](https://cf-infra-docs.netlify.app/docs/advanced/automation/) | | | `\| \| β”œ Migrations` | ~= [here](https://conda-forge.org/docs/maintainer/knowledge_base/#migrators-and-migrations) | | | | `\| \| β”œ regro infra` | | | | | `\| \| β”” ...` | | | | | `\| β”œ Security` | ~= [here](https://conda-forge.org/docs/maintainer/knowledge_base/#security-considerations-for-conda-forge-builds) | see [placeholder](https://cf-infra-docs.netlify.app/docs/advanced/security/) | | | `\| \| β”œ Output validation` | | | | | `\| \| β”” ...` | | | | | `\| β”œ Maintainer roles` | roughly [here](https://conda-forge.org/docs/maintainer/guidelines/) & [here](https://conda-forge.org/docs/maintainer/adding_pkgs/#maintainer-role) | | | | `\| β”” ...` | | | | | `β”œ Reference` | all over | == [Reference](https://cf-infra-docs.netlify.app/docs/reference/) | | | `\| β”œ Infrastructure` | | ~same content split
somewhat differently | | | `\| \| β”œ Staged recipes` | | roughly [here](https://cf-infra-docs.netlify.app/docs/reference/infrastructure/staged-recipes/) | incl. teams | | `\| \| β”œ Compilers` | roughly [here](https://conda-forge.org/docs/maintainer/infrastructure/#compilers-and-runtimes) | | | | `\| \| β”œ Other core packages` | | | sysroots, CDTs, msys2, ... | | `\| \| β”œ CI Setup` | | | docker images,
conda-forge-ci-setup | | `\| \| β”œ CI providers` | | roughly [here](https://cf-infra-docs.netlify.app/docs/reference/infrastructure/services/) | | | `\| \| β”œ Global pinning` | ~= [here](https://conda-forge.org/docs/maintainer/pinning_deps/) | | +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](https://cf-infra-docs.netlify.app/docs/reference/infrastructure/website/) | | | `\| \| β”” ...` | | | | | `\| β”œ Bot commands` | ~= [here](https://conda-forge.org/docs/maintainer/infrastructure/#admin-web-services) | == [here](https://cf-infra-docs.netlify.app/docs/reference/bot-commands/) | | | `\| β”œ Feedstock settings` | mostly [here](https://conda-forge.org/docs/maintainer/conda_forge_yml/) | == [here](https://cf-infra-docs.netlify.app/docs/reference/feedstock-settings/) | `conda-forge.yml`, CBC, migrators | | `\| β”œ Glossary` | == [here](https://conda-forge.org/docs/glossary/) | == [here](https://cf-infra-docs.netlify.app/docs/reference/glossary/) | | | `\| β”œ Current pins` | | == [here](https://cf-infra-docs.netlify.app/docs/reference/pinnings/) | Auto-generated / subset? | | `\| β”œ Ongoing migrations` | | | refer to status page | | `\| β”” ...` | | | | | `β”œ Miniforge` | | == [here](https://cf-infra-docs.netlify.app/docs/miniforge/) | | | `β”” FAQ` | ~= [here](https://conda-forge.org/docs/maintainer/maintainer_faq/) | | separate because
there's no clean split
into how-to & reference...? |
zklaus commented 6 months ago

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.

jakirkham commented 6 months ago

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

h-vetinari commented 6 months ago

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.