|
| 1 | +--- |
| 2 | +title: "Site Iteration Cadence" |
| 3 | +description: "Content production, site maintenance, PR/Issue handling, and release cadence for Tutorial_AwesomeModernCPP" |
| 4 | +chapter: 1 |
| 5 | +order: 1 |
| 6 | +tags: ["工程实践"] |
| 7 | +--- |
| 8 | + |
| 9 | +# Site Iteration Cadence |
| 10 | + |
| 11 | +Tutorial_AwesomeModernCPP is driven primarily by content production. Version numbers measure the size of content progress. Site maintenance, PRs, and Issues support the main content path instead of taking it over. |
| 12 | + |
| 13 | +## Basic Rhythm |
| 14 | + |
| 15 | +Maintainers usually run a lightweight iteration every 2 to 3 days. Each iteration should have one main goal: |
| 16 | + |
| 17 | +- Finish a related group of content. |
| 18 | +- Fix a batch of reading problems. |
| 19 | +- Complete code, links, or translations for a chapter. |
| 20 | +- Handle clearly actionable PRs or Issues. |
| 21 | + |
| 22 | +One iteration does not need to cover every direction. Volume roadmaps, long-term candidates, and future themes remain in `todo/`. Temporary article-level ideas should not become new governance files. |
| 23 | + |
| 24 | +## Per-Iteration Flow |
| 25 | + |
| 26 | +Each maintenance iteration follows this order: |
| 27 | + |
| 28 | +1. Review the current P0/P1 TODO goals and choose one main content target. |
| 29 | +2. Quickly check Issues and PRs, handling only items that are actionable, release-relevant, or reader-blocking. |
| 30 | +3. Complete the content, example code, indexes, and required English/Chinese sync for the iteration. |
| 31 | +4. Run the quality checks that match the change scope. |
| 32 | +5. If the change is reader-visible, update the changelog or prepare the next release entry. |
| 33 | + |
| 34 | +PRs and Issues should be checked at least once per iteration. Urgent problems may interrupt the cycle, such as broken site builds, important 404 pages, misleading example code, or external contributions that need quick feedback. |
| 35 | + |
| 36 | +## Version Cadence |
| 37 | + |
| 38 | +Version numbers describe the size of change; they should not force the writing schedule. |
| 39 | + |
| 40 | +- patch: typo fixes, links, site fixes, and low-risk text corrections. |
| 41 | +- minor: one volume or topic has clearly moved forward, giving readers a new learning path or complete capability. |
| 42 | +- major: TODO structure, site architecture, or the content system changes substantially. |
| 43 | + |
| 44 | +Patch releases can ship as needed. Minor releases usually use a 2 to 4 week observation window and ship only when a topic forms a complete increment. Major releases should stay rare to avoid repeatedly changing reader and contributor entry points. |
| 45 | + |
| 46 | +## Tags and Releases |
| 47 | + |
| 48 | +Tags and GitHub Releases are used separately. Tags mark lightweight maintenance checkpoints so readers can see ongoing progress through the README badge. GitHub Releases are reserved for content versions that readers should explicitly notice. |
| 49 | + |
| 50 | +- Patch-level fixes may be tagged without creating a GitHub Release. |
| 51 | +- Minor topic increments should usually create a Release with a changelog. |
| 52 | +- Major structural changes must create a Release and explain migration impact. |
| 53 | + |
| 54 | +This keeps project activity visible without overwhelming readers with Release notifications. |
| 55 | + |
| 56 | +## Definition of Done |
| 57 | + |
| 58 | +A content iteration should usually satisfy these conditions: |
| 59 | + |
| 60 | +- The article can be read independently, with terms and C++ standard versions clearly marked. |
| 61 | +- Related volume pages, chapter indexes, or navigation entries are updated. |
| 62 | +- Example code in the article can compile, or platform/toolchain limits are explicitly stated. |
| 63 | +- Key Chinese and English pages stay in sync; community drafts and low-priority long-form notes may be translated later. |
| 64 | +- Internal links pass checks, and the production build succeeds. |
| 65 | + |
| 66 | +For local fixes, run only the relevant checks. Before a release, run the full pre-release checks. |
| 67 | + |
| 68 | +## PR and Issue Handling |
| 69 | + |
| 70 | +Issues are for actionable problems, Discussions are for open-ended learning conversations, and PRs are for concrete changes. |
| 71 | + |
| 72 | +Handle items in this order: |
| 73 | + |
| 74 | +1. Problems that block builds, deployment, or major reading paths. |
| 75 | +2. Clear, low-risk fixes already submitted as PRs. |
| 76 | +3. Content suggestions directly related to the current iteration theme. |
| 77 | +4. Learning questions that can become QA entries, appendix material, or future TODO items. |
| 78 | + |
| 79 | +Learning questions should not fill the Issue list directly. High-quality discussions can be summarized into FAQ entries, appendix pages, or links from the main content. |
| 80 | + |
| 81 | +## Changelog Principles |
| 82 | + |
| 83 | +The changelog should describe reader-visible changes, not just file counts. |
| 84 | + |
| 85 | +Prefer recording: |
| 86 | + |
| 87 | +- Which learning path was added or completed. |
| 88 | +- Which examples can now run or be verified. |
| 89 | +- Which site entries, search behavior, navigation, or community flows improved. |
| 90 | +- Which contributors helped fix specific problems. |
| 91 | + |
| 92 | +File counts, line counts, and commit counts can be supporting data, but they should not replace the explanation of what changed. |
| 93 | + |
| 94 | +## Common Checks |
| 95 | + |
| 96 | +Choose checks by change scope during daily maintenance: |
| 97 | + |
| 98 | +```bash |
| 99 | +pnpm check:links |
| 100 | +python3 scripts/validate_frontmatter.py |
| 101 | +python3 scripts/check_quality.py documents/ |
| 102 | +python3 scripts/build_examples.py --host |
| 103 | +``` |
| 104 | + |
| 105 | +Before a release, run: |
| 106 | + |
| 107 | +```bash |
| 108 | +pnpm check:links |
| 109 | +pnpm build |
| 110 | +pnpm coverage:update |
| 111 | +python3 scripts/validate_frontmatter.py |
| 112 | +python3 scripts/check_quality.py documents/ |
| 113 | +python3 scripts/build_examples.py --host |
| 114 | +``` |
| 115 | + |
| 116 | +If STM32 examples changed, also run: |
| 117 | + |
| 118 | +```bash |
| 119 | +python3 scripts/build_examples.py --stm32 |
| 120 | +``` |
0 commit comments