# Common Docs on the Carvel Website See [this issue for the _why_](https://github.com/vmware-tanzu/carvel/issues/58) of this proposal. PRs: - ~~https://github.com/vmware-tanzu/carvel/pull/544~~ - ~~https://github.com/vmware-tanzu/carvel/pull/545~~ ## Terminology - **common doc**: documentation that is the same or similar across subprojects (such as "How to Contribute"). - **micro-site**: a subproject's website (example: https://carvel.dev/ytt/). ## Goals 1. Make common docs **easily discoverable** for the users. 2. Make common docs **maintainable** for the maintainers. 3. Deliverable by September 9 for the CNCF Sandbox Review. ## Proposal 1. Single source of truth for all common docs live on the website. - Each micro-site has the following links in their docs: - Contributing - Code of Conduct - Security Policy - Development Guidelines - These all link to the same common doc. - example: https://carvel.dev/shared/docs/latest/security-policy/ - All GitHub repo "placeholder markdown" files (e.g. CODE_OF_CONDUCT.md) link to the common doc on the website. - [_Cutting this scope for now since it requires additional structural changes_] For Development Guidelines, we need to incorporate tool-specific guidance (e.g. https://github.com/vmware-tanzu/carvel-kapp-controller/blob/develop/docs/dev.md)? - We could have a Development Guide section with two links: `Developing <subproject>` and `Carvel Development Guidelines` (common doc) 1. Introduce a dropdown option on the main website to navigate to the common docs - add `Project Docs` to Projects dropdown ### Cut from scope 1. A solution for cross-tool documentation (such as guides). Currently, we don't have this content. Right now, our best option is to use micro-sites and blog posts. ## Research from other projects ### [Argo](https://argoproj.github.io/) - They have 4 subprojects. This feels like a familiar separation of subprojects as Carvel. - The four subprojects are listed across the top of the landing page. - Each subproject has its own landing page. This landing page provides high-level information and then directs to a documentation-specific site (e.g. https://argoproj.github.io/workflows/). - The `Get Started` call-to-action (CTA) leads to a subproject's Getting Started page. - Each subproject's documentation-specific site has its own listing for common documentation. There is not any common documentation that is shared between the projects. - Each subproject's documentation-specific site has certain topics: - Overview (Home) - Getting Started - Concepts - Installation - FAQ - Security (which lead to github repo) - Developer Guide / How to Contribute - Releases (just links to github) - Roadmap - Blog (this is shared across subprojects) - There are some topics that could be useful but are not present on all subprojects: - Understand the Basics (links to build up a fundamental understanding of the underlying technologies (e.g. kubernetes, kustomize, helm)) - User Guide - Operator Manual - Tutorials Pros: - Clean landing pages. Docs complexity is contained to docs-specific sites. - Clear boundaries. Each subproject is responsible for its own docs only. Cons: - There is not a direct way to navigate between subprojects. The best way is to go back to the main project page. - Minimal overlap of docs means more to maintain. ?: - Not sure how they handle subprojects that have overlap in their workflows. ### [Flux](https://fluxcd.io/) - They have a landing page with a lot of info on it. Clear CTA for getting started. - Though flux is a toolkit, the components all seem to be similar (i.e. controllers). - They have a dropdown for common documentation that's present at all times (under Project). - Their docs are mostly shared. Flux and Flagger have separate docs-specific sites. - There are dropdowns to dig into Guides, Use Cases, Migrations, Toolkit Components, Toolkit Dev Guides, CLI. Pros: - It's easy enough to navigate around the site. Cons: -