🌍 Language / 语言: English | 中文
Stars don't come from a great repo — they come from a great repo placed in front of the right developers, in the right order. This is the staged decision framework used to take AFFiNE from 0 to 60K stars.
Case-number and citation boundaries: references/podcast-evidence.md.
2026 launch contract (run before any channel plan)
Classify every input as Go, Fix, or No-Go across six gates: positioning,
clean-machine quickstart, reproducible proof, license/security/privacy, response
ownership, and business conversion. Do not compensate for a failed product or
documentation gate with more distribution.
Build one operating row per channel:
channel | ICP | native angle | CTA | source/UTM | owner | local time + timezone |
success threshold | stop condition | evidence URL
Use the source-sheet workflow as five linked views: research, content, distribution, measurement, and launch control. Keep platform rules, prices, account status, creator metrics, and contact lists date-stamped and re-verify them in launch week.
Track the complete funnel:
impression -> repo visit -> install/quickstart -> activation -> D7 retained -> contribution/qualified lead -> paid. At 2h check only operational anomalies; at 24h
continue/change/pause; at 72h choose the second wave; at 7d decide reuse and budget.
Mark unavailable native metrics as data unavailable; never infer them from views.
Hard boundaries: never buy stars/accounts, coordinate fake or incentivized votes, hide paid relationships, scrape private data, mass-spam DMs/comments, or use AI to impersonate genuine community participation. Disclose affiliation on community posts.
English Version
The 3-stage framework
Stage 1 — Pre-launch (T-30 → T-0)
- README in English-first; the first screen must be understandable in <3 seconds.
- Demo video ≤ 60s, captioned.
- License chosen deliberately (MIT / Apache-2 / AGPL each carry traps).
- 3–5 early maintainers / contributors lined up.
- Community channel live (Discord or Telegram, English-first).
Stage 2 — Launch (T-0 → T+14)
- Product Hunt (run the dedicated launch sequence).
- Hacker News Show HN — Tuesday 9am ET, or Saturday.
- Reddit — pick 3 relevant subs (r/selfhosted, r/programming, one niche tech sub).
- Deep technical posts on dev.to / Zenn / CSDN.
- 3–5 KOLs to amplify (activity > follower count).
Stage 3 — Growth (T+14 → T+180)
- One technical blog per week.
- Turn GitHub Issues into content (user questions → FAQ → posts).
- Monthly update (mailing list + Discord).
- Localize for going global (Japan/Korea first).
Star region distribution (diagnostic, not a Trending rule)
- Use geography to diagnose whether distribution matches the intended market; GitHub does not publish a country-share threshold for Trending.
- Historical project distributions are dated case evidence, not universal targets.
- Finer benchmark (from studying VSCode / Vue / AppFlowy the week before AFFiNE's launch): US 19-21%, China ~19-21%, FR+DE+IT+UK combined 10-15%; Russia and Brazil usually appear in the Top-10 countries. Week-1 stars matching this curve = healthy global cold start.
- Tools: star-history.com (trend chart) · oss.cool / OSS Insight (per-country breakdown, built by Chinese devs)
- Launch sequence: choose waves from ICP, support coverage and local time zones. An overseas-first sequence is one testable option, not a Trending eligibility rule.
- AFFiNE real case: deliberately skipped WeChat Moments / Chinese community posts in week 1.
README essentials (conversion checklist)
- Structure: big logo → one-liner → badges → short description (reference: Dify, Lobechat, AFFiNE).
- ≤ 8 screens — dev docs go in a separate link, not inline.
- Add a "⭐ star reminder" GIF (same psychology as Bilibili "like / coin / collect" prompt — users need a nudge).
- Backlinks loop: every outbound link (website, blog, docs) must have a visible GitHub link back. Don't let traffic escape with no return path.
PR article strategy
- Publish one authoritative article (official blog / Medium / dev.to) that fully explains the project's value.
- Purpose: give anyone who wants to spread your project a ready-made script. They will use it without asking.
- AFFiNE case: a German user independently posted to 40+ forums with no prior contact — only possible because a clear reference article existed.
Relationship-based outreach
- Contact only relevant people where the platform permits it and where the message is personalized, truthful and easy to decline. Prefer people who have publicly discussed the problem or opted into product discovery; do not bulk-scrape competitor followers.
- Treat historical response/conversion claims as self-reported unless a dated source and source-to-activation evidence are available.
- Target: users who actively complain about the competitor — they already have switching intent.
Channel order that works
English > multilingual > Chinese-only. Unless your target is Chinese users, launching an English project to Chinese communities first wastes your best shot.
Anti-patterns (the things that get you un-discovered)
- ❌ Farming stars — GitHub detects it fast; the penalty is disappearing from search.
- ❌ Posting to Reddit once and leaving — communities resent it; high ban risk.
- ❌ Too many emojis / badges in the README — lowers credibility.
- ❌ Treating Show HN as a one-shot — engage every comment for the full day.
Day One minimum kit (1-week prep window)
When you only have one week to prepare (AFFiNE, open-sourced 2022-08-03, had exactly that), ship these four assets and nothing else:
| # | Asset | Bar |
|---|---|---|
| 1 | One-liner website | Big type, sparse lines: headline + subline + GitHub link on the first screen (Vercel-style OSS landing) |
| 2 | Illustrated README | Video/GIF > image > text; visitor gets what/why in 30 seconds, then a direct star CTA |
| 3 | One competitor-benchmark article | "X is an open source [top competitor] alternative" — one authoritative piece, reused across every channel |
| 4 | Minimal dev docs | 4 pages: who we are · features · per-OS deploy guides (macOS / Windows / Linux) · how to contribute. Rough is fine — having it beats not having it |
Cold-start 6-step SOP (validated: ≈6,000 stars in week 1)
- Study how successful OSS peers launched (AFFiNE studied AppFlowy) before doing anything.
- Ship the illustrated README (see kit above).
- Publish the "open source X alternative" positioning article.
- Submit to open-source-alternative directory sites.
- DM the Twitter/X followers of your benchmark competitor — their fans are your most precise seed pool.
- Post to Reddit and developer communities.
Blast steps 3-6 within a single day for concentrated volume, then let the flywheel spin.
Reverse-engineer a competitor's launch day (star-history method)
- On star-history.com / OSS Insight, find the exact open-source date of your strongest competitor.
- Google advanced search restricted to that day/week: reconstruct every post, PR and directory submission they made.
- Build the channel spreadsheet (AppFlowy case: ~40 channels — 20+ directories like opensourcealternative.to, Medium / dev.to, dev forums, Reddit), tagged free/paid.
- Pick competitors that launched in the last 2-3 years and are within reach — don't dissect an 8-year-old giant.
Expectation setting: copying the SOP does not guarantee 6,000 stars in a week, but 1,000-3,000 stars in 3 months is realistic.
Open source as fundraising leverage (AFFiNE data chain)
| Before open source | After open source (2022-08-03) |
|---|---|
| Angel round: ~400 investor meetings over ~12 months (self-reported) | Week 1: ≈6,000 stars, 80% from overseas |
| Day 43: 10,000 stars | |
| ~1 month post-launch: $8M Pre-A locked | |
| 24 months: 60K+ stars |
- Investors buy star growth rate, not the absolute count — velocity is the signal.
- Investors may run crawlers during due diligence to verify stars aren't botted; a clean history is itself an asset.
Monetization pricing test (before the paid product exists)
- Put up a pricing page even before the paid tier is built — tiers can stay vague. Give each tier a "contact us" + typeform (tier + question + contact info).
- AFFiNE result: dozens of pricing inquiries within 2 weeks; the question shifted from "is this free?" to "how much will it cost?". Interest split ≈ 70% community free / 20% personal / 10% team.
- Tell users early that a paid model exists — the sooner you say it, the sooner the mental model forms. Actively fight the "open source = free" stereotype.
- As strategy shifts toward general users, progressively shrink the "open source / privacy-first" wording on the website and retire "always free" from the tagline (AFFiNE dropped it in 2023-02).
What to do next
- Stage 1 done → run the Product Hunt launch sequence.
- Show HN succeeds → add SEO monitoring on "
<project> github". - Need a content engine → move to the blog-writing workflow.
- Spotted a competitor's new play → run a competitor teardown.
Chinese Edition
3-Stage Framework
Stage 1 — Pre-launch (T-30 → T-0)
- README English-first, understandable within <3 seconds on the first screen.
- Demo video ≤ 60s, with subtitles.
- Choose the right License (MIT / Apache-2 / AGPL each have their own pitfalls).
- 3–5 early-bird maintainers / contributors.
- Community channels in place (Discord or Telegram, English-first).
Stage 2 — Launch (T-0 → T+14)
- Product Hunt (follow the unified launch process).
- Hacker News Show HN — Tuesday 9am US Eastern or Saturday.
- Reddit — pick 3 relevant subs (r/selfhosted, r/programming, niche tech subs).
- Publish in-depth technical articles on dev.to / Zenn / CSDN.
- Find 3–5 KOLs to share (activity > follower count).
Stage 3 — Growth (T+14 → T+180)
- 1 technical blog per week.
- GitHub Issues → content material (user questions become FAQs).
- 1 update per month (email list + Discord).
- Overseas localization (Japan and Korea first).
Star Regional Distribution & Launch Timing
- The share of stars from any single country/region should not exceed 20%, otherwise it is hard to get on Trending.
- Healthy distribution reference: China 19-21%, US 19-21%, the rest spread across Europe/Russia/Canada/Indonesia.
- More detailed benchmark (from AFFiNE's research on VSCode / Vue / AppFlowy in the week before open-sourcing): US 19-21%, China ~19-21%, France+Germany+Italy+UK combined 10-15%, and the Top10 countries usually include Russia and Brazil. First-week star distribution matching this curve = healthy global cold start.
- Tools:star-history.com(growth trends) · OSS Insight(country distribution, developed by a Chinese developer)
- Launch timing: In the first week, do only overseas promotion; only in the second week do domestic promotion. Reversing the order will break the distribution ratio.
- Real AFFiNE case: in the first week of open-sourcing, they deliberately did not post on WeChat Moments or enter domestic communities.
README Optimization Key Points
- Structure: big logo + one-sentence intro + badges + short intro (reference Dify / Lobechat / AFFiNE)
- No more than 8 screens, developer docs have their own separate link, do not cram them into the README
- Adda small GIF reminding people to star(analogous to Bilibili uploaders' "one-click triple combo" — users need to be reminded)
- backlinks loop: all outbound links (official site/blog/docs site) must be able to link back to GitHub; traffic must not go out and never return
PR Article Strategy
- Prepare a complete article explaining the project's advantages (official blog / Medium / dev.to)
- Purpose: give everyone who wants to help you spread the word a gun; they can quote it directly and don't need to figure out how to introduce it themselves
- AFFiNE case: a German user posted on 40+ forums without even saying hello first — they were able to post because there was a reference article
DMing Competitor Followers
- Send DMs to Twitter followers of competitors (Notion / Miro, etc.)
- Real-world data: several hundred DMs → several hundred stars converted
- Prioritize users who "complain about the competitor" — they already have intent to switch
Channel order
English > multilingual > Chinese only. Unless the target is Chinese users, launching an English project in Chinese communities first wastes your best opportunity.
Anti-patterns
- ❌ Star farming (GitHub detects it quickly; the consequence is that you can't be found in search).
- ❌ Posting on Reddit once and running away (communities dislike it, and you can easily get banned).
- ❌ Too many emoji / badges in the README (reduces credibility).
- ❌ Treating Show HN as a one-off (you need to respond to comments all day).
2026 experiment log and ecosystem distribution
- Write one line of experiment log for every channel action:
日期 / 假设 / 渠道 / 素材 / UTM / 24h结果 / 7d结果 / 下一步. Treat stars only as a leading indicator; also look at installs, first successful run, return visits, and purchase intent. - The README, demo video, and shortest runnable path are the same activation chain; if any step takes more than 3 minutes, fix activation first before scaling traffic.
- Submit the project to genuinely relevant Awesome Lists, package managers, template marketplaces, and upstream/downstream integration directories; follow each site's submission rules, don't spam in bulk, and don't buy links.
- Case-study numbers must be labeled with the date, sample scope, and
self-reported/ verifiable sources, to avoid writing historical platform patterns as permanent algorithmic facts.
Open source Day One four-piece set (minimum set for a one-week preparation period)
When you only have one week to prepare (AFFiNE open-sourced on 2022-08-03, exactly this pace), do only these four things:
| # | Asset | Standard |
|---|---|---|
| 1 | One-sentence website | Big text, sparse lines: the first screen has only the main headline + subheadline + GitHub link (benchmarking Vercel-like open source websites) |
| 2 | Rich README with images and text | Use video/GIF if possible, otherwise images; let people get the value within 30 seconds and directly guide them to click star |
| 3 | One article benchmarking competitors | "X is an open source [top competitor] alternative"—one authoritative article reused across all channels |
| 4 | Minimum developer docs set | 4 posts: who we are · feature introduction · per-system deployment (macOS / Windows / Linux) · how to contribute. Rough is fine; having something is better than having nothing |
Open source cold start 6-step SOP (evidence: first week ≈6,000 stars)
- First study how successful open source predecessors launched (AFFiNE learned from AppFlowy), then start.
- Prepare a rich README with images and text (see the four-piece set above).
- Publish a positioning article titled “I am an open source alternative to XXX.”
- Submit to open-source-alternative-type directory sites.
- DM the Twitter/X followers of the benchmark competitor—competitor followers are the most precise seed pool.
- Post on Reddit and developer communities.
Steps 3-6 should be rolled out all at once within one day; after making noise, wait for the flywheel.
Reverse-engineering competitors' open source dates with star-history
- Check the open source date of the strongest competitor on star-history.com / OSS Insight.
- Use Google advanced search restricted to that day/week to reconstruct all posts, PRs, and directory submissions the competitor made that day.
- Build a big channel table (the AppFlowy case has about 40 channels: 20+ directory sites such as opensourcealternative.to, Medium / dev.to, developer forums, Reddit), marking free/paid.
- Choose competitors released in the past 2-3 years whose scale is “within reach,” not old giants from 8 years ago.
Expectation management: Copying the SOP does not guarantee 6,000 stars in a week, but 1,000-3,000 stars in 3 months is relatively easy.
Open source leverages financing (AFFiNE data chain)
| Before open source | After open source (2022-08-03) |
|---|---|
| Angel round: met ~400 investors, took about 12 months (stated verbally) | First week: ≈6,000 stars, 80% from overseas |
| Day 43: surpassed 10k stars | |
| About 1 month after open source: secured $8M Pre-A | |
| 24 months: 60K+ stars |
- What investors are really paying for is star growth rate, not the absolute number—speed is the signal.
- During DD, investors may write crawlers to verify whether stars are faked; a clean history is itself an asset.
Commercialization pricing test (you can test it before the paid version is even built)
- Even if the commercial version isn't built yet, put up a pricing page first—the tiers can be written vaguely, with contact us + typeform for each tier (select tier + questions + contact info).
- AFFiNE result: received dozens of price inquiries in two weeks; the consultation framing shifted from "Is this free?" to "About how much does it cost?" Intent ratio ≈ 70% community free / 20% personal version / 10% team version.
- Tell users early that the product has a paid model—the earlier you say it, the earlier users develop a paid mindset; actively counter the stereotype that "open source = free".
- After the strategic shift to general user, the words "open source / privacy-first" on the official website gradually became smaller, and the tagline dropped "always free" (AFFiNE changed it in 2023-02).
By Iris (生姜 Iris) · ex-COO @ AFFiNE (0 → 60k★) · Install: npx skills add Gingiris-1031/gingiris-opensource