Skip to content

Commit 5db64cb

Browse files
committed
updates
1 parent 90091aa commit 5db64cb

2 files changed

Lines changed: 148 additions & 1 deletion

File tree

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
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.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "modern-python-org"
3-
version = "0.1.0"
3+
version = "0"
44
description = "modern-python.org organization homepage"
55
requires-python = ">=3.11"
66
dependencies = [

0 commit comments

Comments
 (0)