【论文阅读】Day3

LiDetector: License Incompatibility Detection for Open Source Software(LiDetector:开源软件的许可不兼容性检测)

SIHAN XU, TKLNDST, College of Cyber Science, Nankai University
YA GAO, TKLNDST, College of Computer Science, Nankai University
LINGLING FAN, TKLNDST, College of Cyber Science, Nankai University
ZHELI LIU, TKLNDST, College of Cyber Science, Nankai University
YANG LIU, Zhejiang Sci-tech University and Nanyang Technological University
HUA JI, TKLNDST, College of Cyber Science, Nankai University

摘要

开源软件(OSS)许可协议规定了重新使用、分发和修改软件时应遵循的条件。除了广泛使用的许可证,如MIT许可证外,开发人员还可以自定义自己的许可证(称为自定义许可证),其描述更加灵活。这些各种许可证的存在对理解许可证及其兼容性构成了挑战。为了避免财务和法律风险,在集成第三方软件包或重复使用附带许可证的代码时,确保许可证的兼容性是至关重要的。在本文中,我们提出了LiDetector,一种有效的工具,用于提取和解释OSS许可证(包括官方许可证和自定义许可证),并检测这些许可证之间的不兼容性。具体而言,LiDetector引入了一种基于学习的方法,可以从任意许可证中自动识别有意义的许可条款,并采用概率上下文无关文法(PCFG)来推断不兼容性检测的权利和义务。实验证明,LiDetector在术语识别方面的精度为93.28%,在权利和义务推断方面的准确度为91.09%,可以以10.06%的FP率和2.56%的FN率有效地检测不兼容性。此外,通过LiDetector,我们对1,846个项目进行的大规模经验研究表明,72.91%的项目受到许可证不兼容性的影响,包括流行的许可证,如MIT许可证和Apache许可证。我们从不同利益相关者的角度总结了所学到的经验,并公开了所有相关数据和复制包,以促进后续研究。

1 引言

开源软件(OSS)是一类其源代码在特定许可证下公开的软件。这些许可证规定了在法律范围内可以重新使用、分发和修改OSS的条件。为了促进软件开发,一种常见的做法是集成OSS代码,以便开发人员无需重新发明轮子。虽然这为软件开发带来了便利,但也引发了安全问题和法律风险,比如在集成第三方组件时由许可不兼容性引起的版权侵权。正如先前的研究所述,当不存在一种许可证满足所有集成的第三方组件的所有权利和义务时,就会发生许可证不兼容性,例如在同一项目中由一个许可证声明的“必须公开源代码”,而另一个许可证声明的“不能公开源代码”。

根据我们对1,846个GitHub项目的初步研究,有48.86%的项目受到许可证不兼容性的影响。值得注意的是,在初步研究中,由于缺乏有效的不兼容性检测工具,我们只调查了可以通过现有工具Ninka识别的一些流行许可证之间的不兼容性。

为解决这一问题,已经有几项研究调查了许可证的兼容性,主要集中在许可证识别和兼容性分析方面。然而,有两个问题限制了先前研究的应用。首先,先前的工作只能调查一组预定义的常见许可证之间的兼容性,几乎无法自动适应其他许可证。例如,Software Package Data Exchange specification (SPDX)-VT 为解开20个知名许可证的兼容关系专门预定义了一个依赖图然而,SPDX-VT无法处理其他许可证。其次,检测不兼容性的规则需要对每个许可证进行手动定义和指定,这是在许可证被更改、更新或由开发人员自定义时自动检测不兼容性的主要障碍。在先前的研究中,只有FOSS-LTE 能够适应解释任意许可证。然而,它只能检测许可证中的38条规定,开发人员仍需要手动分析给定项目的兼容性。实际上,在SPDX 中的流行许可证或官方许可证通常有各种版本和异常情况,除此之外,开发人员还被允许创建自己的许可证(即自定义许可证)。根据我们的初步研究,有24.56%的许可证文本是由开发人员自定义的。不同的许可证规定了不同的权利和义务。因此,识别和手动定义社区中所有许可证的关系是不切实际的。相反,提出一种通过自动解释许可证并检测各种许可证(包括自定义许可证)之间的许可证不兼容性问题的有效方法至关重要。

为此,本文提出了LiDetector,一个用于解释许可证以检测开源软件许可证不兼容性的自动化工具。它首先构建一个概率模型来识别有意义的许可条款,然后通过语法分析进行情感分析,推断出许可证的权利和义务。基于识别的术语和许可证所暗示的态度,LiDetector能够针对任意许可证识别许可证不兼容性。比较实验证明了LiDetector的有效性,术语识别的精度为93.28%,召回率为75.70%,权利和义务推断的准确度为91.09%,从200个Github项目中识别了169个不兼容的项目(误报率为10.06%,漏报率为2.56%)。为了进一步研究实际开源软件中的许可证不兼容性,我们利用LiDetector对1,846个Github项目进行了实证研究,发现有72.91%的项目受到许可证不兼容性的影响,其中包括一些非常流行的许可证,如MIT许可证和Apache许可证。此外,“公开源代码”引发了最多的冲突(7,186个),需要更多关注以避免严重的法律风险。最后,根据我们从不同利益相关者(例如开发人员)的角度进行的研究,总结了所学到的教训,以阐明许可证兼容性的重要性和LiDetector的实用性。

总结起来,我们做出了以下创新贡献:

  • 我们提出了LiDetector,一种混合有效的方法,可自动理解许可证文本并推断权利和义务,以检测开源软件中任意许可证的不兼容性,包括广泛使用的和自定义的许可证。
  • 大量比较实验证明了LiDetector相对于现有方法的有效性,在开源项目的许可证不兼容性检测中,误报率为10.06%,漏报率为2.56%。
  • 我们通过利用LiDetector进一步对1,846个Github项目进行了大规模实证研究,发现72.91%的项目受到许可证不兼容性的影响,涉及到MIT和Apache许可证等流行许可证,这需要开发人员和软件公司更多的关注。我们在Github上发布了所有数据集和复制包供社区使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值