这篇文章以CC BY 4.0协议发布,由于作者水平有限,文章中有误的地方还望海涵。本文仅对作者的看法进行交流,如您需要在您的应用中使用受开源协议保护的开源软件/代码还请详细阅读协议并咨询专业人士或律师。


一般来说,软件、代码等是其作者的著作,为作者所有,受到著作权、版权相关法律的保护。但是,一些开发者愿意有条件\无条件地放弃部分\全部著作权以实现让软件更广泛地传播等目的。为此,开发者们编制了开源协议来赋予他人相关权利。

目前,常见的开源协议包括:GPL、MIT、BSD、Apache、MPL等。

开源

大多数开源协议都允许你开源地去发布你的应用,其中有些协议限定了软件发布时可以使用的协议。不同的协议有不同的具体要求。

但总的来说,采用一个符合协议要求的开源协议发布软件,并合适地将所依赖开源软件的协议、声明等附带在你所开发的应用中便可以合法的使用其他开源软件了。

闭源且需要向其他人发布

对于MIT、BSD、Apache等协议来说,你可以闭源的发布使用了开源代码的软件。但是,你应当合适地将所依赖开源软件的协议、声明等附带在你所开发的应用中,否则你的行为可能导致授权收回而成为构成侵犯著作权的行为。

对于GPL等协议,不仅有以上要求,如果你在你所开发的软件中使用了开源代码(准确的判断是看内存空间隔离,简单来讲就是是否处在同一进程内),还会要求你向获取到你的软件的用户开放源代码。但是,并非所有使用都需要你开源。如果你使用命令行调用并进行进程间通信的方式,如5zip.exe -f "somefile",或者网络调用的方式来使用是不需要开源的。对于这样的使用方式,你需要合理且符合协议要求地分发开源软,并合理的配置并开发软件。

另外,还有一个特殊一点的LGPL协议。如果你的应用是通过动态链接的方式使用所依赖的开源软件(访问dll、so等),那么你可以闭源软件,并只需要合理且符合协议要求地分发开源软件(dll、so)。其他内容与GPL的要求无异。

闭源提供网络服务

大多数开源协议没有限制这样的使用方法。你完全可以闭源你的软件、也不提供相关协议声明文件并向其他人提供网络服务。

但是,AGPL协议对此进行了限制,如果你向其他人提供了网络服务并使用了开源软件,那么你还应该对接收了网络服务的其他人提供源码及相关声明。那么,你就无法闭源地提供网络服务了吗?也不是,可以通过代理服务访问的方式规避。但是,还是需要向代理服务访问者提供源码并遵守协议规定。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