我的情况如下:
我在嵌入式设备上运行嵌入式Linux系统.它使用由第三方提供的根文件系统映像以及用于开发的工具链.
我通过添加一些已编译的开源程序(在各种许可下)对根文件系统映像进行了一些修改,现在它还包含Qt(LGPL).
这些设备通过预先安装的内核,rootfs和应用程序交付给最终用户.可以更新/升级包括rootfs和可能的内核的应用程序.
我已经看到在Android上,文件及其相应的许可证只是列在一个长文本文件中.是否有必要以这种方式列出所有单个文件,还是有其他方法来处理此问题?
这通常是怎么做的?
解决方法
第二,我不是律师,也不是大多数人.以下是我多年来根据经验对事物的看法.如果你遵循我的建议,不要怪我,它会对你产生反感.
第三,阅读所有许可证,并确保你明白他们在说什么.如果没有,请从我的第一点寻求澄清.
第四:
GPL / LGPL不要求向源提供应用程序.他们要求“按要求”提供来源.将它放在受密码保护的网页上,或保留一份副本,你可以刻录到CD和邮件(你可以收取CD和邮费),如果有人要求足够的话.
即使这些二进制文件来自第三方,您也有义务为您分发的任何二进制文件提供源代码.如果第三方不会向您提供其来源,那么您应该指出GPL要求或找到其他供应商.将GPL代码请求引导到上游供应商或未修改包的网页是不够的,特别是如果它来自可能修改它的第三方供应商.您需要注意将正确版本的代码与您制作的每个二进制版本进行匹配,以便为产品的任何特定版本提供源代码.
您应该归因于所有免费(和非免费)软件及其许可证.有些许可证不需要它,有些许可证(早期BSD)可以.最好是安全而不是抱歉.这也是向用户展示各种许可证的好方法,并允许他们决定是否使用您的产品.
如果您有一个链接[L] GPL代码的专有应用程序,您将需要非常小心链接.您可能无意中将代码与病毒许可证(GPL)链接,然后如果有人注意到并要求源代码,您就会遇到麻烦.请确保您没有出于同样的原因静态链接LGPL代码(更多:Can I inline function calls to functions defined in headers of LGPL packages?).
如果使用自定义交叉编译器,还应考虑包含工具链的源代码.我不确定GPL实际上是否需要它,但这是一个混蛋动作,给某人一个源,然后让他们无法实际编译它并瞄准你的设备.我知道至少有一个供应商这样做 – 他们修改了一些语言并修补了他们的编译器.他们没有分发编译器,因此没有要求分发源代码.因此,无法从提供的源构建以匹配目标. AFIK他们已经停止这样做,所以我不会说出名字.