Skip to content

Commit b762a88

Browse files
author
pxiaoer
committed
docs: 0.1.0 planning for community-contributed courses (parked until 0.1.0)
First draft from the parallel planning session: permanently-free community courses, review states, and open questions. Referenced by the website's 0.0.9 plan revision 4.
1 parent b38667f commit b762a88

1 file changed

Lines changed: 112 additions & 0 deletions

File tree

docs/repo-plan-0.1.0.md

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
# FlyPython 仓库 0.1.0 规划:社区贡献课程
2+
3+
版本:0.1.0(规划,第 1 稿)
4+
更新日期:2026-09-13
5+
状态:**规划,0.1.0 之前不实施。**
6+
关联:网站仓库 `docs/product-and-growth-plan-0.0.9.md`(附录 B 记录了移出决定)·
7+
网站仓库 `docs/courses/README.md`(课程标准)· 本仓库 `CONTRIBUTING.md`
8+
`docs/CURATION_POLICY.md``LICENSE`
9+
10+
## 决定
11+
12+
- 所有者 2026-09-13:支持网友通过本仓库提交课程;**社区贡献课程永久免费**
13+
- 同日决定:**0.1.0 之前不考虑社区课程**,先把规划写在本仓库,届时再立项、分配
14+
工作项编号。
15+
- 官方示范(视频、终端回放、文字稿)是 Pro 专属;社区课是否配官方示范、如何开放,
16+
届时按网站当时的 Pro 规则另行决定。本规划不承诺社区课有示范。
17+
18+
## 现状(2026-09-13 核对)
19+
20+
- `LICENSE` 已是双许可:代码(starter、solution、`verify.py`、工具)MIT;课文等书面
21+
内容 CC BY 4.0,署名「FlyPython (flypython.com)」。
22+
- `CONTRIBUTING.md` 有资源、项目、课程反馈、失效链接、安全报告等流程,**没有「贡献
23+
一门课程」的流程**
24+
- 课程标准已存在:一门课一个文件夹(`COURSE.md` / `TASK.md` 与中文对、五课、starter /
25+
solution / tests、`verify.py``REVIEW.md`),`tools/verify_courses.py` 校验;
26+
0.0.8 起课程文件夹单独取出也能运行 `python verify.py`
27+
- 网站的课程数据与认领契约目前是手工镜像本仓库,每加一门课都要改网站代码——
28+
社区课一多就成为瓶颈(见第 6 项)。
29+
30+
## 待办(0.1.0 立项时细化)
31+
32+
## 1. 贡献流程与课程模板 []
33+
34+
- [ ] 仓库新增「Course proposal」issue 表单:先提目标学员、要解决的真实任务、使用
35+
的工具、判定方式,维护者同意后再写
36+
- [ ] `CONTRIBUTING.md` 增加「贡献一门课程」一节,指向课程标准(网站仓库 `docs/courses/README.md` §2)
37+
- [ ] 课程脚手架(`templates/course/``tools/new_course.py`):生成 `COURSE.md` /
38+
`_cn``TASK.md` / `_cn``lessons/L01–L05``_cn`、starter / solution / tests、
39+
`verify.py``REVIEW.md` 骨架
40+
- [ ] 提交清单:中英同步、确切工具与版本、贡献者自己的实跑记录(REVIEW.md)
41+
42+
## 2. 自动校验(CI) []
43+
44+
- [ ] PR 上自动运行:`tools/verify_courses.py`、双语对齐、content-manifest、
45+
`verify.py starter --expect-failure``verify.py solution`
46+
- [ ]**无网络**的 CI 环境里运行;课程目录体积与文件数上限;依赖只允许锁定版本
47+
且在允许清单内
48+
- [ ] 若加入工具课共享核心组,逐字节一致性检查自动生效
49+
50+
## 3. 安全审查 []
51+
52+
社区课的 `verify.py`、测试与 starter 会**在学员电脑上由 Agent 执行**,恶意或粗心的
53+
代码直接伤害学员。
54+
55+
- [ ] 维护者审查清单:不访问网络、不在课程目录之外读写、除测试运行器外不起子进程、
56+
无混淆代码、无遥测;依赖在允许清单内
57+
- [ ] `courses/` 设 CODEOWNERS,合并必须经维护者批准
58+
- [ ] 合并后才会进入网站固定的内容版本;未合并的 PR 不会出现在站点与 Skill 里
59+
60+
## 4. 编辑审查与标注 []
61+
62+
- [ ]`CURATION_POLICY.md` 人工审查课文事实与定位;描述由人执笔
63+
- [ ] 课程页与课程列表标注「Community course · 贡献者 · FlyPython 审核于 <日期>」,
64+
与官方课程区分
65+
- [ ] 维护者至少实跑一次(Agent 可解性),记录进 REVIEW.md
66+
67+
## 5. 署名与许可 []
68+
69+
- [ ] `COURSE.md` frontmatter 增加 `authors`(贡献者 GitHub 账号),课程页与课程文档
70+
显示署名
71+
- [ ] `LICENSE` / `CONTRIBUTING.md` 补充:内容署名在「FlyPython (flypython.com)」之外
72+
同时列出贡献者;提交即声明有权提交(DCO / sign-off)
73+
- [ ] 与网站 0.0.9 FP-903(署名方式)一并决定展示格式
74+
75+
## 6. 网站自动接入,去掉手工镜像 [高,网站仓库]
76+
77+
本项工作在网站仓库完成,本仓库需要保证课程契约字段完整、机器可读。
78+
79+
- [ ] 构建期从固定的仓库版本读取课程契约(元数据、检查点、判定方式、`course_id`
80+
salt、难度、时长、工具),**生成**网站课程数据与认领契约,替代手写
81+
`courses.ts``COURSE_CONTRACTS`
82+
- [ ] 社区课合并后,网站只需更新内容 pin 即可上线(中英课程页、题目页、文件接口、
83+
选题页自动出现)
84+
- [ ] 网站课程文档 `docs/courses/<slug>.md` 由脚本生成骨架,维护者补「迭代方向」
85+
- [ ] 测试:生成数据与现有 15 门课逐字段一致后再切换
86+
87+
## 7. 永久免费的保证 []
88+
89+
- [ ] 课程契约增加 `source: official | community`;社区课**不能**`pro` 标记——
90+
生成脚本与站点测试双重拒绝
91+
- [ ] 社区课可认领、计积分、得课程徽章(与官方免费课一致);是否计入官方路线由维护者
92+
单独决定(默认不计入,待决)
93+
- [ ] 网站定价页 Free 卡写明「社区课程永久免费」
94+
95+
## 8. 维护与下线 []
96+
97+
- [ ] 工具大版本发布后,社区课标注「需要复审」,通知贡献者;30 天(待决)内无人
98+
处理则转为「存档」:页面保留、仍可做题,但从课程列表默认隐藏
99+
- [ ] 已有认领与积分永远保留
100+
101+
## 不做
102+
103+
- 不接受社区贡献 Pro 课程;社区课不能被标为 Pro。
104+
- 不做收入分成或付费悬赏承诺。
105+
- 未经维护者审查合并的 PR 不进入网站固定的内容版本,也不出现在 Skill 与简报里。
106+
107+
## 立项前需要决定
108+
109+
1. 社区课是否可计入官方路线(默认不计入)。
110+
2. 「需要复审」转为「存档」的期限(建议 30 天)。
111+
3. 贡献者署名在课程页的展示格式(与网站署名方式一并决定)。
112+
4. 每月审核社区课的容量上限(维护者时间与官方 Pro 上新共用)。

0 commit comments

Comments
 (0)