发布已发布算法的代码是否合法?

机器算法验证 算法
2022-03-22 12:55:49

假设我想实现基于论文或书籍的算法,并在非专有但不一定非商业友好的许可下发布(例如在博客上)。

这样做合法吗?

我知道一个笼统的答案不能是是或不是,所以我想另外知道如何快速找出这是否合法。一些例子会很棒。这里有一些例子供大家讨论

  • Apache Commons Math 在其开发人员指南中声明,所有开发人员都应在提交之前检查许可证问题,并以数字食谱为例。这是我第一次看到这样的警告。我无法访问这本书(无论是在线的还是死树格式的)。法律警告是什么样的?
  • 作者页面上链接下载的论文通常不包含法律警告。这是否意味着算法是……免费的?
  • 根据维基百科,随机森林是一个商标术语。这是否意味着,不允许任何人实施该算法?人们可以给它取另一个名字(如 Good-Luck-Forests),因为鉴于并非所有细节都在纸上(通常)发表,因此重现确切的算法几乎是不可能的。
  • 访问既受限制又不受限制的论文呢?例如,参见论文“Alternatives to the Median Absolute Deviation”,该论文已发表在美国统计协会杂志上,但现在可以通过 JSTOR 购买或从此页面下载。这篇论文的上传者 Frank Masci 是否触犯了法律?

可以在网上找到许多访问受限或不受限的论文。

免责声明:任何答案都不应被视为可以在法庭上参考的法律建议。

3个回答

正如 OP 所提到的,这可能不是就法律问题提供专家建议的正确地方,但是我们都必须忍受软件许可证之类的东西,尽量不要惹上麻烦,所以这里有一些我学到的东西.

  • 在 NR 主页上,您可以找到许可证信息和重新分发信息。这仅仅是关于书中提供的源代码的版权问题。算法本身没有版权,据我了解,除非您的实现源自与 NR 一起分发的源代码,否则您不会因为实现和共享恰好在 NR 中的算法而陷入麻烦。
  • 嗯,没有什么是免费的......几乎总是有版权所有者。如果论文发表,版权可能会转移给期刊,但在某些情况下,作者保留通过他或她的主页分发论文的权利。专利法是一个完全不同的球赛,但我实际上不知道与统计和机器学习算法相关的任何例子,其中算法的专利保护是一个问题。因此,对我来说,无论是发表在期刊上还是作者主页上,论文中关于算法的最重要方面是不侵犯版权。
  • 商标是第三件事。据我了解,它仅保护名称或符号。所以你不能实现一个程序并称之为“随机森林”,但你可以实现和分发随机森林算法。
  • 我不知道 Frank Masci 是否违法,但在我看来这是一个版权问题。谁拥有著作权,著作权人将哪些权利赋予他人?

在我看来,虽然侵犯专利权可能很严重,但对于普通统计学家来说,更重要的问题是版权问题。如果您从头开始从论文中实现算法并引用该论文,那么无论媒体如何分发实现,我都看不到任何明显的问题。但是您可能会考虑在实施中使用您的版权的最佳方式是什么。我不知道博客通常是如何获得版权的,但是如果版权自动转移给博客所有者,原则上,在博客上发布几个小时的有价值的实现可能是个坏主意,从而有效地放弃了作品的版权归他人所有。

另一方面,如果您修改现有的实现,您可能会遇到版权许可问题。如果原始实现的许可证是GPL,则重新分发的许可证必须是 GPL。因此,您必须以某种方式分发,以便分发可以遵循 GPL。这也适用于另一种方式。如果您想在 GPL 下分发一个实现,但必须依赖一个未根据 GNU 许可证分发的库,那么您可能无法在您的分发中包含该库即使图书馆是开源的并且“免费”。该库可能在​​与 GPL 不兼容的版权许可下分发。

顺便说一下,专利算法的经典例子是 RSA。算法专利的规则相当模糊,变化也很大。在实践中,实现是可以的,但分发(包括商业化和免费发布)是一个容易与事情发生冲突的地方。更重要的是,无论专利和版权如何,发布都可能受到限制——例如,美国人不能将加密算法的源代码出口到某些被禁止的国家,许多其他国家可能也是如此。

必须区分版权和专利。版权不太可能影响您,我认为首先要考虑的是专利是否可以申请(而且它不需要已经获得专利:一些国家允许创新者在披露后的一段时间内为其作品申请专利)。版权往往会影响原始材料的发行权(因此,您不能只重新发表一篇文章 - 期刊或作者拥有版权),专利会影响创意实施的发行。如果没有专利并且申请专利的时间已经过去,那么你应该很高兴。

我说过专利是模糊的:在某些司法管辖区,为算法申请专利并不是那么容易。在某些情况下是这样,但这些法律的法律和解释正在发生变化。

我希望这有助于您集中分析。我不会担心逐案处理的方法(例如它是发表在这种类型的期刊还是那种类型的期刊上),而是关注谁拥有专利权以及他们如何行使这些权利。

与最初的创新者交谈也很有礼貌。如果他们打算申请专利或他们想合作,你最好与他们合作。他们可以帮助提出实现的想法,并且可以鼓励其他人将您的实现用作参考。

我的理解是,发表会使一项发明失去专利权。因此,任何已发布的算法都可以自由使用。这不适用于代码本身!如果您学习算法,理解它,将它教给另一个人,而不让他们看到原始代码,然后他们实现它,它就完全不受阻碍。这是洁净室实施的黄金标准(用于合法安全的逆向工程),但如果你阅读论文并编写自己的版本,你可能没问题。