|
1 | 1 | # kvlang GitHub 项目优化评估 |
2 | 2 |
|
3 | | -> 按 7 维度逐一评估现状,给出可执行改进项。目标:提高 star 数。 |
4 | | -> |
5 | | -> 每个维度 0-10 分,10 = 顶尖开源项目水准。 |
| 3 | +> 按 7 维度评估,已完成标记 ✅,剩余待办按优先级排列。 |
6 | 4 |
|
7 | 5 | --- |
8 | 6 |
|
9 | | -## 1. 文档/规范(当前 3/10 → 目标 7/10) |
| 7 | +## 1. 文档/规范(3→5/10) |
10 | 8 |
|
11 | | -### 现状 |
12 | | -| 有 | 缺 | |
13 | | -|----|-----| |
14 | | -| README.md(含快速开始、语言速览) | LICENSE 文件 | |
15 | | -| grammar.bnf(形式语法) | 英文 README(当前仅中文) | |
16 | | -| 设计文档 20+ 篇(doc/) | 架构图(组件关系、数据流) | |
17 | | -| | 语言教程(step-by-step) | |
18 | | -| | API 文档 | |
| 9 | +- [x] LICENSE (MIT) |
| 10 | +- [x] 英文 README + mermaid 架构图 + CI badge |
| 11 | +- [x] 5 分钟入门教程(tutorial/ 6 步) |
| 12 | +- [ ] **LANGUAGE_SPEC.md**:从 grammar.bnf 扩展语义说明 |
| 13 | +- [ ] **API 参考**:builtin 函数一览表(参数、返回值、示例) |
19 | 14 |
|
20 | | -### 改进项(按优先级) |
| 15 | +## 2. 测试覆盖 & CI(2→5/10) |
21 | 16 |
|
22 | | -**P0 — 已完成**: |
23 | | -- [x] **添加 LICENSE**(MIT) |
24 | | -- [x] **README 加英文版** + mermaid 架构图 |
25 | | -- [x] **GitHub Actions CI** + badge |
26 | | -- [x] **打 tag v0.1.0** + CHANGELOG |
| 17 | +- [x] GitHub Actions CI(build/vet/test,linux + macos) |
| 18 | +- [x] CI badge |
| 19 | +- [x] 多平台 Release CI(tag 触发,linux/darwin amd64/arm64) |
| 20 | +- [ ] **补核心包单元测试**:kvcpu、lower、vthread、parser |
| 21 | +- [ ] **make cover** 覆盖率报告 |
27 | 22 |
|
28 | | -**P1**: |
29 | | -- [x] **CONTRIBUTING.md** |
30 | | -- [x] **Issue 模板**(bug report + feature request) |
31 | | -- [x] **ROADMAP.md** |
32 | | -- [x] **5 分钟入门教程**(`tutorial/` 目录,6 步渐进) |
| 23 | +## 3. 可复现构建(6→7/10) |
33 | 24 |
|
34 | | ---- |
35 | | - |
36 | | -## 2. 测试覆盖 & CI(当前 2/10 → 目标 7/10) |
37 | | - |
38 | | -### 现状 |
39 | | -| 有 | 缺 | |
40 | | -|----|-----| |
41 | | -| 4 个 `*_test.go`(link_test, op, parser) | CI pipeline(GitHub Actions) | |
42 | | -| `example/run.py` 集成测试 175 用例 | `go test -cover` 覆盖率报告 | |
43 | | -| `make test` 命令 | CI badge(README 中显示绿色 passing) | |
44 | | -| | 单元测试覆盖核心逻辑(kvcpu, lower, vthread) | |
45 | | - |
46 | | -### 改进项 |
47 | | - |
48 | | -**P0**: |
49 | | -- [ ] **GitHub Actions CI**:`.github/workflows/ci.yml`,包含: |
50 | | - ```yaml |
51 | | - - go build ./... |
52 | | - - go vet ./... |
53 | | - - go test ./... -coverprofile=coverage.out |
54 | | - - python3 example/run.py # 集成测试 |
55 | | - services: redis:7-alpine |
56 | | - ``` |
57 | | -- [ ] **CI badge** 放在 README 顶部 |
58 | | -
|
59 | | -**P1**: |
60 | | -- [ ] **补核心包单元测试**:`internal/kvcpu/`, `internal/lower/`, `internal/vthread/`, `internal/parser/` |
61 | | -- [ ] **`make cover`** 生成覆盖率 HTML |
62 | | - |
63 | | ---- |
| 25 | +- [x] tag v0.1.0 + CHANGELOG |
| 26 | +- [x] 多平台交叉编译(CI release job) |
| 27 | +- [ ] **go install 验证**:确认 go install ... @latest 可用 |
64 | 28 |
|
65 | | -## 3. 可复现构建(当前 6/10 → 目标 8/10) |
| 29 | +## 4. 依赖复杂度(保持 7/10) |
66 | 30 |
|
67 | | -### 现状 |
68 | | -| 有 | 缺 | |
69 | | -|----|-----| |
70 | | -| `go.mod`(仅 2 直接依赖) | 版本号/tag(`git tag`) | |
71 | | -| `Makefile`(build/test/vet/clean) | 二进制 release(GitHub Releases) | |
72 | | -| `.gitignore` 完整 | 多平台构建(当前仅 Linux) | |
73 | | -| `GOPROXY` 国内镜像配置 | | |
| 31 | +- [x] README 显式标注"仅 2 运行时依赖" |
| 32 | +- 无需改动。极简依赖是卖点。 |
74 | 33 |
|
75 | | -### 改进项 |
76 | | - |
77 | | -**P0**: |
78 | | -- [ ] **打版本 tag**:`git tag v0.1.0 && git push --tags`。有 tag 才有 release,有 release 才有下载量/star 转化。 |
79 | | -- [ ] **`make build-all`**:`GOOS=linux/darwin GOARCH=amd64/arm64` 四平台交叉编译 |
80 | | - |
81 | | -**P1**: |
82 | | -- [ ] **GitHub Release CI**:tag push 自动构建四平台二进制并发布 |
83 | | -- [ ] **`go install` 支持**:`go install github.com/array2d/kvlang/cmd/kvlang@latest` |
84 | | - |
85 | | ---- |
| 34 | +## 5. 示例/入门(4→6/10) |
86 | 35 |
|
87 | | -## 4. 依赖复杂度(当前 7/10 → 保持 7/10) |
88 | | - |
89 | | -### 现状 |
90 | | -- 2 个直接依赖:`gorilla/websocket` + `redis/go-redis/v9` |
91 | | -- 间接依赖仅 2 个(xxhash, atomic) |
92 | | -- **优势:极度精简**,这是亮点 |
93 | | - |
94 | | -### 建议 |
95 | | -- **README 中显式标出**:"仅 2 个运行时依赖"作为卖点 |
96 | | -- Redis 是唯一外部服务依赖。README 中注明如何 3 行 CI 配置 Redis |
97 | | -- 考虑未来可选:`go build -tags nomqtt` 去掉 websocket 依赖 |
98 | | - |
99 | | ---- |
100 | | - |
101 | | -## 5. 示例/入门(当前 4/10 → 目标 8/10) |
102 | | - |
103 | | -### 现状 |
104 | | -| 有 | 缺 | |
105 | | -|----|-----| |
106 | | -| 179 个 `.kv` 示例文件 | 结构化教程(入门→进阶) | |
107 | | -| 覆盖 arith/cast/compare/logic/call/controlflow/algo | 每个示例的说明文档 | |
108 | | -| P0-P3 分级测试 | 与应用场景关联的 demo(如 HTTP API) | |
109 | | - |
110 | | -### 改进项 |
111 | | - |
112 | | -**P0**: |
113 | | -- [ ] **创建一个独立 tutorial 目录**: |
114 | | - ``` |
115 | | - tutorial/ |
116 | | - 01-hello-world/ # print("hello") |
117 | | - 02-variables/ # 赋值与读取 |
118 | | - 03-arithmetic/ # 加减乘除 |
119 | | - 04-functions/ # def / call |
120 | | - 05-control-flow/ # if / loop |
121 | | - 06-recursion/ # fibonacci |
122 | | - ``` |
123 | | - 每个目录含 `main.kv` + `README.md`(中英双语) |
124 | | - |
125 | | -**P1**: |
126 | | -- [ ] **README 中嵌入可运行的 demo gif/asciicast** |
127 | | -- [ ] **Playground 链接**(若有在线环境) |
128 | | - |
129 | | ---- |
| 36 | +- [x] tutorial/ 6 步渐进教程 |
| 37 | +- [ ] **demo gif/asciicast**:README 中嵌入终端录制 |
| 38 | +- [ ] **在线 playground**(GitHub Pages + WASM?) |
130 | 39 |
|
131 | | -## 6. 安全/沙箱友好(当前 ?/10 → 目标 6/10) |
| 40 | +## 6. 安全/沙箱友好(?→4/10) |
132 | 41 |
|
133 | | -### 分析 |
134 | | -kvlang 的 KV 路径寻址天然适合沙箱: |
135 | | -- 所有 I/O 走 `kvspace`(可限制路径前缀) |
136 | | -- 无直接文件系统/网络访问(除非通过 `term_ws.go` 等 device 抽象) |
137 | | -- 指令集有限,无任意代码执行 |
| 42 | +- [ ] **SECURITY.md**:文档化沙箱模型(KV 路径隔离、无 FS/网络直访) |
| 43 | +- [ ] **资源限制文档**:最大 vthread 数、递归深度 |
138 | 44 |
|
139 | | -### 改进项 |
| 45 | +## 7. 维护活跃度(3→7/10) |
140 | 46 |
|
141 | | -- [ ] **文档化安全模型**:在 README/SECURITY.md 中说明沙箱边界 |
142 | | -- [ ] **`--sandbox` flag**:限制访问路径前缀(如只允许 `/vt/<id>` 下操作) |
143 | | -- [ ] **资源限制**:最大 vthread 数、最大递归深度(已有 TCO,但显式说明) |
| 47 | +- [x] tag v0.1.0 + CHANGELOG |
| 48 | +- [x] CONTRIBUTING.md |
| 49 | +- [x] Issue 模板(bug report + feature request) |
| 50 | +- [x] ROADMAP.md |
| 51 | +- [ ] **定期 release**:每 2-4 周打 tag |
144 | 52 |
|
145 | 53 | --- |
146 | 54 |
|
147 | | -## 7. 维护活跃度(当前 3/10 → 目标 6/10) |
148 | | - |
149 | | -### 现状 |
150 | | -| 有 | 缺 | |
151 | | -|----|-----| |
152 | | -| 频繁 commit(日更) | 版本 tag / release | |
153 | | -| 设计文档持续更新 | CHANGELOG | |
154 | | -| | CONTRIBUTING.md | |
155 | | -| | Issue/PR 模板 | |
156 | | -| | 项目 roadmap | |
157 | | - |
158 | | -### 改进项 |
159 | | - |
160 | | -**P0**: |
161 | | -- [ ] **打第一个 release tag**(v0.1.0) |
162 | | -- [ ] **CHANGELOG.md**:按版本记录变更 |
163 | | - |
164 | | -**P1**: |
165 | | -- [ ] **CONTRIBUTING.md**:如何贡献代码、运行测试、提交 PR |
166 | | -- [ ] **Issue 模板**:`.github/ISSUE_TEMPLATE/bug_report.md` |
167 | | -- [ ] **ROADMAP.md**:未来 3 个月的计划 |
168 | | - |
169 | | ---- |
170 | | - |
171 | | -## 优先执行顺序 |
172 | | - |
173 | | -按 **star 转化率 × 实施成本** 排序: |
174 | | - |
175 | | -| 优先级 | 项目 | 预计耗时 | 影响 | |
176 | | -|--------|------|---------|------| |
177 | | -| **1** | 添加 LICENSE (MIT) | 1 min | ⭐⭐⭐⭐⭐ | |
178 | | -| **2** | GitHub Actions CI + badge | 30 min | ⭐⭐⭐⭐⭐ | |
179 | | -| **3** | 英文 README + 架构图 | 1 h | ⭐⭐⭐⭐ | |
180 | | -| **4** | 打 tag v0.1.0 + CHANGELOG | 10 min | ⭐⭐⭐⭐ | |
181 | | -| **5** | 5 分钟入门教程(tutorial/) | 2 h | ⭐⭐⭐ | |
182 | | -| **6** | 补核心包单元测试 | 4 h | ⭐⭐⭐ | |
183 | | -| **7** | 多平台构建 + Release CI | 1 h | ⭐⭐ | |
184 | | -| **8** | CONTRIBUTING / Issue 模板 | 30 min | ⭐⭐ | |
185 | | - |
186 | | ---- |
187 | | - |
188 | | -## 竞品对标 |
189 | | - |
190 | | -| | kvlang | Lua | Wren | Scheme (chibi) | |
191 | | -|--|--------|-----|------|----------------| |
192 | | -| 核心依赖 | 2 | 0 (纯 C) | 0 | 0 | |
193 | | -| 存储模型 | KV 路径树(Redis) | 栈+表 | 栈+对象 | 栈+链表 | |
194 | | -| 并发模型 | vthread 协程 | 单线程 | 单线程 | 单线程 | |
195 | | -| 定位 | 分布式原生 VM | 嵌入式脚本 | 嵌入式脚本 | 嵌入式脚本 | |
196 | | -| **差异化** | **数据和指令同一棵树,天然可持久化/可共享/可分布式** | | | | |
197 | | - |
198 | | -kvlang 的核心卖点不是"又一个脚本语言",而是 **"指令即数据,数据即指令"的 KV 树模型**。README 和文档应围绕这个差异化展开。 |
| 55 | +## 剩余待办(按优先级) |
| 56 | + |
| 57 | +| # | 项目 | 耗时 | 影响 | |
| 58 | +|---|------|------|------| |
| 59 | +| 1 | LANGUAGE_SPEC.md 语言规范 | 2 h | 4/5 | |
| 60 | +| 2 | 补核心包单元测试 | 4 h | 3/5 | |
| 61 | +| 3 | make cover 覆盖率报告 | 15 min | 3/5 | |
| 62 | +| 4 | demo gif / asciicast | 1 h | 3/5 | |
| 63 | +| 5 | SECURITY.md 安全模型 | 30 min | 2/5 | |
| 64 | +| 6 | API 参考(builtin 一览表) | 1 h | 2/5 | |
| 65 | +| 7 | go install 验证 | 5 min | 2/5 | |
0 commit comments