跳到主要内容

许可证与分发

term-ime 的源码以 MIT License(Copyright (c) 2026 adam-ikari)发布。但发布产物不是单一授权:静态二进制把多个第三方库编进去了,随包分发的拼音数据里还有 LGPL-3.0 与 Apache-2.0 的派生文件。这一页把每样东西的授权和分发形态讲清楚。

静态二进制里编了什么​

ti 是一个完全静态链接的单文件,零运行时共享库依赖。下面这些第三方库的代码被静态链接进了二进制,再分发二进制时必须随附它们的版权声明与许可文本:

组件版本许可版权方
librime(fork librime-stl)1.17.0(4ea39b33)BSD-3-ClauseRIME Developers
OpenCC1.1.9Apache-2.0BYVoid/OpenCC
└ bundled marisa0.2.6BSD-2-Clause 或 LGPL-2.1-or-later(双授权,本项目取 BSD-2)Susumu Yata
└ rapidjson(头文件)1.1.0MITTHL A29 Limited / Milo Yip
└ darts-clone(头文件)0.32BSD-2-ClauseSusumu Yata
utf8proc2.11.3MITSteven G. Johnson 等
FTXUI6.1.9MITArthur Sonzogni
spdlog1.15.0MITGabi Melman
nlohmann/json3.11.3MITNiels Lohmann
libuv1.52MITlibuv project contributors
Boost.SML1.1.13Boost Software License 1.0Kris Jusiak
utf8-cpp(utf8.h)—Boost Software License 1.0Nemanja Trifunovic
X11 keysymdef.h—MIT/X11(Open Group)The Open Group
yaml-cpp0.8.0MITJesse Beder
leveldb1.23BSD-3-ClauseThe LevelDB Authors

没有编进二进制的(只在源码树或测试里,不随发布产物分发):glog(构建时 ENABLE_LOGGING=OFF,librime 走 no_logging.h)、googletest(仅测试)、tclap / pybind11 / google-benchmark(OpenCC 工具链,OPENCC_BUILD_TOOLS=OFF/OPENCC_BUILD_DATA=OFF)。

备注

实际链接进二进制的是 OpenCC 自带的 marisa 0.2.6(deps/librime/deps/opencc/deps/marisa-0.2.6),不是 deps/librime/deps/marisa-trie(0.3.1)——后者虽被构建,但其 stage 产物被 OpenCC 的 install 覆盖了。两者都是 Susumu Yata 的双授权(BSD-2 / LGPL-2.1+),本项目按 BSD-2-Clause 分发。

随包分发的拼音数据​

share/term-ime/rime-data/ 里的数据授权是按文件分开的,不能整体当作 MIT。词库本体(luna_pinyin.dict.yaml、essay.txt、opencc/)的授权详见 deps/librime/dict/LICENSE:

文件授权来源
luna_pinyin.dict.yamlLGPL-3.0派生自 rime/rime-luna-pinyin(繁体底本转简体去重)
essay.txtLGPL-3.0派生自 rime/rime-essay
opencc/emoji.json、emoji_word.txt、emoji_category.txtLGPL-3.0逐字副本自 rime/rime-emoji(Emoji-14.0 分支);term-ime 未接线(默认关),仅随词库落盘
opencc/t2s.json、t2hk.json、t2tw.json、*.ocd2Apache-2.0派生自 BYVoid/OpenCC
opencc/t2s_full.json、opencc/variants*.txtMIT本项目原创

