许可证

[English]

本章是 ESP-VISION 许可证相关说明的唯一参考。这里的内容用于帮助开发者理解代码来源,不构成法律意见;具体义务始终以对应版本的许可证原文和源文件头为准。

ESP-VISION 自有代码(platform/、大部分 modules/、boards/ 以及构建文件)以 Apache License 2.0 发布,记录在仓库顶层的 LICENSE 中。引入的第三方代码保持其源文件、SPDX 标识或上游许可证声明的原始许可证;仓库顶层 LICENSE 不会覆盖或替换这些许可证。

许可证清单

下表列出与分发最相关的直接依赖。它不是所有传递依赖的完整清单。

项目或代码

本地路径

在 ESP-VISION 中的作用

许可证

tasmota-webserial-esptool 9.4.2

host/device-core/package.json 依赖,仅 src/browser_rom.js 加载

浏览器 Web Serial ROM 后端;上游 src/stubs/README.md 标明 stub 来源为 esp-flasher-stub v1.4.0

MIT(上游 package manifest);stub 二进制双许可 Apache-2.0/MIT。作为依赖安装,本仓库不复制或修改其源文件。

Device Core 主机 SDK

host/device-core

EV-MUX v4 主机通信、Python、资源文件、发现及图像接入

Apache-2.0(host/device-core/LICENSE);历史 MIT 声明保留于 NOTICE

设备端相机/LCD 测试片段

host/device-core/tests/fixtures/device-checks.py

从固件测试迁入的真机验收函数,不包含在 npm 包中

Apache-2.0,保留原版权声明

MicroPython v1.28.0

lib/micropython

Python 运行时与 ESP32 port 基线

MIT

MicroPython 执行与线程适配

overlay/micropython/shared/runtime/pyexec.c、overlay/micropython/ports/esp32/mpthreadport.c

基于固定上游文件捕获和继承会话来源,保留原版权和许可证头

MIT

micropython-ulab 6.12

lib/ulab

数组与数值计算

MIT

OpenMV v5.0.0 imlib 子集

components/imlib

图像处理与绘制算法

MIT,部分文件单独授权

OpenMV Python 绑定代码

modules/py_image*、modules/py_helper*

OpenMV 风格的 image API 绑定

MIT

OpenMV AprilTag 实现

components/imlib/upstream/apriltag.c

AprilTag 与矩形检测

BSD-2-Clause

ZXing-C++ v3.0.2

lib/zxing-cpp

一维条码识别后端

Apache-2.0

ESP-DL

Component Registry

模型推理运行时

MIT

TensorFlow Lite Micro / esp-tflite-micro

Component Registry

TensorFlow Lite Micro 推理运行时

Apache-2.0

esp_new_jpeg

Component Registry

软件 JPEG 编解码

Espressif MIT(限乐鑫产品)

esp32-camera

Component Registry

相机驱动

Apache-2.0

ESP-IDF

外部 SDK

构建系统、驱动和媒体组件

Apache-2.0

NanoTrack V2 预训练模型

models/nanotrack_v2

本地量化的单目标追踪模型资源

上游 NanoTrack 提供 Apache-2.0 文本;权重独立条款尚未核实,见目录内 README 和来源清单

如何理解许可证

仓库顶层的 LICENSE 适用于 ESP-VISION 自有代码,但不会覆盖第三方许可证:

  • 第三方文件继续由其原始许可证授权,并保留原始版权与许可证头;

  • 同一个目录可能包含不同许可证,例如 imlib 主要为 MIT,而 apriltag.c 为 BSD-2-Clause;

  • Apache-2.0、MIT 和 BSD 等宽松许可证通常允许组合分发,但仍需履行保留版权、许可证文本和声明等条件;

  • 某些乐鑫组件使用带产品范围条件的许可证。例如当前 esp_new_jpeg 许可证文本限定用于乐鑫产品,不能只根据名称将其视为无附加条件的通用 MIT;

  • 商标权、专利权、模型文件和数据集可能有独立条款,不能从源码许可证自动推导。

发布源码或固件前,至少应检查:

  1. 仓库顶层 LICENSE;

  2. 每个 Git submodule 的 LICENSE;

  3. 所选构建生成的 managed_components/*/LICENSE;

  4. 被修改或新增源文件的 SPDX 标识、许可证头和版权声明;

  5. 模型、字体、测试图片等非代码资产的来源和使用条款。

OpenMV 与 GPL 代码路径

OpenMV 上游并非所有可选算法都采用相同许可证。ESP-VISION 在 micropython.cmake 和 components/imlib/CMakeLists.txt 中设置 OMV_NO_GPL=1,不编译 OpenMV 中受 GPL 条件控制的代码路径。这个开关只说明当前默认构建排除了这些代码,不应被理解为对任意新增文件许可证的自动判定。

修改 imlib 功能开关、同步 OpenMV 上游代码或加入新算法时,必须逐文件检查许可证;不要仅根据文件所在目录推断许可证。

增加第三方代码

向 ESP-VISION 增加第三方包或源文件时:

  1. 固定可复现的版本或提交;

  2. 逐文件确认许可证及其与项目分发方式的兼容性;

  3. 保留上游版权、SPDX 标识、许可证文本和必要的 NOTICE;

  4. 在本清单中记录来源、版本、本地路径、用途和许可证;

  5. 确认构建开关确实排除了不准备分发的代码,而不是仅在文档中声明;

  6. 许可证不清楚或存在商业发布约束时,在合入前完成法律审查。

二进制上传原生测试通过 PSA 测试替身使用系统 OpenSSL 3 libcrypto(Apache-2.0)作为 SHA-256 对照;仅用于主机测试,不链接到固件,也不随 npm 分发。固件使用 ESP-IDF PSA Crypto。