|
| 1 | +# Modern Python — Community & Channels |
| 2 | + |
| 3 | +**Date:** 2026-06-27 |
| 4 | +**Status:** Approved design, ready for planning |
| 5 | +**Owner:** modern-python maintainers |
| 6 | +**Scope:** Which channels the `modern-python` org uses to reach, support, and |
| 7 | +retain users — and how they fit together. Extends the |
| 8 | +[promotion strategy](2026-06-24-promotion-strategy-design.md); **amends its Phase 5 |
| 9 | +deferral of Discord/Telegram.** |
| 10 | + |
| 11 | +## Why this doc exists |
| 12 | + |
| 13 | +The promotion strategy and launch playbook already specify the **broadcast** |
| 14 | +channels (Show HN, r/Python, Lobsters, awesome-lists, the org-story post, |
| 15 | +X/Mastodon/Bluesky one-liners). What they do *not* cover is **ongoing community |
| 16 | +channels** and the broader channel landscape. The strategy deliberately deferred |
| 17 | +real-time chat: |
| 18 | + |
| 19 | +> Phase 5 — *"Deferred decision: Discord / Telegram only if Discussions demand |
| 20 | +> justifies it — start GitHub-native."* |
| 21 | +> Out of scope — *"Standing up Discord/Telegram up front."* |
| 22 | +
|
| 23 | +This doc revisits that decision on purpose, with a concrete plan and a stated |
| 24 | +justification, and fills in the missing channel map. |
| 25 | + |
| 26 | +## The mental model: three kinds of channel |
| 27 | + |
| 28 | +The three categories have completely different cost/payoff profiles, and conflating |
| 29 | +them is what leads to wasted effort. |
| 30 | + |
| 31 | +1. **Broadcast (one-shot spikes).** HN, Reddit, Lobsters, awesome-lists, the |
| 32 | + org-story post. High impact, low ongoing cost, effectively single-use per |
| 33 | + project. **Already fully specified** in the launch playbook — out of scope here. |
| 34 | +2. **Owned community (ongoing rooms we run).** GitHub Discussions, Telegram, |
| 35 | + Discord. High ongoing cost (presence + moderation); only pays off at critical |
| 36 | + mass. |
| 37 | +3. **Borrowed audience (show up where users already are).** Existing Python chat |
| 38 | + communities, newsletters, podcasts, cross-post platforms, Q&A sites. Highest ROI |
| 39 | + for a small project, and **not yet in the strategy.** |
| 40 | + |
| 41 | +**Strategic principle:** a 57★ project's scarcest resource is the attention needed |
| 42 | +to seed a room. So **borrow audiences before building our own**, and make the one |
| 43 | +*owned async* asset (GitHub Discussions) the durable, search-indexed backbone. |
| 44 | + |
| 45 | +## Owned community channels |
| 46 | + |
| 47 | +### GitHub Discussions — the backbone (start now) |
| 48 | + |
| 49 | +Discussions is the primary support and feedback surface. It is searchable, |
| 50 | +Google-indexed, async (a good fit for a solo maintainer in one timezone), and needs |
| 51 | +no infrastructure. Every chat answer is ephemeral; every Discussion answer |
| 52 | +compounds — it helps everyone who later searches the same error. |
| 53 | + |
| 54 | +This elevates Discussions from the strategy's "seed it" framing to **primary support |
| 55 | +surface**. Concrete actions (already partly in Phase 5): enable org-wide, seed Q&A / |
| 56 | +Ideas categories, pin a "what should we build next?" roadmap thread, and route |
| 57 | +launch-comment feedback here. |
| 58 | + |
| 59 | +### Telegram + Discord — open at launch week, not before |
| 60 | + |
| 61 | +We will run **both**, justified by a **language/geo split** — the only rationale |
| 62 | +that keeps two rooms coherent rather than fragmenting a small community: |
| 63 | + |
| 64 | +- **Telegram** — Russian-speaking Python community. |
| 65 | +- **Discord** — English / global audience. |
| 66 | + |
| 67 | +**Timing: open them during launch week, not earlier.** An empty room opened months |
| 68 | +ahead actively hurts: during the highest-traffic moment (the Show HN spike), every |
| 69 | +visitor sees "3 members, last message 2 weeks ago" — a worse signal than a clean |
| 70 | +Discussions tab. Launch week is the one moment of concentrated attention; people who |
| 71 | +arrive via HN/Reddit are the most likely to join, so that is when to seed the rooms |
| 72 | +past the empty-room threshold. Opening cold afterward rarely catches up. |
| 73 | + |
| 74 | +**Routing rule:** link both rooms from every README, docs site, and the org profile, |
| 75 | +but push *answerable* questions to Discussions ("ask in Discussions so the next |
| 76 | +person finds it; chat for everything else"). This keeps the durable, indexed record |
| 77 | +growing and keeps chat low-stakes. |
| 78 | + |
| 79 | +### Why both, and the cost we are accepting |
| 80 | + |
| 81 | +Running two rooms doubles moderation/presence burden and is normally a trap for a |
| 82 | +small project. We accept it **only** because the two rooms serve distinct |
| 83 | +language communities that would not share one room anyway. If, in practice, one room |
| 84 | +stays inactive, fold it back into Discussions rather than keeping a dead room linked. |
| 85 | + |
| 86 | +## Borrowed-audience channels (the highest-ROI gap) |
| 87 | + |
| 88 | +Ranked by ROI for a young Python OSS project. None of these require running a room. |
| 89 | + |
| 90 | +1. **Existing Python chat communities.** Participate (tastefully, not drive-by |
| 91 | + self-promo) in the official **Python Discord** and the FastAPI / Litestar / |
| 92 | + FastStream community channels. Thousands of exact-fit users, zero maintenance. |
| 93 | +2. **Newsletters — submit.** **PyCoder's Weekly** and **Python Weekly** both accept |
| 94 | + submissions; a single inclusion can out-perform a Show HN, and they suit the |
| 95 | + honest "when *not* to use this" framing already written for launch. |
| 96 | +3. **Podcasts — pitch once docs are polished.** **Talk Python to Me** and |
| 97 | + **Python Bytes** cover new libraries; the "one DI wiring across FastAPI / |
| 98 | + FastStream / Typer" story is a natural fit. |
| 99 | +4. **Cross-post platforms.** Republish the org-story post to **dev.to** / **Hashnode** |
| 100 | + with a canonical link back to the source, for a second SEO-friendly audience. |
| 101 | +5. **Q&A sites.** Answer real DI / outbox questions on **Stack Overflow** and |
| 102 | + reference the docs where genuinely relevant. |
| 103 | +6. **Conference lightning talks / PyCon.** Highest effort, optional, later. |
| 104 | + |
| 105 | +## Low-grind upkeep model (solo maintainer) |
| 106 | + |
| 107 | +To keep the owned rooms from becoming the "ongoing grind" the strategy warns |
| 108 | +against: |
| 109 | + |
| 110 | +- **One org-wide server each**, not per-repo: a single Discord with per-project |
| 111 | + channels, one Telegram group. The whole stack shares one community. |
| 112 | +- **Spam control via a single mod bot** on Discord; an anti-spam bot on Telegram. |
| 113 | + Pinned **rules** + a pinned **"read first"** message on Discord. |
| 114 | +- **A standing redirect reflex:** an answerable question → "let's move this to |
| 115 | + Discussions," so the durable record gets built and chat stays low-stakes. |
| 116 | +- **Honest status pin:** these are young, actively-developed projects — matching the |
| 117 | + calibrated launch voice. |
| 118 | + |
| 119 | +## How this fits the existing strategy |
| 120 | + |
| 121 | +| Strategy phase | This doc's effect | |
| 122 | +|---|---| |
| 123 | +| Phase 4 — Coordinated launch | Telegram + Discord open in the **launch window**, seeded by launch traffic; rooms linked from launch assets. | |
| 124 | +| Phase 5 — Sustain + feedback | **Amends** the Discord/Telegram deferral: both rooms ship (geo-split justified). Discussions elevated from "seed" to **primary support surface**. Adds the borrowed-audience channel program as ongoing work. | |
| 125 | + |
| 126 | +## Success metrics |
| 127 | + |
| 128 | +- **Discussions:** thread volume, answered-question rate, Ideas submissions. |
| 129 | +- **Chat rooms:** members joined in launch week, weekly active posters, ratio of |
| 130 | + answerable questions redirected to Discussions. A room that stays inactive 30 days |
| 131 | + post-launch is a candidate to retire. |
| 132 | +- **Borrowed audiences:** newsletter inclusions landed, podcast appearances, referral |
| 133 | + traffic from cross-posts / existing communities. |
| 134 | + |
| 135 | +## Out of scope |
| 136 | + |
| 137 | +- The broadcast channels and their copy — owned by the launch playbook. |
| 138 | +- Per-repo chat servers (one org-wide server each instead). |
| 139 | +- Paid promotion / ads. |
| 140 | +- Standing up the rooms *before* launch week. |
| 141 | + |
| 142 | +## Open questions (resolve during planning) |
| 143 | + |
| 144 | +- Exact launch-week sequencing of room creation vs. the Show HN spike (maintainer's |
| 145 | + call on the window). |
| 146 | +- Which mod/anti-spam bots to use for Discord and Telegram. |
| 147 | +- Whether to retire one room if it stays inactive, and the threshold for that call. |
0 commit comments