首页> 中国专利> 基于软件依赖的开源软件许可证选择方法

基于软件依赖的开源软件许可证选择方法

摘要

本发明公开了基于软件依赖的开源软件许可证选择方法,该方法主要包含以下四个步骤:第1步:基于Maven平台项目数据表示开源项目与依赖项关系,构建项目依赖网络;第2步:计算用户项目和训练集项目之间的相似度;第3步:对相似项目的结果排序,返回许可证列表;第4步:检测项目依赖项许可证冲突并生成检查报告。本发明提供的方法能够满足开发者选择适用开源许可证和许可证兼容性需求。

著录项

  • 公开/公告号CN113268713A

    专利类型发明专利

  • 公开/公告日2021-08-17

    原文格式PDF

  • 申请/专利权人 西南大学;

    申请/专利号CN202110619153.4

  • 申请日2021-06-03

  • 分类号G06F21/10(20130101);G06F21/12(20130101);G06F3/01(20060101);

  • 代理机构50272 重庆纵义天泽知识产权代理事务所(普通合伙);

  • 代理人舒梦来

  • 地址 400715 重庆市北碚区天生路2号

  • 入库时间 2023-06-19 12:14:58

说明书

技术领域

本发明涉及软件工程技术领域,具体涉及基于软件依赖的开源软件许可证选择方法。

背景技术

在开源生态系统中,开源许可证具有保障软件开发者(或组织)的知识产权、保持软件长久稳定的发展、吸引相同开源理念的软件贡献者等作用。然而也为开源软件的使用和分发带来了知识产权风险。造成这种问题的原因有开源软件许可证种类和数量繁多、开发者难以理解许可证条款。根据研究发现目前仅OSI认证的许可证就有84个和Daniel等人通过调查发现软件开发者因为缺乏许可证相关知识而使得开源软件的自由使用存在巨大的挑战和法律风险。开源许可证实质是一中由众多许可条款构成的法律文本包含了许可者授予的权利以及被许可者的义务。因此,软件开发者选择许可证时需人工分析和理解许可证的条款和义务,否则难以确定开源许可证的选择。为此,如何为软件开发者选择适用的开源软件许可证是亟需解决的问题。

发明内容

本方案的目的在于提供一种基于软件依赖的开源软件许可证选择方法,以为软件开发者提供适用的开源软件许可证。

为了达到上述目的,本方案提供基于软件依赖的开源软件许可证选择方法,包括如下步骤:第1步:基于Maven平台项目数据表示开源项目与依赖项关系,构建项目依赖网络;第2步:计算用户项目和训练集项目之间的相似度;第3步:对相似项目的结果排序,返回许可证列表;第4步:检测项目依赖项许可证冲突并生成检查报告。

进一步,所述第1步中构建许可证建模并提取条款,具体为:步骤1-1:版本处理;选取原始数据集中的最新版本,构建项目-版本-依赖项关系;步骤1-2:数据清洗;清洗数据集中的无效数据和缺失值。

进一步,所述第2步中训练许可证主题模型并提取主题,具体为:步骤2-1:提取相似的开源项目;根据用户软件的依赖项目寻找具有相似性的开源软件项目;步骤2-2:显示相似的开源项目;若两个项目类似,则用一组相同的库实现功能;若两个项目不类似,则继续寻找类似的项目。

进一步,所述第3步中建立主题与条款之间的对应关系,具体为:判断不同许可证之间的兼容关系,若两个不同许可证组件的软件在其中任一项的许可证下获得授权,则两个许可证是单向兼容的;若两个不同许可证组件的软件在其中任一项的许可证下无法授权,则两个许可证不兼容;将许可证之间的兼容性生成开源许可证兼容性分析图。

