本文目录导读:

“二次开源”通常指的是在他人开源代码的基础上进行修改、扩展或衍生出新的项目,并再次以开源形式发布,这种情况下,是否需要注明来源,答案是明确的:通常需要,且这既是法律要求,也是开源社区的基本准则。
具体取决于你所使用的原始代码采用的开源许可证类型,以下是基于不同许可证的详细说明:
必须注明来源的情况(绝大多数情况)
大多数主流开源许可证都明确要求保留原作者版权声明和许可信息。
-
强互惠型许可证(如 GPL 2.0/3.0, AGPL 3.0):
- 要求:必须注明原始项目来源、作者、版权声明,并遵守相同的开源许可证(即你的衍生项目也必须采用 GPL 或兼容许可证)。
- 示例:如果你基于一个 GPL 协议的软件进行了二次开发,在发布的代码文件、软件“页面或文档中,必须清晰说明该软件基于某个原始项目,并附上原始项目的版权和许可信息。
-
弱互惠型许可证(如 LGPL, MPL 2.0):
- 要求:对于修改过的库文件本身,必须注明来源和版权,如果以静态链接方式使用,需要提供修改后的库源码。
- 示例:修改了某个 LGPL 协议的库,你需要确保修改后的库文件头部保留了原作者的版权声明。
-
宽松型许可证(如 MIT, Apache 2.0, BSD):
- 要求:必须保留原始版权声明和许可文本,这是这些许可证最核心的义务。
- 示例:你从 GitHub 上找到一个 MIT 协议的项目,修改后发布了,你需要在你的项目代码的 LICENSE 文件或代码文件的头部,明确包含:“This project is based on [原项目名称] by [原作者],licensed under the MIT License.”,并附上原作者的版权信息。
- 特别注意:Apache 2.0 许可证还要求,如果你修改了代码,需要标注“Modified”字样,并保留原作者的 NOTICE 文件。
-
公共领域/放弃版权(如 Unlicense, CC0):
- 情况:理论上不需要注明来源,因为原作者已放弃所有权利。
- 建议:强烈建议注明,注明来源是学术诚信和对他人工作的尊重,即使法律上不强制,社区和用户也会期望你这样做。
可以不注明来源的极少数情况
- 许可协议明确允许不署名:几乎没有主流开源许可证会这么规定,即使是 MIT 协议,它也要求“上述版权声明和本许可声明应包含在软件的所有副本或主要部分中”。
- 极小体量或非核心代码的引用:你只是从某个开源项目里借鉴了 3-5 行代码,且不属于核心逻辑或创意,但为了避免争议,建议还是在注释中写明来源。
实际操作的几个关键步骤
无论使用哪种许可证,正确的做法至少包括:
- 保留原 LICENSE 文件:不要删除或修改项目根目录下的
LICENSE、LICENSE.txt等文件。 - 保留代码头部的版权声明:很多代码文件头部有
/* Copyright (c) [Year] [Author] */这样的注释,不要删除。 - 在你的项目中明确引用:在你的项目的
README.md、NOTICE文件或“致谢”部分,写明:- 原始项目的名称和链接。
- 原始作者的姓名或组织。
- 原始项目的许可证类型。
- 你做了哪些修改(尤其是对于 Apache 2.0 等有明确要求的许可证)。
- 使用兼容的许可证:你的“二次开源”项目选择一个能与上游许可证兼容的许可证,你基于 GPL 项目,你的项目也必须用 GPL,你基于 MIT 项目,你可以用 MIT、Apache 2.0 或 GPL等,但需要遵守高冲突规则。
核心答案:是的,二次开源通常必须注明来源。
为什么必须?
- 法律合规:违反许可证条款(如未注明来源)可能导致版权侵权,原作者有权要求你停止发布、删除项目甚至索赔。
- 社区道德:匿名化他人工作是“剽窃”行为,会受到开源社区的严厉批评和抵制,失去信誉和合作机会。
- 技术责任:注明来源可以让用户追溯代码质量、安全更新和问题修复的来源,也有助于你获得上游的更新和反馈。
总结建议:无论原始代码使用何种许可证(甚至是公共领域),注明来源都是一个好习惯。 你只需要在项目文档或代码中简洁、清晰地写明“此项目基于 [原项目名] 进行二次开发,原项目许可证为 [许可证名],版权归 [原作者] 所有。” 这既能确保你合法合规,也体现了你对开源贡献者的尊重。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播