|
| 1 | +# Project Overview |
| 2 | + |
| 3 | +This project is a static website created using Hugo and markdown files. The purpose of the content is to explain how-to topics to software developers targeting various Arm platforms. |
| 4 | + |
| 5 | +Assume the audience is made up of Arm software developers. Bias information toward Arm platforms. For Linux, assume systems are aarch64 architecture and not x86. Readers also use macOS and Windows on Arm systems, and assume Arm architecture where relevant. |
| 6 | + |
| 7 | +## Project structure |
| 8 | + |
| 9 | +The key directories are: |
| 10 | + |
| 11 | +### Top Level Structure |
| 12 | + |
| 13 | + /content - The main directory containing all Learning Paths and install guides as markdown files |
| 14 | + /themes - HTML templates and styling elements that render the content into the final website |
| 15 | + /tools - Python scripts for automated website integrity checking |
| 16 | + config.toml - High-level Hugo configuration settings |
| 17 | + |
| 18 | +### Content Organization: |
| 19 | + |
| 20 | +The /content directory is organized into: |
| 21 | + |
| 22 | +- learning-paths/ Core learning content organized by categories: |
| 23 | + -- embedded-and-microcontrollers/ MCU, IoT, and embedded development topics |
| 24 | + -- servers-and-cloud-computing/ Server, cloud, and enterprise computing topics |
| 25 | + -- mobile-graphics-and-gaming/ Mobile app development, graphics, and gaming |
| 26 | + -- cross-platform/ Cross-platform development and general programming topics, these appear in multiple categories on the website |
| 27 | + -- laptops-and-desktops/ Desktop application development, primarily Windows on Arm and macOS |
| 28 | + -- automotive/ Automotive and ADAS development |
| 29 | + -- iot/ IoT-specific Learning Paths |
| 30 | + |
| 31 | +- install-guides/ - Tool installation guides with supporting subdirectories organized by tool categories like docker/, gcc/, license/, browsers/, plus an _images/ directory for screenshots and diagrams |
| 32 | + |
| 33 | +These are special directories and not used for regular content creation: |
| 34 | + migration/ Migration guides and resources, this maps to https://learn.arm.com/migration |
| 35 | + lists/ Content listing and organization files, this maps to https://learn.arm.com/lists |
| 36 | + stats/ Website statistics and analytics, this maps to https://learn.arm.com/stats |
| 37 | + |
| 38 | +The /content directory is the primary workspace where contributors add new Learning Paths as markdown files, organized into category-specific subdirectories that correspond to the different learning path topics available on the site at https://learn.arm.com/. |
| 39 | + |
| 40 | +## Content requirements |
| 41 | + |
| 42 | +Read the files in the directory `content/learning-paths/cross-platform/_example-learning-path` for information about how Learning Path content should be created. Some additional help is listed below. |
| 43 | + |
| 44 | +### Content structure |
| 45 | + |
| 46 | +Each Learning Path must have an _index.md file and a _next-steps.md file. The _index.md file contains the main content of the Learning Path. The _next-steps.md file contains links to related content and is included at the end of the Learning Path. |
| 47 | + |
| 48 | +The _index.md file should contain the following front matter and content sections: |
| 49 | + |
| 50 | +Front Matter (YAML format): |
| 51 | +- `title`: Imperative heading following the [verb] + [technology] + [outcome] format |
| 52 | +- `weight`: Numerical ordering for display sequence, weight is 1 for _index.md and each page is ordered by weight, no markdown files should have the same weight in a directory |
| 53 | +- `layout`: Template type (usually "learningpathall") |
| 54 | +- `minutes_to_complete`: Realistic time estimate for completion |
| 55 | +- `prerequisites`: List of required knowledge, tools, or prior learning paths |
| 56 | +- `author_primary`: Main contributor's name, multiple authors can be listed separated using - on new lines |
| 57 | +- `subjects`: Technology categories for filtering and search, this is a closed list and must match one of the subjects listed on https://learn.arm.com/learning-paths/cross-platform/_example-learning-path/write-2-metadata/ |
| 58 | +- `armips`: Relevant Arm IP, stick to Neoverse, Cortex-A, Cortex-M, etc. Don't list specific CPU models or Arm architecture versions |
| 59 | +- `tools_software_languages`: Open category listing Programming languages, frameworks, and development tools used |
| 60 | +- `skilllevels`: Skill levels allowed are only Introductory and Advanced |
| 61 | +- `operatingsystems`: Operating systems used, must match the closed list on https://learn.arm.com/learning-paths/cross-platform/_example-learning-path/write-2-metadata/ |
| 62 | + |
| 63 | + |
| 64 | +All Learning Paths should generally include: |
| 65 | +Title: [Imperative verb] + [technology/tool] + [outcome] |
| 66 | +Introduction paragraph: Context + user goal + value proposition |
| 67 | +Prerequisites section with explicit requirements and links |
| 68 | +Learning objectives: 3-4 bulleted, measurable outcomes with action verbs |
| 69 | +Step-by-step sections with logical progression |
| 70 | +Clear next steps/conclusion |
| 71 | + |
| 72 | +For title formatting: |
| 73 | +- MUST use imperative voice ("Deploy", "Configure", "Build", "Create") |
| 74 | +- MUST include SEO keywords (technology names, tools) |
| 75 | +- Examples: "Deploy applications on Arm servers", "Configure Arm processors for optimal performance" |
| 76 | + |
| 77 | +Learning Path should always be capitalized. |
| 78 | + |
| 79 | +### Writing style |
| 80 | + |
| 81 | +Voice and Tone: |
| 82 | +- Second person ("you", "your") - NEVER first person ("I", "we") |
| 83 | +- Active voice - AVOID passive constructions |
| 84 | +- Present tense for descriptions |
| 85 | +- Imperative mood for commands |
| 86 | +- Confident and developer-friendly tone |
| 87 | +- Encouraging language for complex tasks |
| 88 | + |
| 89 | +Sentence Structure: |
| 90 | +- Average 15-20 words per sentence |
| 91 | +- Split complex sentences for scalability |
| 92 | +- Plain English - avoid jargon overload |
| 93 | +- US spellings required (organize/optimize/realize, not organise/optimise/realise) |
| 94 | +- "Arm" capitalization required (Arm processors/Neoverse, never ARM or arm; exceptions: "arm64" and "aarch64" are permitted in code, commands, and outputs) |
| 95 | +- Define acronyms on first use |
| 96 | +- Parallel structure in all lists |
| 97 | + |
| 98 | +### Arm naming and architecture terms |
| 99 | + |
| 100 | +- Use Arm for the brand in prose (for example, "Arm processors", "Arm servers"). |
| 101 | +- Use arm64 or aarch64 for the CPU architecture; these are acceptable and interchangeable labels. Prefer whichever term a tool, package, or OS uses natively. |
| 102 | +- Do not use ARM in any context. |
| 103 | +- ARM64 is used by Windows on Arm and Microsoft documentation, so it is acceptable to use ARM64 when specifically referring to Windows on Arm. |
| 104 | +- In code blocks, CLI flags, package names, file paths, and outputs, keep the exact casing used by the tool (for example, --arch arm64, uname -m → aarch64). |
| 105 | + |
| 106 | +### Heading guidelines |
| 107 | + |
| 108 | +HEADING TYPES: |
| 109 | +- Conceptual headings: When explaining technology/motivation ("What is containerization?") |
| 110 | +- Imperative headings: When user takes action ("Configure the database") |
| 111 | +- Interrogative headings: For FAQ content ("How does Arm differ from x86?") |
| 112 | +- ALL headings: Use sentence case (first word capitalized, rest lowercase except proper nouns) |
| 113 | + |
| 114 | +HIERARCHY: |
| 115 | +H1: Page title (imperative + technology + outcome) |
| 116 | +H2: Major workflow steps or conceptual sections |
| 117 | +H3: Sub-procedures or detailed explanations |
| 118 | +H4: Specific technical details or troubleshooting |
| 119 | + |
| 120 | +### Code samples and formatting |
| 121 | + |
| 122 | +CONTEXT-BEFORE-CODE RULE: |
| 123 | +- ALWAYS provide explanation before code blocks |
| 124 | +- Format: [What it does] → [Code] → [Expected outcome] → [Key parameters] |
| 125 | + |
| 126 | +CODE FORMATTING: |
| 127 | + |
| 128 | +Use markdown tags for programming languages like bash, python, yaml, json, etc. |
| 129 | + |
| 130 | +Use console or bash for general commands. Try to use the same one throughout a Learning Path. |
| 131 | + |
| 132 | +Correct format: |
| 133 | + |
| 134 | +Use the following command to install required packages: |
| 135 | + |
| 136 | +```bash |
| 137 | +sudo apt-get update && sudo apt-get install -y python3 nodejs |
| 138 | +``` |
| 139 | + |
| 140 | +Use the output tag to show expected command output. |
| 141 | + |
| 142 | +```output |
| 143 | +Reading package lists... Done |
| 144 | +Building dependency tree... Done |
| 145 | +``` |
| 146 | + |
| 147 | +FORMATTING STANDARDS: |
| 148 | +- **Bold text**: UI elements (buttons, menu items, field names) |
| 149 | +- **Italic text**: Emphasis and new terms |
| 150 | +- **Code formatting**: Use for file names, commands, code elements |
| 151 | + |
| 152 | +Use shortcodes for common pitfalls, warnings, important notes |
| 153 | + |
| 154 | +{{% notice Note %}} |
| 155 | +An example note to pay attention to. |
| 156 | +{{% /notice %}} |
| 157 | + |
| 158 | +{{% notice Warning %}} |
| 159 | +A warning about a common pitfall. |
| 160 | +{{% /notice %}} |
| 161 | + |
| 162 | +## Avoid looking like AI-generated content |
| 163 | + |
| 164 | +### Bullet List Management |
| 165 | +WARNING SIGNS OF OVER-BULLETING: |
| 166 | +- More than 3 consecutive sections using bullet lists |
| 167 | +- Bullet points that could be combined into narrative paragraphs |
| 168 | +- Lists where items don't have parallel structure |
| 169 | +- Bullet points that are actually full sentences better suited for paragraphs |
| 170 | + |
| 171 | +CONVERSION STRATEGY: |
| 172 | + |
| 173 | +Use flowing narrative instead of excessive bullets. |
| 174 | + |
| 175 | +For example, use this format instead of the list below it. |
| 176 | + |
| 177 | +Arm processors deliver improved performance while enhancing security through hardware-level protections. This architecture provides enhanced scalability for cloud workloads and reduces operational costs through energy efficiency. |
| 178 | + |
| 179 | +Key benefits include: |
| 180 | +• Improved performance |
| 181 | +• Better security |
| 182 | +• Enhanced scalability |
| 183 | +• Reduced costs |
| 184 | + |
| 185 | +### Natural Writing Patterns |
| 186 | + |
| 187 | +HUMAN-LIKE TECHNIQUES: |
| 188 | +- Vary sentence length: Mix short, medium, and complex sentences |
| 189 | +- Use transitional phrases: "Additionally", "However", "As a result", "Furthermore" |
| 190 | +- Include contextual explanations: Why something matters, not just what to do |
| 191 | +- Add relevant examples: Real-world scenarios that illustrate concepts |
| 192 | +- Connect ideas logically: Show relationships between concepts and steps |
| 193 | + |
| 194 | +CONVERSATIONAL ELEMENTS: |
| 195 | + |
| 196 | +Instead of: "Execute the following command:" |
| 197 | +Use: "Now that you've configured the environment, run the following command to start the service:" |
| 198 | + |
| 199 | +Instead of: "This provides benefits:" |
| 200 | +Use: "You'll notice several advantages with this approach, particularly when working with..." |
| 201 | + |
| 202 | +## Hyperlink guidelines |
| 203 | + |
| 204 | +Some links are useful in content, but too many links can be distracting and readers will leave the platform following them. Try to put only necessary links in the content and put other links in the "Next Steps" section at the end of the content. Flag any page with too many links for review. |
| 205 | + |
| 206 | +### Internal links |
| 207 | + |
| 208 | +Use a relative path format for internal links that are on learn.arm.com. |
| 209 | +For example, use: descriptive link text pointing to a relative path like learning-paths/category/path-name/ |
| 210 | + |
| 211 | +Examples: |
| 212 | +- learning-paths/servers-and-cloud-computing/csp/ (Arm-based instance) |
| 213 | +- learning-paths/cross-platform/docker/ (Docker learning path) |
| 214 | + |
| 215 | +### External links |
| 216 | + |
| 217 | +Use the full URL for external links that are not on learn.arm.com, these open in a new tab. |
| 218 | + |
| 219 | +This instruction set enables high-quality Arm Learning Paths content while maintaining consistency and technical accuracy. |
| 220 | + |
| 221 | + |
| 222 | + |
0 commit comments