进一步,还包括:第5步,人工核查条款与主题的兼容性;具体为,人工核查的计算机上设有用于识别人员眼球的识别模块和输入光标,识别模块采集到人员眼球持续2s注视许可证条款的信号后,自动返回第3步,重新建立主题与条款之间的对应关系,生成该许可证的开源许可证兼容性分析图,输入光标接受选取适合该主题许可证条款的信号后,新的许可证条款自动替换原有的许可条款,生成新的许可证的开源许可证兼容性分析图。

进一步,所述识别模块采集到人员眼球脱离输入光标原有的位置持续2s的信号后,所述输入光标自动移动到眼球注视的位置。

进一步,所述第4步中获取许可证条款并表示许可证,具体为:利用广度优先搜索算法寻找兼容性许可证节点,用队列实现广度优先遍历算法,判断由许可证指向许可证节点边是传递性边或非传递性边,若许可证指向许可证节点边是传递性边,则许可证具有兼容性;若许可证指向许可证节点边是非传递性边,则许可证传递关系终止。

本方案的有益效果:本方案将存在兼容性的多个许可证整理成常用开源许可荣兼容性分析图,满足开发者选择适用开源许可证和许可证兼容性需求,减少软件开发者因为缺乏许可证相关知识而使得开源软件的自由使用存在巨大的挑战和法律风险的现象。

附图说明

图1为本发明基于依赖的许可证选择方法框架图。

图2为本发明开源软件项目依赖网络图。

图3为本发明常用开源许可证兼容分析图。

图4为本发明项目编程语言数据分布图。

图5为本发明项目依赖项数目数据分布图。

具体实施方式

下面通过具体实施方式进一步详细的说明:

实施例1

基于软件依赖的开源软件许可证选择方法,包括如下步骤:第1步:基于Maven平台项目数据表示开源项目与依赖项关系,构建项目依赖网络;第2步:计算用户项目和训练集项目之间的相似度;第3步:对相似项目的结果排序,返回许可证列表;第4步:检测项目依赖项许可证冲突并生成检查报告。

如附图1所示,在选择合适的许可证时,软件依赖性扮演了一个重要的因素。用户也可以参考类似的开源项目来选择许可证。该方法可以总结为三个过程:构建依赖网络、计算软件相似度和检测许可证违规。

其中,第1步中构建许可证建模并提取条款,具体为:步骤1-1:版本处理;选取原始数据集中的最新版本,原始数据集中每个项目存在多个发布版本,而每个版本会存在不同的依赖项,为此我们选取项目元数据中最新的版本,构建项目-版本-依赖项关系。步骤1-2:数据清洗;清洗数据集中的无效数据和缺失值。数据集中部分项目许可证信息、变成语言等信息不完善和不存在依赖项的无效项目数据。

而采用Maven平台作为研究对象,一方面,Maven平台在软件领域非常流行和重要,其管理的开源项目大多使用广为人知java语言开发。根据lbraries.io的统计,有超过37.1w个项目托管在maven平台上,其中超过15个项目由java所开发。为我们进行开源许可证的选择研究提供了充足的数据支持。另一方面,Maven有一个相对较大且活跃的开发人员社区,例如Apache社区和Eclipse社区。到目前为止,Apache社区是世界上最著名和最重要的开源社区之一,它拥有超过2.27亿行代码,390多万代码提交,超过42亿行代码修改,以及300多个顶级项目。因此,基于大量的开源项目开发数据,我们很有必要对这些社区进行研究,比如如何在apache社区上选择一个许可,同时,开源许可证相关领域研究论文中大多使用以java开发为主的数据集。如附图4所示,大多数项目使用的开发语言是Java,python编程语言开发的项目只有62个。如附图5所示显示了数据集中项目依赖项数量的数据分布。托管在maven平台上的开源项目的依赖数量集中在1-5个范围,占67.3%,而超过55个依赖的项目只有320个。

