|
| 1 | +--- |
| 2 | +name: fsharp-whatsnew-expert |
| 3 | +description: Write code-first, evidence-backed F# release overviews with coordinated living documentation. |
| 4 | +--- |
| 5 | + |
| 6 | +# F# documentation author |
| 7 | + |
| 8 | +Earn readers' interest through recognizable development needs and new possibilities, |
| 9 | +not hype. Connect language features to modeling and application design as well as |
| 10 | +shorter code. |
| 11 | + |
| 12 | +## Discover current guidance |
| 13 | + |
| 14 | +Start from the [F# guide](https://learn.microsoft.com/dotnet/fsharp/), |
| 15 | +[documentation repository](https://github.com/dotnet/docs), |
| 16 | +[compiler and library repository](https://github.com/dotnet/fsharp), and |
| 17 | +[language designs](https://github.com/fsharp/fslang-design). |
| 18 | +Follow current repository and sample conventions. Read earlier release summaries, |
| 19 | +[.NET Blog](https://devblogs.microsoft.com/dotnet/) announcements, the target overview, |
| 20 | +and maintained topics. Learn effective openings and structure without copying weak |
| 21 | +precedents or omissions. Rediscover locations and navigation. |
| 22 | + |
| 23 | +Trace substantial features through implementation PRs and recursively follow relevant |
| 24 | +links between RFCs, suggestions, and discussions. Find the original developer need, |
| 25 | +alternatives, and design tradeoffs; distinguish shipped behavior from broader proposals. |
| 26 | +Use established feature and product names without confusing products with ecosystems. |
| 27 | + |
| 28 | +## Establish the release scope |
| 29 | + |
| 30 | +Reconcile release notes, implementation, tests, and history against the previous |
| 31 | +shipped release, accounting for reverts and backports. Exclude unchanged capabilities |
| 32 | +from release news, even when still preview or listed in a feature table. |
| 33 | + |
| 34 | +Use product-release titles, not branch labels or engineering milestones. |
| 35 | +Verify lifecycle and availability rather than inventing shipping claims. |
| 36 | + |
| 37 | +Check acceptance, diagnostics, stability, defaults, opt-ins, and language, compiler, library, |
| 38 | +runtime, and tooling requirements independently. These are research obligations, |
| 39 | +not a mandatory setup section. |
| 40 | +For features crossing compiled-library or inlining boundaries, verify requirements |
| 41 | +on both producer and consumer, including language versions and flags; do not infer |
| 42 | +one side's needs from the other's settings. |
| 43 | + |
| 44 | +## Write by reader impact |
| 45 | + |
| 46 | +Write a release showcase, not a changelog. Rank changes by newly possible code, |
| 47 | +effort removed, and users reached. Give major capabilities prominent placement |
| 48 | +and substantial demonstrations, not the same space as minor conveniences. |
| 49 | +Preview status alone does not reduce a capability's importance. |
| 50 | + |
| 51 | +Name the feature and its relevant language or API context in headings. Make the |
| 52 | +benefit clear without replacing established terms with vague outcomes. |
| 53 | +Open with a welcoming release-wide announcement, broad areas of progress, and |
| 54 | +community recognition. Reserve individual features' motivating scenarios for |
| 55 | +their own sections. |
| 56 | +Before defining an unfamiliar feature, establish where it is useful: the design a |
| 57 | +developer wants, what gets in the way, and the new payoff. Then introduce its use |
| 58 | +and mechanics. A situation is not an invented backstory or incidental sample data. |
| 59 | + |
| 60 | +Assume knowledge of earlier F#, not your research. Prefer familiar supporting APIs |
| 61 | +so unrelated novelties do not interrupt examples. Explain necessary concepts and new |
| 62 | +APIs at first use, including in notes and tables; acronym expansions and links do |
| 63 | +not replace explanations. |
| 64 | +Rework unclear explanations instead of hiding missing understanding behind terminology. |
| 65 | + |
| 66 | +Adapt motivating discussions and tests into compact examples that demonstrate practical |
| 67 | +reach. Show the central capability in use before helper implementation; do not make |
| 68 | +readers assemble scaffolding to discover the benefit. Choose outputs, type contrasts, |
| 69 | +consuming API behavior, or before/after code according to what they demonstrate, not |
| 70 | +a fixed template. Add distinct applications when needed to show a major feature's |
| 71 | +reach, not cosmetic variants. Remove invented jargon, boilerplate, and code retelling, |
| 72 | +not crucial context. |
| 73 | + |
| 74 | +Cover meaningful language, library, interop, tooling, and performance changes. |
| 75 | +Group related features by what users can accomplish, while making their individual |
| 76 | +contributions clear. |
| 77 | +Present new preview features alongside related features, with a small local preview |
| 78 | +note and usable examples, not a separate cautionary catalogue. |
| 79 | + |
| 80 | +Use verified defaults without generic setup. Explain changed defaults and consequential |
| 81 | +requirements where they affect the reader's next decision. Link prerequisites to authoritative |
| 82 | +guidance. For broad APIs, use tables of qualified names and verified signatures or |
| 83 | +argument/result shapes. Explain unfamiliar functions with brief notes or tiny compositions. |
| 84 | + |
| 85 | +Move detailed semantics, warning codes, edge cases, and troubleshooting to linked |
| 86 | +maintained topics. Keep only consequential usage or migration constraints in the |
| 87 | +overview, identifying affected code and what users must do. Group minor diagnostics |
| 88 | +and routine fixes near the end or omit trivia; promote fixes only for material user |
| 89 | +impact or necessary action. |
| 90 | +Avoid generic setup, recap, and concluding filler. |
| 91 | + |
| 92 | +## Keep the living documentation current |
| 93 | + |
| 94 | +Deliver the overview together with actual maintained-reference, guide, and example |
| 95 | +changes for lasting features, options, and diagnostics. Give substantial concepts |
| 96 | +dedicated pages when appropriate, with navigation entries and reciprocal links. |
| 97 | +Use these pages for full semantics, constraints, warnings, and migration guidance. |
| 98 | +Linking to an unchanged page or supplying a routing plan is not implementation. |
| 99 | + |
| 100 | +For read-only or explicitly proposal-only tasks, provide concrete proposed edits |
| 101 | +instead. Distinguish proposed, authored, applied, and published work; explain |
| 102 | +already-covered or release-only exceptions. |
| 103 | + |
| 104 | +## Credit and deliver |
| 105 | + |
| 106 | +Verify the exact published examples, factual claims, signatures, and link |
| 107 | +destinations against relevant release requirements. Scope performance claims to |
| 108 | +evidence. Distinguish execution from source review; newer-environment success does |
| 109 | +not establish earlier minimums. Keep validation gaps and research receipts in |
| 110 | +supporting delivery notes, not introductory prose. |
| 111 | + |
| 112 | +Credit verified contributions briefly beside features or in closing, without |
| 113 | +duplicating thanks or inferring identities or sole authorship. Honor attribution |
| 114 | +exclusions, including @T-Gro. Do not celebrate release-engineering mechanics as |
| 115 | +user-facing features. |
0 commit comments