|
| 1 | +<!-- |
| 2 | +Copyright The Shipwright Contributors |
| 3 | +
|
| 4 | +SPDX-License-Identifier: Apache-2.0 |
| 5 | +--> |
| 6 | + |
| 7 | +--- |
| 8 | +title: SHIP-0041 Documentation Restructure |
| 9 | +authors: |
| 10 | + - "@adambkaplan" |
| 11 | +reviewers: |
| 12 | + - TBD |
| 13 | +approvers: |
| 14 | + - TBD |
| 15 | +creation-date: 2025-04-21 |
| 16 | +last-updated: 2025-04-21 |
| 17 | +status: provisional |
| 18 | +see-also: |
| 19 | + - https://github.com/shipwright-io/build/blob/main/docs/proposals/shipwright-website.md |
| 20 | +replaces: [] |
| 21 | +superseded-by: [] |
| 22 | +--- |
| 23 | + |
| 24 | +# Documentation Restructure |
| 25 | + |
| 26 | +## Release Signoff Checklist |
| 27 | + |
| 28 | +- [ ] Enhancement is `implementable` |
| 29 | +- [ ] Design details are appropriately documented from clear requirements |
| 30 | +- [ ] Test plan is defined |
| 31 | +- [ ] Graduation criteria for dev preview, tech preview, GA |
| 32 | +- [ ] User-facing documentation is created in [docs](/docs/) |
| 33 | + |
| 34 | +## Open Questions [optional] |
| 35 | + |
| 36 | +TBD |
| 37 | + |
| 38 | +## Summary |
| 39 | + |
| 40 | +This proposes a restructure of the documentation on [shipwright.io](https://shipwright.io) so that |
| 41 | +it incorporates the CNCF best practices for documentation as outlined in the CNCF |
| 42 | +[tech docs primer](https://github.com/cncf/techdocs/blob/main/docs/sandbox-doc-primer.md). |
| 43 | + |
| 44 | +## Motivation |
| 45 | + |
| 46 | +Our current docs practice has engineers write docs alongside code in respective git repositories. |
| 47 | +The documentation (in Markdown) is then synced to the website repository. We intended on writing |
| 48 | +automation for this process but that never came to fruition. |
| 49 | + |
| 50 | +Keeping docs review alongside code review has led to several negative outcomes: |
| 51 | + |
| 52 | +- Bugs related to broken links, as developers have no means to preview how their content can/should |
| 53 | + be linked. |
| 54 | +- Inability to define or test the Docsy metadata that impacts the docs presentation on the website. |
| 55 | +- Tendency to use "flat" trees to organize documentation in git. |
| 56 | +- Mixing of different documentation |
| 57 | + [types](https://github.com/cncf/techdocs/blob/main/docs/sandbox-doc-primer.md#an-information-model-for-user-documentation) |
| 58 | + within a single article. |
| 59 | + |
| 60 | +This proposal aims to fix these issues through improved content structure and docs review process. |
| 61 | + |
| 62 | +### Goals |
| 63 | + |
| 64 | +- Reduce documentation bugs related to broken links. |
| 65 | +- Present existing content in ways that are relevant to end users and administrators. |
| 66 | +- Encourage end user evaluation and adoption. |
| 67 | +- Provide a single source of truth for documentation. |
| 68 | + |
| 69 | +### Non-Goals |
| 70 | + |
| 71 | +- Migrate off of Docsy and Markdown to another platform/docs stack. |
| 72 | +- Change structure of blogs and other content. |
| 73 | +- Provide multi-version support in the documentation. |
| 74 | +- Improve/overhaul contributor guidelines. |
| 75 | +- Create net new content for missing features. |
| 76 | + |
| 77 | +## Proposal |
| 78 | + |
| 79 | +This is where we get down to the nitty gritty of what the proposal actually is. |
| 80 | + |
| 81 | +### User Stories [optional] |
| 82 | + |
| 83 | +Detail the things that people will be able to do if this is implemented. Include as much detail as |
| 84 | +possible so that people can understand the "how" of the system. The goal here is to make this feel |
| 85 | +real for users without getting bogged down. |
| 86 | + |
| 87 | +#### Quick Start |
| 88 | + |
| 89 | +As a developer evaluating Shipwright, I want a quick start guide to demonstrate the project's value. |
| 90 | + |
| 91 | +#### Concept Articles |
| 92 | + |
| 93 | +As a developer using Shipwright, I want to understand what the different API objects represent. |
| 94 | + |
| 95 | +#### Task Articles |
| 96 | + |
| 97 | +As a developer using Shipwright, I want to know how to perform specific types of builds. |
| 98 | + |
| 99 | +#### Reference Articles |
| 100 | + |
| 101 | +As a developer using Shipwright, I want to review the full API specification so that I can |
| 102 | +configure Builds for my specific situation. |
| 103 | + |
| 104 | +### Implementation Notes |
| 105 | + |
| 106 | +#### Key Personas |
| 107 | + |
| 108 | +The documentation will be updated with the following user personas in mind: |
| 109 | + |
| 110 | +- **Evaluators**: These are leaders who are considering Shipwright's merits for a team/organization. |
| 111 | +- **Developers**: These are individuals who use Shipwright to build their applications on a daily |
| 112 | + basis. These may also be platform engineers/architects who which to incorporate Shipwright into |
| 113 | + CI/CD processes. |
| 114 | +- **Administrators**: These are individuals who deploy and manage Shipwright for others. |
| 115 | + |
| 116 | +#### Overall Structure |
| 117 | + |
| 118 | +Shipwright's documentation will be updated to contain four main sections: |
| 119 | + |
| 120 | +- "Quick Start" |
| 121 | +- "Concepts" |
| 122 | +- "How To" |
| 123 | +- "Reference" |
| 124 | + |
| 125 | +**_Quick Start_** will contain a small number of articles aimed to help evaluators demonstrate |
| 126 | +Shipwright for others. The goal is to get an individual from "zero" to a successful "hello world" |
| 127 | +build as quickly as possible. |
| 128 | + |
| 129 | +**_Concepts_** will contain articles that explain "what" something is in Shipwright, and "why" it |
| 130 | +exists. It will also help developers and evaluators understand how the different parts of |
| 131 | +Shipwright relate to one another. |
| 132 | + |
| 133 | +**_How To_** will contain articles that explain how to perform specific tasks. These may be divided |
| 134 | +into sub-sections or groups, such as "Installation", "Running Builds", and so forth. |
| 135 | + |
| 136 | +**_Reference_** will contain reference documentation for developers and administrators. Ideally |
| 137 | +some of this content is generated directly from source code. |
| 138 | + |
| 139 | +Accessing the main [docs page](https://shipwright.io/docs) will direct visitors to a landing page, |
| 140 | +with clear links to these other sections. |
| 141 | + |
| 142 | +#### Docs Migration |
| 143 | + |
| 144 | +With the new outline in place, the existing content will be moved to new articles in appropriate |
| 145 | +sections. Content should be moved in focused stages to ensure continuity. Changes to structure and |
| 146 | +format should be expected. Net new content should be minimized to narrow the scope of changes. |
| 147 | + |
| 148 | +#### Redirects |
| 149 | + |
| 150 | +For content that is moved, Hugo [aliases](https://gohugo.io/methods/page/aliases/) should be used |
| 151 | +to automatically configure redirects. |
| 152 | + |
| 153 | +#### Removal of "in-tree" Documentation |
| 154 | + |
| 155 | +Once content has been restructured, existing "in-tree" end user documentation in the `build`, |
| 156 | +`cli`, and `operator` repositories should be migrated to the website repository. Not all docs that |
| 157 | +are currently "in-tree" need to be migrated - only those that are relevant to the evaluator, |
| 158 | +developer, or administrator personas described earlier. Once completed, this content should be |
| 159 | +removed and replaced with a link to the appropriate Shipwright website article. |
| 160 | + |
| 161 | +Moving forward, documentation can be submitted in one of two ways: |
| 162 | + |
| 163 | +- Filing an appropriate PR against the `website` repository. |
| 164 | +- Adding appropriate code comments or content that leads to auto-generated reference content. |
| 165 | + |
| 166 | +Shipwright maintainers should insist that all features provide documentation at minimum via |
| 167 | +generated reference content. Ideally contributors or the community work together to produce other |
| 168 | +forms of content. |
| 169 | + |
| 170 | + |
| 171 | +### Test Plan |
| 172 | + |
| 173 | +Existing CI/CD infrastructure will be utilized to validate the new docs structure is deployable. |
| 174 | + |
| 175 | +### Release Criteria |
| 176 | + |
| 177 | +#### Removing a deprecated feature [if necessary] |
| 178 | + |
| 179 | +N/A |
| 180 | + |
| 181 | +#### Upgrade Strategy [if necessary] |
| 182 | + |
| 183 | +N/A |
| 184 | + |
| 185 | +### Risks and Mitigations |
| 186 | + |
| 187 | +TBD |
| 188 | + |
| 189 | +> What are the risks of this proposal and how do we mitigate? Think broadly. For example, consider |
| 190 | +> both security and how this will impact the larger Shipwright ecosystem. |
| 191 | +
|
| 192 | +> How will security be reviewed and by whom? How will UX be reviewed and by whom? |
| 193 | +
|
| 194 | +## Drawbacks |
| 195 | + |
| 196 | +TBD |
| 197 | + |
| 198 | +> The idea is to find the best form of an argument why this enhancement should _not_ be implemented. |
| 199 | +
|
| 200 | +## Alternatives |
| 201 | + |
| 202 | +TBD |
| 203 | + |
| 204 | +> Similar to the `Drawbacks` section the `Alternatives` section is used to highlight and record other |
| 205 | +> possible approaches to delivering the value proposed by an enhancement. |
| 206 | +
|
| 207 | +## Infrastructure Needed [optional] |
| 208 | + |
| 209 | +No new infrastructure. |
| 210 | + |
| 211 | +## Implementation History |
| 212 | + |
| 213 | +- 2025-04-21: Created as `provisional` |
0 commit comments