其中,第2步中训练许可证主题模型并提取主题,具体为:步骤2-1:提取相似的开源项目;根据用户软件的依赖项目寻找具有相似性的开源软件项目;步骤2-2:显示相似的开源项目;若两个项目类似,则用一组相同的库实现功能;若两个项目不类似,则继续寻找类似的项目。有向图的顶点(E)代表开源项目,边(E)表示开源项目之间的依赖关系,边集合就是该项目所依赖开源软件包的集合。因此,如果一个顶点u表示的软件项目的依赖项包含了顶点v的开源项目,则会有一条从u指向v的有向边,则:

E(V)={(u,v)|u,v∈y} (1)

基于具有相似软件依赖包的开源软件的许可证选择具有相似性,则首要任务就是根据用户软件的依赖项目寻找具有相似性的开源软件项目。如附图2中的P2,P3项目非常相似,因为它们都指向了节点lib

p的特征向量

其中,第3步中建立主题与条款之间的对应关系,具体为:判断不同许可证之间的兼容关系,若两个不同许可证组件的软件在其中任一项的许可证下获得授权,则两个许可证是单向兼容的;若两个不同许可证组件的软件在其中任一项的许可证下无法授权,则两个许可证不兼容;将许可证之间的兼容性生成开源许可证兼容性分析图。如附图3所示,定义节点代表许可证、边表示邻接两个节点之间的兼容性关系;图中实线代表可传递性边、虚线代表非传递性边;非传递性边表示许可证兼容传递关系的终止。例如图3中Zlib许可证是兼容于MPL2.0(非传递边的尾节点),但是却不兼容于CPL2.0许可证(到达CPL2.0的路径中存在非传递边且为非传边的尾节点)。

其中,第4步中获取许可证条款并表示许可证,具体为:利用广度优先搜索算法寻找兼容性许可证节点,用队列实现广度优先遍历算法,判断由许可证指向许可证节点边是传递性边或非传递性边,若许可证指向许可证节点边是传递性边,则许可证具有兼容性;若许可证指向许可证节点边是非传递性边,则许可证传递关系终止。开源许可证兼容性检测算法如下:

根据许可证兼容性规则有向图的定义,可以将n个自由/开源软件许可证之间的兼容性问题归结为有向图多点可达性问题,为此可利用广度优先搜索算法(BFS)、深度优先搜索算法(DFS)、佛洛依德算法等实现许可证兼容性规则检测。进一步为用户提供具有兼容性的开源许可证参考选项。

本方案将存在兼容性的多个许可证整理成常用开源许可荣兼容性分析图,满足开发者选择适用开源许可证和许可证兼容性需求,减少软件开发者因为缺乏许可证相关知识而使得开源软件的自由使用存在巨大的挑战和法律风险的现象。

实施例2

与实施例1不同的是,基于软件依赖的开源软件许可证选择方法,还包括:第5步,人工核查条款与主题的兼容性。具体为,人工核查的计算机上设有用于识别人员眼球的识别模块和输入光标,识别模块采集到人员眼球持续2s注视许可证条款的信号后,自动返回第3步,重新建立主题与条款之间的对应关系,生成该许可证的开源许可证兼容性分析图,输入光标接受选取适合该主题许可证条款的信号后,新的许可证条款自动替换原有的许可条款,生成新的许可证的开源许可证兼容性分析图。

其中,识别模块采集到人员眼球脱离输入光标原有的位置持续2s的信号后,所述输入光标自动移动到眼球注视的位置。其中识别模块为摄像头,输入光标为鼠标在计算机上的显示状态。本步骤中,通过人工核查的方式进一步确定条款与主题的兼容性,减少因机器计算错误而造成的损失,同时,用摄像头采集人眼眼球的注意时间,从而自动移动鼠标,方便人员操作,更为节约审查时间。与此同时,方便用户使用。提升用户体验,减轻用眼负担。

虽然以上描述了本发明的具体实施方式,但是本领域熟练技术人员应当理解,这些仅是举例说明,可以对本实施方式作出多种变更或修改,而不背离本发明的原理和实质,本发明的保护范围仅由所附权利要求书限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号