diff --git a/package-lock.json b/package-lock.json
index 73394bf830..99d749aae1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1530,7 +1530,7 @@
},
"node_modules/@jridgewell/source-map": {
"version": "0.3.11",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.5",
@@ -2630,6 +2630,7 @@
"cpu": [
"arm"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2643,6 +2644,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2654,6 +2656,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2667,6 +2670,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2680,6 +2684,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2693,6 +2698,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2706,6 +2712,7 @@
"cpu": [
"arm"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2719,6 +2726,7 @@
"cpu": [
"arm"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2732,6 +2740,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2745,6 +2754,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2758,6 +2768,7 @@
"cpu": [
"loong64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2771,6 +2782,7 @@
"cpu": [
"ppc64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2784,6 +2796,7 @@
"cpu": [
"riscv64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2797,6 +2810,7 @@
"cpu": [
"riscv64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2810,6 +2824,7 @@
"cpu": [
"s390x"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2823,6 +2838,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2836,6 +2852,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2849,6 +2866,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2862,6 +2880,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2875,6 +2894,7 @@
"cpu": [
"ia32"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2888,6 +2908,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -2901,6 +2922,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -3935,7 +3957,7 @@
},
"node_modules/@types/node": {
"version": "24.9.1",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"dependencies": {
"undici-types": "~7.16.0"
@@ -5645,7 +5667,7 @@
},
"node_modules/buffer-from": {
"version": "1.1.2",
- "devOptional": true,
+ "dev": true,
"license": "MIT"
},
"node_modules/bundle-name": {
@@ -6444,7 +6466,7 @@
},
"node_modules/copy-anything": {
"version": "2.0.6",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
@@ -8243,7 +8265,7 @@
},
"node_modules/graceful-fs": {
"version": "4.2.11",
- "devOptional": true,
+ "dev": true,
"license": "ISC"
},
"node_modules/has-flag": {
@@ -8708,6 +8730,7 @@
},
"node_modules/image-size": {
"version": "0.5.5",
+ "dev": true,
"license": "MIT",
"optional": true,
"peer": true,
@@ -9114,7 +9137,7 @@
},
"node_modules/is-what": {
"version": "3.14.1",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"peer": true
},
@@ -9239,7 +9262,7 @@
},
"node_modules/jiti": {
"version": "2.6.1",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"bin": {
"jiti": "lib/jiti-cli.mjs"
@@ -9518,7 +9541,7 @@
},
"node_modules/less": {
"version": "4.5.1",
- "devOptional": true,
+ "dev": true,
"hasInstallScript": true,
"license": "Apache-2.0",
"peer": true,
@@ -9570,6 +9593,7 @@
},
"node_modules/less/node_modules/errno": {
"version": "0.1.8",
+ "dev": true,
"license": "MIT",
"optional": true,
"peer": true,
@@ -9582,6 +9606,7 @@
},
"node_modules/less/node_modules/make-dir": {
"version": "2.1.0",
+ "dev": true,
"license": "MIT",
"optional": true,
"peer": true,
@@ -9595,6 +9620,7 @@
},
"node_modules/less/node_modules/mime": {
"version": "1.6.0",
+ "dev": true,
"license": "MIT",
"optional": true,
"peer": true,
@@ -9607,6 +9633,7 @@
},
"node_modules/less/node_modules/semver": {
"version": "5.7.2",
+ "dev": true,
"license": "ISC",
"optional": true,
"peer": true,
@@ -9616,6 +9643,7 @@
},
"node_modules/less/node_modules/source-map": {
"version": "0.6.1",
+ "dev": true,
"license": "BSD-3-Clause",
"optional": true,
"peer": true,
@@ -10664,6 +10692,7 @@
},
"node_modules/needle": {
"version": "3.3.1",
+ "dev": true,
"license": "MIT",
"optional": true,
"peer": true,
@@ -10680,6 +10709,7 @@
},
"node_modules/needle/node_modules/iconv-lite": {
"version": "0.6.3",
+ "dev": true,
"license": "MIT",
"optional": true,
"peer": true,
@@ -11170,7 +11200,7 @@
},
"node_modules/parse-node-version": {
"version": "1.0.1",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"peer": true,
"engines": {
@@ -11324,7 +11354,7 @@
},
"node_modules/pify": {
"version": "4.0.1",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
@@ -12329,6 +12359,7 @@
},
"node_modules/prr": {
"version": "1.0.1",
+ "dev": true,
"license": "MIT",
"optional": true,
"peer": true
@@ -13777,14 +13808,14 @@
},
"node_modules/safer-buffer": {
"version": "2.1.2",
- "devOptional": true,
+ "dev": true,
"license": "MIT"
},
"node_modules/sax": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz",
"integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==",
- "devOptional": true,
+ "dev": true,
"license": "BlueOak-1.0.0",
"engines": {
"node": ">=11.0.0"
@@ -14116,7 +14147,7 @@
},
"node_modules/source-map-support": {
"version": "0.5.21",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"dependencies": {
"buffer-from": "^1.0.0",
@@ -14125,7 +14156,7 @@
},
"node_modules/source-map-support/node_modules/source-map": {
"version": "0.6.1",
- "devOptional": true,
+ "dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
@@ -15151,7 +15182,7 @@
},
"node_modules/terser": {
"version": "5.44.0",
- "devOptional": true,
+ "dev": true,
"license": "BSD-2-Clause",
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
@@ -15377,7 +15408,7 @@
},
"node_modules/tslib": {
"version": "2.8.1",
- "devOptional": true,
+ "dev": true,
"license": "0BSD"
},
"node_modules/tsscmp": {
@@ -15444,7 +15475,7 @@
},
"node_modules/typescript": {
"version": "5.9.3",
- "devOptional": true,
+ "dev": true,
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
@@ -15529,7 +15560,7 @@
},
"node_modules/undici-types": {
"version": "7.16.0",
- "devOptional": true,
+ "dev": true,
"license": "MIT"
},
"node_modules/unicorn-magic": {
@@ -15893,6 +15924,7 @@
"cpu": [
"ppc64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -15909,6 +15941,7 @@
"cpu": [
"arm"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -15925,6 +15958,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -15941,6 +15975,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -15955,6 +15990,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -15971,6 +16007,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -15987,6 +16024,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16003,6 +16041,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16019,6 +16058,7 @@
"cpu": [
"arm"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16035,6 +16075,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16051,6 +16092,7 @@
"cpu": [
"ia32"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16067,6 +16109,7 @@
"cpu": [
"loong64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16083,6 +16126,7 @@
"cpu": [
"mips64el"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16099,6 +16143,7 @@
"cpu": [
"ppc64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16115,6 +16160,7 @@
"cpu": [
"riscv64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16131,6 +16177,7 @@
"cpu": [
"s390x"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16147,6 +16194,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16163,6 +16211,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16179,6 +16228,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16195,6 +16245,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16211,6 +16262,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16227,6 +16279,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16243,6 +16296,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16259,6 +16313,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16275,6 +16330,7 @@
"cpu": [
"ia32"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -16291,6 +16347,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
diff --git a/packages/stacks-docs/src/docs/public/community/audiences.md b/packages/stacks-docs/src/docs/public/community/audiences.md
new file mode 100644
index 0000000000..a8045b5b81
--- /dev/null
+++ b/packages/stacks-docs/src/docs/public/community/audiences.md
@@ -0,0 +1,67 @@
+---
+title: "Audiences"
+description: "The three groups you’ll be writing for on Meta — and how to tailor calls-to-action for each."
+updated: 2026-06-23
+---
+
+
+
+[Meta sites](/community/terminology#meta--what-is-it-and-how-does-it-work) are the backbone of Stack Overflow’s Public Platforms — spaces where the communities discuss how their sites should work, raise issues, and influence decisions. For sites with their own domain, you can find the respective Meta sites at `meta.` + the domain (e.g., `meta.stackoverflow.com`); for subdomain sites, you can find them at `sitename.meta.stackexchange.com` (e.g., `math.meta.stackexchange.com`).
+
+## Introduction
+
+Writing on Meta sites involves addressing a few different audiences, sometimes in a single post. When addressing the communities, one task before us is rebuilding trust with a technical, opinioned, and change-averse user base. At the same time, we must inform and entice new or less-seasoned users who are looking to possibly do more. We must also re-engage users who have shifted from being contributors to more passive readers over time. We need to speak to all groups. Communications authors may choose to make any of these groups their primary audience, but we must remain conscious of all groups when writing to have maximum effectiveness.
+
+For the purposes of these guidelines, we’re roughly dividing the people you might need to communicate with into three somewhat arbitrary groups, whose boundaries might be somewhat fuzzy on occasion.
+
+## Seasoned users
+
+**Seasoned users** are perhaps slow to trust or get excited about something that is new, or a shift from “the way things have always been.” Every good public communication is an opportunity to earn their confidence and build trust, and every bad public communication risks confirming their suspicions and fueling skepticism. The goal isn’t just to inform, but to convey that the company understands their craft, respects their investment of time on the platform, and values their opinions. Empathy is key: recognize the disruption that platform changes may cause for seasoned users. When speaking to seasoned users, write as a peer seeking collaboration. Use language that minimizes the emotional distance between you and the reader. **Calls-to-action are for collaboration and feedback.**
+
+This group includes the traditional, somewhat loosely-defined roles we often refer to in product development: active/engaged user, contributor, curator, leader, moderator. When crafting communication focused on actions some of these groups perform (or that we hope they perform), it’s important to understand the role being targeted. But note that there is much overlap in those roles, and an individual user’s actions may fit into multiple roles.
+
+ “We’ve built this new tool.” “We understand the pain points you have with the existing workflow. To address X and Y, our proposed solutions are A and B.” “These restrictions have been in place since X, with the intention of preventing Y, and our data has shown that Z, so we’re making the decision to temporarily lower the restrictions.” “We’ve lowered these restrictions, and are excited to see a much larger proportion of the community using X!” “X has a new face, and we hope to see engagement from newcomers increase in the coming months.” “We’re excited to get your feedback on this new and improved version of X, which we hope addresses many of the longstanding concerns raised in prior posts over the years [potentially link to relevant posts that indicate community discontentment with a feature, etc.].” The public Style guide covers brand-wide grammar and mechanics. The guidance below is specific to Meta posts. “Comment spoilers have been updated.” “We updated comment spoilers to fix keyboard accessibility.” “We are moving toward improving user experience.” “This update adds spoiler support in comments.” “We are working on custom badges, which will allow you to have that extra special flair on your profile.” “Team X is starting work on a custom badges feature that will allow communities to award users for achievements that are underrepresented or exceptional across the network. You can work with your communities to define what custom badges make sense for each of them.” “We’re updating the version of the third-party markdown renderer we use in question & answer pages.” “We’re updating the version of the third-party markdown renderer (the software that converts Markdown to HTML) we use in question & answer pages.” “This week we’ll be finalizing work on a new-and-improved version of the tag synonyms page, which is planned for release next week.” “Starting next week, an alpha version of the tag synonyms page we’ve been working on will be made available for testing for users who’ve signed up for it. The current plan is to follow up with a beta version on DATE, which will be made available to all logged-in users.” “Starting next week, the new version of the tag synonyms page we’ve been working on will be made available to 10% of users. The page will be made available to the rest of the user base in 10% daily increments over the following weeks, assuming we don’t see a significant number of reports about the pages’ usage.” “Starting next week, we’ll be rolling out an experiment on the tag synonyms page. For two weeks we’ll monitor performance against the control group (which will be using the current version of the page). We’ll evaluate whether to graduate the feature depending on what we see in the data.” “Given the importance of Y, by DATE we are planning to roll out an addendum to our Terms of Usage that will accommodate scenario X.” “We’re working on an addendum to our Terms of Usage that will accommodate scenario X. This is an important addition because of Y. As per our current timeline, we plan to have the change deployed by DATE.” See Alt-text for how to write good alt-text, when to leave it blank, and how to add it. The public Style guide covers date and time formatting for product UI and copy, where times follow the user’s local time zone. The guidance below is specific to Meta posts and intentionally differs. The Internal communications abbreviation guidance in the public Style guide also applies when writing on Meta sites. Although Meta is a public channel, the same rule holds: abbreviations may be used for brevity only once the full name has been established in context (with the abbreviation in parentheses), and defaulting to full names is still preferred. For product and brand naming (Stack Overflow, Stack Internal, Stack Ads, etc.), see the public Naming guidelines. This page covers terms specific to community and Meta contexts. Source: Meta Stack Exchange. “We’re improving review queues, and expect to maximize workflow efficiency for users. We’ll keep an eye on impact for some time, in order to minimize disruption.” “To pay down some tech debt, we’re making improvements to the back-end architecture for review queues. This may affect user workflows in unpredictable ways, so we’ll be monitoring Meta for related reports in the coming 2 months.” “In order to bring the future into the platform by integrating AI solutions, we’re moving some cheese around. We expect you’ll see a variety of funky behavior, but we can always blame solar flares for that!” “We’re improving our search functionality by integrating AI components into it. We expect this may negatively affect some search results in the short term, but honestly any change to the current search functionality is likely a step up.” “We’ve realized how inefficient the question reopening system is after some internal analysis. Our findings show X, Y, and Z. We plan to address those problems by doing A, B, and C.” “You’ve told us several times about how inefficient the question reopening system is. We’ve finally devoted some time to fixing it, taking your past input as a key part of our problem definition phase.” “Oops! Work on feature Y was delayed due to unforeseen circumstances. We plan to deliver it as soon as possible, though, so you shouldn’t experience too much of a disruption.” “Our timeline for delivering feature Y has been delayed for roughly a month, in part due to incident X two weeks ago. We know this causes some inconvenience for a lot of our users, and are making this our top priority in the coming month. Our new deadline to deliver feature Y is DATE.” “We believe our Privacy Policy needs to change to reflect the new reality we’re facing as a company, in which partnerships like the one with Y become common.” “The Privacy Policy will be edited on DATE. This change will take place in order to accommodate some technical aspects of our partnership with Y, explained further down in this post.” “Thank you for your report. We’ve fixed the bug now.” “When we integrated with Z for better spam prevention last month, we failed to account for edge case X. I’ve now gone over the relevant code and done Y, to ensure edge cases like X won’t happen again. If you see the issue persist, please respond to this post.”
+
+
+
+
+
+
+
+ Active (strong / direct)
+
+
+ Passive (softened when needed)
+
+
+ Active (strong first person)
+
+
+ Passive (avoiding self-reference)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{category.description}
{/each} diff --git a/packages/stacks-docs/src/routes/[category]/+page.svelte b/packages/stacks-docs/src/routes/[category]/+page.svelte index 46e81fcc61..0dce7b97e4 100644 --- a/packages/stacks-docs/src/routes/[category]/+page.svelte +++ b/packages/stacks-docs/src/routes/[category]/+page.svelte @@ -20,12 +20,12 @@ {#if subsection.externalUrl} -