首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可靠地识别开源许可证的最佳方法?

可靠地识别开源许可证的最佳方法?
EN

Software Engineering用户
提问于 2012-05-05 12:09:27
回答 1查看 276关注 0票数 3

在现在的许多项目中,大多数新代码都是由胶水代码组成的,这些代码有助于将几十个不同的库、插件和助手结合在一起,这些库、插件和助手是在各种开放源码许可证下获得许可的。

在许多情况下,许可证是相当明显的,因为它们在许可证文件或注释中带有许可证的名称。在另一些情况下,这有点困难,需要记住特定的单词来区分更常见的许可。

我想知道:是否有一种简单的方法来识别非常相似的许可证(比如MIT/BSD-2/BSD-3),而不必背出完整的许可文本或查看OSI副本作为参考?

EN

回答 1

Software Engineering用户

发布于 2012-05-05 14:03:04

只需使用您拥有的最强大的模式匹配工具:您的眼睛。一段时间前,我遇到了同样的问题(编译了一大串Django应用程序和jQuery插件,其中大多数并没有明确指出它们使用的许可证),一开始我不得不将其与参考文本进行比较,但很快我就能一瞥就能识别出这些许可。下面是我在看麻省理工学院许可证时看到的情况:

代码语言:javascript
运行
复制
Copyright (C) <year> <copyright holders>

Permission is hereby granted, text text text
text text text
text text text

The above copyright notice and this permission notice text text text

TEXT TEXT TEXT TEXT
TEXT TEXT TEXT TEXT

而修改后的BSD:

代码语言:javascript
运行
复制
Copyright (c) <year>, <copyright holder>
All rights reserved.

Redistribution text text text
* text text text
* text text text
* Neither the name of the <organization> nor the
  text text text

TEXT TEXT TEXT
TEXT TEXT TEXT

请注意,文本布局结合了几个关键词/短语就足以识别这两个许可,而且由于它们是最常见的(在标题中不显示自己的名称,比如GPL或Apache),它们很容易记住(显然,我可以告诉它是BSD-3,因为它有3个要点)。

现在,作者总是有可能--尽管不太可能--使用一个稍微不同的许可,你可能会把它误认为MIT/BSD-3,但如果他们这么做了,而且他们关心这种差异,你可以合理地期望他们引起注意。

更新:将这个答案转到一个关于使用JavaScript“打招呼”页面的问题;也许只需做一点点工作,就可以编写一个小工具(例如书签),在一小组已知的许可文本中搜索页面的内容(编写为regex,因为您必须替换<copyright holder>和通配符)。我避免书市是因为安全方面的问题,但是如果你自己写了或者正在托管(如果适用的话),你应该会没事的。不过,我不知道有任何这样的工具。

就我个人而言,我认为这是不值得的--仔细检查许可证只是将其纳入一个大项目的决定的一小部分。通常,麻烦的部分是库依赖关系,或者是将它们与代码的其余部分集成的相对努力。因此,我更喜欢快速分类为“可能使用”或“肯定不会使用”,然后,如果我认为库是真正有希望的,仔细看看许可。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/147394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档