暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【BBM】为什么用AGPL做开源协议?

Pitronic 2021-10-09
4128
作为参考:
  • betaflight是GPLv3.0
  • INAV是GPLv3.0
  • PIDtoolbox是GPLv3.0
  • OpenTX/EdgeTX是GPLv2.0 

而BBM的内核代码选择使用AGPLv3.0协议,这是为什么?

在这篇文章里,笔者希望能够用浅显易懂的语言与逻辑,透彻地解释清楚BBM的知识产权结构,并简单聊一下我们这样做的原因。

首先,要从开源协议开始讲起。



什么是开源协议?

软件,不论收费亦或是付费,都是程序员们辛苦工作的结果。这意味着程序员付出了脑力劳动,而劳动的结果——软件——便是一种特殊形式的财产。程序/软件作者对于这种财产所拥有的权利,便称为软件/代码的知识产权

在没有得到软件产权所有者允许的情况下,理论上所有人都不可以使用他的软件,只可以看——原因显而易见,这是软件作者的财产,任何人不可以在没有获得允许的情况下对别人的财产为所欲为

许多软件都会发布自己的安装包,来鼓励人下载安装,在安装的时候,往往会跳出来类似下面这样的界面。


这就是软件协议。只有当你同意这个协议,你才可以安装、使用这个软件。

而开源协议则是软件作者与其他所有人设立的一种特殊的协议:只要你遵守我所声明的这个协议,那么你不仅可以使用我的软件,还可以得到我的代码,并且在协议规定的范围内,你还可以修改我的代码,并打包成一个新软件。



什么是GPL协议?

在这里借用一张阮一峰前辈的图,原始作者为Paul Bagwell。


可以看到,由于不允许修改成别的开源协议,GPL其实是一种比较严格的开源协议。这被称为GPL的“毒化”效应。

但也正是如此,使得GPL软件的社区非常活跃。

如果你仔细观察betaflight的每一次release,就会看到,在下方提供了源码的下载链接。这同样也是根据GPLv3.0协议来的。



但其实,BBM的kernel并不涉及GPL代码

在开发BBM的内核时,我们深度参考了PIDtoolbox的matlab源码,对PIDtoolbox的关键代码/算法在python中进行了复现与优化。


由于这是在不同编程语言之间进行的转换,在本质上,这是一种代码重写的过程,并不是基于PIDtoolbox代码进行的开发。所以BBM并不包含任何属于GPLv3.0协议的代码,BBM的代码是完全“无毒”的。(参考上文的“毒化”效应)


但你的代码仍然属于一种衍生品啊?

从某种角度来说,确实是这样的,确实可以认为我们“抄”了一些GPL代码。

但是BBM的架构类型却并不受GPLv3.0的约束。


在部署BBM的服务器上,我们专门建立了一个python环境,用来运行BBM的内核代码。也就是说,内核代码直接跑在代码解析环境中,并没有被编译成通用软件。这属于SaaS模式(Software as a Service),即云服务应用。

由于不涉及到“编译成通用软件”这一过程,所以也就没有触发GPLv3.0中的“编译后应当分享源代码”的这一条件。GPLv3.0对于SaaS类型产品完全丧失约束力。这也是GPLv3.0的一个巨大的漏洞。


既然如此,那你何必开源?

我们重写BBM的初衷就是为了方便大家使用:
  • 不用下载好几个G的matlab运行时

  • 不用再纠结系统版本/环境造成python程序闪退/跑不起来



另一方面,穿越机确实是一个研究实践数字信号处理的优秀平台,最初的最初,也就是我们一群怀着同样兴趣的人凑在一起,合力写脚本搞代码的。也许我们都有赚点钱的想法,但并没有想要用这个赚大钱的念头。


AGPLv3.0同样可施加于SaaS类型产品,算是GPLv3.0的一个增强版我们主动在AGPLv3.0协议下开放BBM的内核源代码,便是希望能够将我们的所学所得分享出来,也是一种对开源精神的认同与支持

可能有一点点“得了便宜还卖乖”的嫌疑,但这确实是我们的初衷。


那其余部分呢?

BBM的前端/后端:由pitronic全栈团队制作,不涉及开源代码,不需开源

BBM的黑盒日志解析:基于betaflight的blackbox-tools修改,并编译成了linux的binary,遵循GPLv3.0相关协议,已在下方地址开源:

https://github.com/pitronicteam/blackbox-tools



图文:市民姜先生

美编:SinCerely

审核:辉光管、ColinNiu


如需转载请后台留言

分享给朋友或朋友圈请随意哦

文章转载自Pitronic,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论