# 开源合规声明 / README.OpenSource
本文件对应赛事提交材料清单第 1 项中的「README.OpenSource(适配必填)」,
完整列出 CIDE 的许可证状态、所依赖的第三方开源组件,以及**明确不随本软件分发**的外部内容。
---
## 1. 本项目许可证
| 项目 | 状态 |
| --- | --- |
| 名称 | CIDE —— 面向仓颉编程语言的轻量级桌面 IDE(社区版 / 非官方) |
| 许可证 | **Apache License 2.0**(全文见 [LICENSE](LICENSE)) |
| 版权归属 | Copyright 2026 wangpeng |
| 官方性声明 | 由个人开发者独立维护,与华为、仓颉编程语言官方团队**无任何隶属或背书关系** |
| 传染性风险 | **无**。全部直接依赖均为宽松许可证(MIT / Apache-2.0 / BSD-2-Clause / ISC)或字体专用许可证(SIL OFL 1.1),不含 GPL / AGPL / LGPL 组件,不会改变本项目许可证 |
---
## 2. 随软件分发的直接依赖
### 2.1 运行时依赖(打包进应用)
版本号取自 `package.json` 与 `node_modules/*/package.json` 的实测值,许可证取自各包自身的 `license` 字段。
| 组件 | 版本 | 许可证 | 用途 | 分发形态 |
| --- | --- | --- | --- | --- |
| [monaco-editor](https://github.com/microsoft/monaco-editor) | 0.45.0 | MIT | 编辑器内核(与 VS Code 同源),提供语法高亮、补全、悬停、多光标 | 随安装包分发 |
| [@toast-ui/editor](https://github.com/nhn/tui.editor) | 3.2.2 | MIT | 内置笔记系统的 Markdown 编辑器 | 随安装包分发 |
| [@toast-ui/editor-plugin-color-syntax](https://github.com/nhn/tui.editor) | 3.1.0 | MIT | 笔记编辑器的代码语法高亮插件 | 随安装包分发 |
| [tui-color-picker](https://github.com/nhn/tui.color-picker) | 2.2.8 | MIT | 设置面板的取色器 | 随安装包分发 |
| [katex](https://katex.org/) | 0.18.4 | MIT | 笔记中的数学公式渲染 | 随安装包分发 |
| [node-pty](https://github.com/microsoft/node-pty) | 1.1.0 | MIT | 内嵌终端的伪终端支持(含原生编译模块) | 随安装包分发 |
### 2.2 应用运行框架
| 组件 | 版本 | 许可证 | 说明 |
| --- | --- | --- | --- |
| [Electron](https://www.electronjs.org/) | 30.0.0 | MIT | 桌面应用框架;其内嵌的 Chromium 采用 BSD-3-Clause、Node.js 采用 MIT,均由 Electron 上游一并声明 |
### 2.3 开发与构建依赖(不进入安装包)
| 组件 | 版本 | 许可证 | 用途 |
| --- | --- | --- | --- |
| electron-builder | 24.13.3 | MIT | NSIS 安装包构建 |
| electron-packager | 17.1.2 | **BSD-2-Clause** | 免安装目录版打包 |
| esbuild | 0.25.9 | MIT | 资源与模块打包 |
| eslint | 9.39.5 | MIT | 静态代码检查 |
| playwright-core | 1.62.1 | Apache-2.0 | Electron E2E 测试驱动 |
| sharp | 0.33.5 | Apache-2.0 | 图标位图处理 |
| png-to-ico | 3.0.2 | MIT | PNG 转 ICO |
| rcedit | 5.0.2 | MIT | 写入 exe 图标与版本信息 |
### 2.4 字体资源
| 字体 | 许可证 | 用途 | 声明文件 |
| --- | --- | --- | --- |
| [JetBrains Mono](https://github.com/JetBrains/JetBrainsMono) | **SIL Open Font License 1.1** | 编辑器等宽字体 | [`assets/fonts/JETBRAINS_MONO_LICENSE`](assets/fonts/JETBRAINS_MONO_LICENSE)(含 OFL 全文) |
| [Inter](https://rsms.me/inter/) | SIL Open Font License 1.1 | 界面无衬线字体 | 上游仓库声明 |
> OFL 允许将字体嵌入并随软件自由分发,条件是不得单独出售字体本身、衍生版不得使用保留字体名。
> CIDE 仅原样嵌入未修改的官方字体文件,并随附上述许可证声明,符合 OFL 1.1 条款。
### 2.5 品牌与图标资源
`assets/branding/` 下的 CIDE 图标与 Logo 为本项目**原创设计**,随本项目一并以 Apache-2.0 授权。
### 2.6 传递依赖
以上为本项目直接声明的全部依赖。完整的传递依赖树及其精确版本、许可证见 [`package-lock.json`](package-lock.json)。
本项目未对任何第三方源码进行修改、补丁或再包装,均以原始发布形态经 npm 引入。
---
## 3. 明确**不随**本软件分发的外部内容
这一节是本项目最重要的合规边界:CIDE 的能力依赖仓颉 SDK 与官方文档,但**二者均不在仓库与安装包的分发范围内**。
| 内容 | 来源 | 上游许可证 | CIDE 的使用方式 |
| --- | --- | --- | --- |
| **`.cjo` 接口元数据** | 用户本机安装的仓颉 SDK(`lib/cjc/stdlib/**/*.cjo`) | Apache-2.0 + Runtime Library Exception | **仓库与安装包内均无任何 `.cjo` 文件**(`.gitignore` 已屏蔽 `*.cjo` / `*.cjow`)。运行时只读取用户自行安装的 SDK,解析结果仅存在于内存 |
| **API 中文说明文本** | [Cangjie/cangjie_docs](https://gitcode.com/Cangjie/cangjie_docs)(经 `cj-docs.gitcode.com` 官方文档站) | CC BY 4.0 | **不入库、不打包**。运行时按需从官方站抓取,仅做进程内缓存(不落盘),并在面板内每条说明后标注「来自官方文档 <版本>」以保留署名 |
| **CPython 3.11 运行时** | [python.org](https://www.python.org/downloads/) 官方 embeddable 包 | PSF License | 不入库(`.gitignore` 屏蔽 `bundled-resources/python/`)。开发者执行 `npm run python:fetch` 时从 python.org 直接下载;若构建安装包前已拉取,则该运行时随 `extraResources` 进包,供 `lldb-vscode` 调试器加载,其许可证由 Python 官方声明 |
| **仓颉编译器 / LSP / cjpm / cjcov / lldb-vscode** | 用户本机安装的 Cangjie SDK | 仓颉 SDK 许可协议 | 仅以子进程方式调用用户已安装的可执行文件,**不复制、不内嵌、不重新分发** |
CIDE 不对仓颉 SDK 与官方文档做任何形式的再分发或二次授权;上述内容的版权归原权利人所有,本项目仅在其各自许可证允许的范围内调用与展示。
---
## 4. 商标声明
「仓颉 / Cangjie」、「华为 / Huawei」、「HarmonyOS」及本项目提及的其他产品名称均为各自权利人的商标或注册商标。
本项目提及这些名称仅用于说明技术兼容性,不构成任何形式的授权、背书或关联关系。
---
## 5. 复核方式
评审可通过以下任一方式独立核验本文件的准确性:
```bash
# 直接依赖与其许可证声明(npm 元数据)
npm ls --depth=0
node -e "for (const p of ['monaco-editor','katex','node-pty','electron','sharp','electron-packager']) \
console.log(p, require('./node_modules/'+p+'/package.json').license)"
# 确认仓库与安装包内不含任何 .cjo
git ls-files '*.cjo' '*.cjow' # 应无输出
```
本文件随代码一并维护。若后续新增或移除任何依赖,应同步更新本文件与 [CHANGELOG.md](CHANGELOG.md)。