【开源许可与版权工程】Copyleft 的工程边界:动态链接、容器、SaaS 算不算「分发」

💡 原文中文,约32600字,阅读约需78分钟。
📝

内容提要

本文探讨了开源许可证中的Copyleft概念,重点分析了GPL、LGPL和AGPL的触发条件,特别是在内部使用、分发和SaaS场景下的法律责任。通过具体条款分析,提供了工程师在实际应用中的判断标准和合规建议,以帮助理解不同许可证对软件使用和分发的影响。

🎯

关键要点

  • Copyleft 概念在开源许可证中至关重要,特别是 GPL、LGPL 和 AGPL 的触发条件。

  • GPLv2 的 'distribute' 定义强调物理传递,内部使用不算分发,因此不触发源代码披露义务。

  • GPLv3 引入了 'convey' 概念,意图更宽泛,涵盖了更多传播形式,但不包括仅通过网络与用户交互的情况。

  • AGPL-3.0 的 §13 规定,修改后的程序通过网络交互时,必须向用户提供获取源代码的机会。

  • LGPL 允许动态链接而不触发整体开源义务,但静态链接需提供目标文件以允许用户重链接。

  • 容器镜像的分发被视为程序的分发,必须遵循相应的许可证要求。

  • 在 SaaS 场景下,AGPL 旨在堵住 'SaaS 漏洞',确保用户能够获取修改后的源代码。

  • 工程师在实际应用中应遵循明确的判断原则,判断软件是否离开控制范围。

  • 不同许可证在不同部署场景下的触发条件各异,需仔细分析以确保合规。

  • 合规义务包括保留版权声明、提供源代码和遵循许可证要求,确保透明和合法使用开源软件。

延伸问答

Copyleft 在开源许可证中有什么重要性?

Copyleft 是开源许可证中的核心概念,确保修改后的软件在分发时也保持开源,保护用户的自由使用权。

GPL、LGPL和AGPL之间有什么主要区别?

GPL要求所有衍生作品也必须开源,LGPL允许动态链接而不触发整体开源义务,AGPL则要求在网络交互中提供源代码。

在内部使用软件时,是否需要遵循GPL的源代码披露义务?

根据GPLv2,内部使用不算分发,因此不需要披露源代码;但GPLv3和AGPL在某些情况下可能会有不同的要求。

动态链接和静态链接在LGPL下有什么不同的合规要求?

动态链接允许用户替换库而不触发整体开源义务,而静态链接则需要提供目标文件以允许用户重链接。

在SaaS场景下,AGPL如何确保用户获取源代码?

AGPL要求如果修改了程序并通过网络与用户交互,必须向用户提供获取修改后源代码的机会。

容器镜像的分发是否算作软件的分发?

是的,分发容器镜像被视为软件的分发,必须遵循相应的许可证要求。

➡️

继续阅读