term-ime 自有的方案文件(data/rime-data/*.yaml,随包一起分发):

文件授权来源
pinyin.yamlLGPL-3.0rime/rime-luna-pinyin 逐字副本
luna_pinyin.schema.yamlLGPL-3.0rime-luna-pinyin 派生(改 1 行 opencc_config)
luna_pinyin_simp.schema.yamlLGPL-3.0rime-luna-pinyin 派生(重写)
luna_pinyin_simp_fuzzy.schema.yamlMIT本项目原创
default.yamlBSD-3-Clauselibrime data/minimal/default.yaml 派生

分发渠道​

GitHub Releases(主要)​

推送 v* tag 触发 release.yml,产出两个 Linux tarball:

term-ime-linux-x86_64.tar.gz (+ .sha256)
term-ime-linux-aarch64.tar.gz (+ .sha256)

解包后的目录形态(即安装形态):

term-ime/
├── bin/
│ ├── ti # 主命令
│ └── term-ime -> ti # 兼容别名
├── share/term-ime/
│ ├── rime-data/ # 方案 + 词库 + essay + opencc 数据(含 LICENSE / LICENSE-schemas.txt 逐文件授权)
│ └── translations/ # UI 翻译(en / zh-CN)
├── LICENSES/ # 各第三方许可全文(19 个文件)
├── LICENSE # 本项目 MIT
└── README.md

LICENSES/ 由 tools/collect-licenses.sh 从 vendored 依赖组装,release 流程在打包前重跑一次,保证文本与当次链接的版本一致。逐项对应关系:

tarball 内文件覆盖组件
librime-BSD-3-Clause.txtlibrime
opencc-Apache-2.0.txtOpenCC
marisa-BSD-2-Clause.txtbundled marisa 0.2.6
darts-clone-BSD-2-Clause.txtdarts-clone
rapidjson-MIT.txtrapidjson(从 header 内嵌声明切出)
utf8proc-MIT.txt / ftxui-MIT.txt / spdlog-MIT.txt / nlohmann-json-MIT.txt / yaml-cpp-MIT.txt同名库
libuv-MIT.txt / libuv-extra.txtlibuv 及其附加声明
boost-sml-BSL-1.0.txtBoost.SML
utf8-cpp-BSL-1.0.txtutf8-cpp(从 utf8.h 切出)
X11-keysymdef.txtkeysymdef.h(从 header 切出)
leveldb-BSD-3-Clause.txtleveldb
LGPL-3.0.txtessay.txt、pinyin.yaml、luna_pinyin*.schema.yaml
GPL-3.0.txtLGPL-3.0 的引用基础文本
rime-dict-data.txtrime-data 目录的逐文件授权声明(同时随 rime-data/LICENSE 落盘);方案文件的授权为 rime-data/LICENSE-schemas.txt,两者来源不同各自成文

LICENSES/ 中无独立许可文件的三项(rapidjson、utf8-cpp、X11 keysymdef)由脚本按行号从对应 header 切出,并在切完后校验内容包含预期标记;行号漂移时脚本直接失败,而不是发出截断的许可。

每个 tarball 附 .sha256 sidecar,三方校验:GitHub API digest / sidecar / 独立 curl 复算。

一键安装脚本​

curl -fsSL https://adam-ikari.github.io/term-ime/install.sh | bash

install.sh 从 GitHub Releases 拉 tarball、校验 sha256、装到 PREFIX(默认 ~/.local,免 sudo;--prefix /usr/local 走 sudo)。装的内容就是上面那个目录形态。

源码构建​

git clone --recursive https://github.com/adam-ikari/term-ime.git
cd term-ime
cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build -j

所有第三方依赖都以 git submodule 形式随源码 vendored,克隆即有,无需系统装 -dev 包。

已停用的渠道​

Homebrew tap 在 v1.1.6 起停用。Termux/Android 在 2026-10-02 彻底删除(实验性支持期间未在真机验证)。

再分发须知​

再分发 term-ime 的二进制或数据时,必须满足各组件的授权义务:

  • MIT / BSD / BSL / Boost:随二进制附版权声明与许可文本。
  • Apache-2.0(OpenCC 库与数据):附 Apache-2.0 全文;若上游有 NOTICE,一并附上。
  • LGPL-3.0(luna_pinyin.dict.yaml、essay.txt、opencc/emoji*、pinyin.yaml、luna_pinyin*.schema.yaml):附 LGPL-3.0 全文,并提供对应源码(数据文件本身即源码,随包已提供;修改过的地方——luna_pinyin.dict.yaml 转简体去重、essay.txt 转简体去重、schema 改 opencc_config——需标注)。

三条分发路径都随附许可文本:release tarball 根目录下是 LICENSE(本项目 MIT)与 LICENSES/(19 个第三方许可全文,由 tools/collect-licenses.sh 在打包前从 vendored 依赖重新生成);install.sh 会把它们装到 $PREFIX/share/term-ime/(cmake --install 同理)。rime-data/ 自身带两份声明——LICENSE(词库,来自 deps/librime/dict/)与 LICENSE-schemas.txt(方案,来自本仓库 data/rime-data/)——随应用一起落盘,而不是只在解包瞬间可见。

完整源码(含所有 submodule 的许可文件)在 github.com/adam-ikari/term-ime 与 github.com/adam-ikari/librime-stl。