如何避免被更强大的贡献者遗忘?


119

如最近在这里报道:

Xamarin分叉了Cocos2D-XNA(一个2D / 3D游戏开发框架),创建了可以包含在PCL项目中的跨平台库。

但是分叉的项目的创始人

MIT许可证的目的是限制您的合理使用。不鼓励您购买软件,将其重新命名为自己的软件,然后如您所说的那样“朝新的方向发展”。

虽然不是非法的,但这是不道德的。

似乎新项目的GitHub 页面甚至没有表明它是典型的GitHub方式的分支,而是选择了一个易于删除的“历史记录”部分(请参阅底部)。

所以我的问题是:

  1. Xamarin的行为和行为方式是否符合道德?
  2. 如果您是单个开发人员或一小群没有资金的开发人员,是否可以避免这种情况?

我希望这可能是一个维基问题,也可能会有一些基于现代OSS伦理/哲学的客观答案。


25
这几乎完全是GNU GPL的目的,它迫使分叉在发布它们时允许您将其更改合并回去,从而为您提供所做的改进以及您自己的改进。
价格

46
MIT许可证最初是为X Window系统编写的,旨在允许公司分叉该许可证并将其包含在其销售的专有产品中。
艾伦·舒特科

5
@Vality:就反向合并而言,是否受GPL或MIT许可并不重要,并且GPL附带有自己的钉子。
DevSolar 2014年

66
“获得MIT许可证的目的是限制您的合理使用。而不是鼓励您购买软件,将其重新命名为自己的软件,然后如您所说的那样“朝新的方向发展”。” -嗯,事实上,这几乎是究竟它是什么。没有“ MIT许可证”之类的东西。麻省理工学院使用许多不同的许可证。有问题的许可证是MIT X11许可证,该许可证是专门为Unix供应商而设计的,以便Unix供应商可以将MIT X11集成到其Unices中,对其重命名,重写并以他们喜欢的任何方向使用。
约尔格W¯¯米塔格

10
ØMQ指南非常有趣地讲述了这种情况。要点:“ BSD使大多数人将我们视为午餐。封闭的资源使大多数人将我们视为敌人(您愿意为软件付费吗?)但是,GPL使得除世界上的Patricks之外的大多数人,我们的盟友。”
迈克尔·汉普顿

Answers:


72

Xamarin的行为和行为方式是否符合道德?

好吧,让我们问一个专家- 开源倡议(MIT)本身的MIT许可证列表,其中完整引用了该许可证:

MIT许可证(MIT)

版权(c)

特此免费授予获得此软件和相关文档文件(“软件”)副本的任何人无限制使用软件的权利,包括但不限于使用,复制,修改,合并的权利,发布,分发,再许可和/或出售本软件的副本,并允许具备软件的人员这样做,但须满足以下条件:

以上版权声明和本许可声明应包含在本软件的所有副本或大部分内容中。

本软件按“原样”提供,不提供任何形式的明示或暗示担保,包括但不限于对适销性,特定目的的适用性和非侵权性的担保。无论是由于软件,使用或其他方式产生的,与之有关或与之有关的合同,侵权或其他形式的任何索赔,损害或其他责任,作者或版权所有者概不负责。软件。

如果任何人(个人或公司)以MIT许可证发布软件/源代码,则意味着其他任何人(个人或公司)可以“不受限制地处理软件”。只要版权声明保持原样,他们就可以按照自己的意愿做。

这是道德和合法性几乎完全相同的情况之一。如果某个人或团体不了解该许可证或其含义,则他们将无法进行尽职调查。开源计划提供了许多其他不错的资源,以帮助我们了解MIT变体之类的许可证。让我们看一下它们的开源定义中的一些子句:

1)免费重新分发-许可证不得限制任何一方出售或赠送该软件,该软件是包含多个不同来源程序的总体软件分发的一部分。许可证不要求此类销售的特许权使用费或其他费用。

3)衍生作品-许可必须允许进行修改和衍生作品,并且必须允许它们按照与原始软件许可相同的条款进行分发。

5)不歧视任何人或团体-许可证不得歧视任何人或团体。

6)不歧视任何领域-许可证不得限制任何人在特定领域内使用该程序。例如,它可能不会限制该程序在企业中使用或在遗传研究中使用。

在我看来,这似乎非常清楚:以开放源代码的形式发布某些东西,尤其是获得MIT许可,可以使人们自由地购买软件,对其进行更改,打包并出售,只要他们喜欢,只要他们不愿意, t取出您的版权声明,并声称这是自己唯一的工作。

作为作者,您明确放弃了挑剔和挑剔的权利。您不必确定可以从您的软件中受益或使用的人或内容,也不必确定他们为什么使用该软件。您明确放弃了这项权利。

这个想法是,您通过显式放弃您必须控制,限制使用和更改的任何合法权利,为更大的财富做出贡献。如果Microsoft希望分叉您的FluffBall项目并以WindowsSpongeCake的价格将其以每席位$ 2k的价格出售,他们可以。最初不是让人们做他们想做的所有事情吗?

如果您是单个开发人员或一小群没有资金的开发人员,是否可以避免这种情况?

的种类!首先,使用适合您以及您组织的目标和愿望的许可证。如果您不希望任何人以不赞成的方式使用它,则可能不应该将其作为开放源代码发布-坦率地说,您也许根本不应该发布它!如果您不希望任何人在商业项目中使用派生作品(例如fork),则可能应该使用GPLcopyleft版本。如果您想要非商业性的许可证,您可能应该请版权/许可律师为您提供建议,因为它通常根本不被视为“开源”软件,并且没有任何主要的预先书面许可来支持这种情况。

Xamarin和Coco kerfuffle的问题不是道德或合法性问题,而是关于几个互相吃牛肉的人之间的互联网斗争。我们都是人类,它发生了。这似乎是无法合作/合作的结果,可能是由于人格冲突或对项目处理方式的看法不一致。

因此,另一种防御方式是对协作和变革持开放态度,但要理解,如果这种方法无法奏效并且愿景分歧……那是选择分叉并拥有自己的独立项目的原因。

拥有所有权和受欢迎度的感觉非常人性化,可以使软件项目非常非常复杂。但是开源的目标是试图超越这一点,并允许所有人免费使用最好的软件。

最重要的是,在确定许可证时要明确目标,并了解它对您将来控制项目的方向的影响。如果您只是想捐赠更大的利益,那么开源是您的不二之选。如果您想更严格地控​​制您的项目并拥有所有权,并且如果有人试图推销您的项目或将其吸收到自己的(部分或全部)项目中,那么至少要有法律案件,您将需要不同的许可证,并且可能需要和律师一起整理。


35
关于混淆性语言的一针见血:使用GPL不会限制商业用途,而是专有用途。出售GPLed软件副本以获利是完全可以的。您只需要遵守许可条件即可。
2014年

5
@BerndJendrissek:从理论上讲,您是对的。但是由于您需要将软件的源代码与二进制文件一起提供给客户,并且客户可以自由地免费分发您的软件(如果他愿意的话,并且那里有很多人会考虑使用它)这样做的责任),那么您赚很多钱的机会就很小。
DevSolar 2014年

8
@DevSolar-尽管源代码是开放的并且可以自由分发,但这并不意味着项目的其他非代码资产也存在。对于游戏,媒体,地图,脚本等可能处于不同的许可下,并且客户分发它们可能不合法。有关示例,请参见en.wikipedia.org/wiki/List_of_open-source_video_games
corvec 2014年

7
@DevSolar:RMS自己出售了 GPL软件多年,以资助FSF。
马丁·施罗德

5
许多人出售GPL和其他开放源代码。整个Joomla生态系统都是基于此构建的,Drupal的生态系统也是基于此构建的(在Joomla中,更多的是即插即用,对于Drupal的更多是用于自定义工作,但无论哪种方式,都出售GPL)。许多客户喜欢开具财务交易担保的发票,或者喜欢品牌。看看有多少人为瓶装水付费。
艾琳2014年

119

根据麻省理工学院(MIT)许可发布项目将使人们有能力分叉该项目。自由软件背后的部分哲学是授予用户和开发人员使用通常不允许的方式使用,修改和发布软件的权利。如果您不希望人们这样做,则不要使用MIT许可证。当人们根据您授予他们的许可条款使用代码时,您不会真正抱怨。

在自由软件社区中,叉子是很正常的事情。看起来fork的开发人员试图为原始项目做出贡献,但不同意,因此他们为自己的项目做出了贡献。自由软件鼓励这样做,以便不会因所有者不喜欢其更改而阻止开发人员修改软件。

此外,通过在自由软件许可下发布某些内容,您可以从其他人的捐助中受益,如果您使用其他许可,则可能没有收到这些捐助。如果您接受许可下的捐款,则应自己遵守许可条款。

维持对正式版本的控制权的一种方法是依靠商标之类的东西。例如,Mozilla Corporation在Firefox上拥有一个商标,即使它是开源的,也允许他们指示人们可以使用Firefox做些什么(有关此分支的信息,请参阅Iceweasel)。

LGPL等其他许可证仍然允许派生,但请保持代码开放。这样,您至少可以将分支中的所有更改合并到原始项目中,并从分支中的开发中受益。LGPL代码可以使用任何MIT许可的代码,因此,如果您想对项目进行更多控制,可以改用LGPL。


1
我会将MPL作为值得关注的条目添加到仍然允许派生但仍保持代码打开状态的其他许可证列表中。
mucaho 2014年

您能谈谈BSD许可证与此相关吗?
jpmc26 2014年

2
@ jpmc26-软件许可证是法律文件,我不是律师,因此,要想确定性的答案,您需要咨询律师。但是,普遍的共识是BSD和MIT X11许可证的功能相似。它们通常被称为“ 学术许可证 ”。
Scott Whitlock 2014年

18

我不会认为这是不道德的。我会称其为非运动型。有一个未成文的期望,您会在决定分叉之前做出真诚的努力来改进原始版本,并且似乎原始作者认为没有做出真诚的努力。

话虽这么说,避免软件分叉的最好方法是响应客户的要求,以使您的软件具有尽可能广泛的吸引力。如果他们知道原版是优等品,谁也不会提供支持。除此之外,您唯一的保护就是更改许可条款。


14
如果您想以不同的方向使用该软件,即,如果有一些更改可以实现您的目标但当前维护者不接受,那么进行分叉是完全合理的-通常就是这样。事后更改许可条款说起来容易做起来难-除非您是唯一的作者,或者得到贡献的所有人(而不是99%)的同意,否则您将无法做到这一点。
Peteris 2014年

11
  • Xamarin的行为和行为方式是否符合道德?

许多人正在混淆法律和道德状况。在X11许可证允许任何人“使用,复制,修改,合并,发布,分发,授权和/或销售软件的副本,并允许收到本软件是装在这样做的人”,所以这肯定是合法的。

从伦理上讲,它更复杂。在开源社区中,通常认为最好是改进原始软件,而不是创建分支。在您提供的链接中,Miguel de Icaza说:

如您所知,我们为Cocos2D-XNA做出了广泛的贡献,我们无法继续合作。

一旦达到了无法合作的地步,我便决定以我希望的方向进行该项目,但要以向后兼容为代价。

尚不清楚他们为什么“不能一起合作”,但听起来Xamarin做出了合理的努力来处理原始项目,然后才决定分叉它。

  • 如果您是单个开发人员或一小群没有资金的开发人员,是否可以避免这种情况?

从法律上讲,您可以选择通过禁止源代码的重新分发来使用不允许分支的许可证(此时,它不是“免费软件”)。另一种选择是使代码不受限制,但不允许重新分配静态资产,例如图像或非代码文本(某些游戏具有这样的许可证)。

在社交上,您可以通过以下方法来防止分叉:

  • 使人们可以轻松地对您的项目进行更改。
  • 快速查看补丁。
  • 允许不会直接受益的更改。
  • 有礼貌。由于贡献者不再愿意彼此合作,因此出现了数量惊人的分叉。

分叉软件需要大量工作,如果有更简单的选择,大多数理智的人都不会这样做。如果他们别无选择,那么阻止他们分叉您的代码只会迫使他们要么分叉别人的代码,要么从头开始重写您的软件。这可能会减慢它们的速度,但是并不能真正帮到您。

此外,使用限制性更强的许可证将使某些人做出贡献的可能性降低。Xamarin显然“广泛地为Cocos2D-XNA做出了贡献”,我怀疑如果许可证不允许他们重新分发,他们是否会这样做。


1
您指出人们正在混淆法律和道德状况,甚至说道德上这比较复杂,但是您没有给出任何理由来支持这些声明。换句话说,您在分叉该软件时看到什么道德上的复杂性?
2014年

1
我认为这是社会规范,而不是道德规范。这与道德/不道德无关,而在于“这是事情的完成方式”。总体而言,@ BrendanLong正确的是,前叉的工作量非常大,这就是为什么大多数前叉会失败的原因,当冷静的头风盛行时,许多其他前叉最终会重新出现,并且通常人们会尽量避免使用它们。
Elin 2014年

@ChrisLively情况确实“复杂”。我试图在答案中指出的是,分叉某个软件可能不道德,但是听起来Xamarin在这种情况下做对了。之所以使用软件分叉可能是不道德的,是因为负责一个重要的开源项目会给人们带来一定程度的尊重,有时甚至是金钱(人们倾向于喜欢从项目维护者那里获得支持)。分叉软件通常会带走其中的一部分,不应仅仅因为您想成为负责人而完成。
布伦丹·朗

2
例如,Cocos2D-XNA可能会失去很多开发人员,因为Xamarin的分支突然得到了很多公司的支持,而Cocos2D-XNA却失去了他们的支持。维护者生气是完全合乎逻辑的,因为他创建了一个开放源代码项目,在这一点上可能是死胡同。另一方面,Xamarin似乎有充分的理由这样做。
布伦丹·朗

10

Xamarin所做的是合法的和符合道德的……几乎。

让我们看一下自述文件中许可证的提交修复和其他错别字修复

LicenseAndCredit.txt(diff)

-Copyright (c) 2010-2012 cocos2d-x.org
-
-Copyright (c) 2008-2010 Ricardo Quesada
-Copyright (c) 2011      Zynga Inc.
-Copyright (c) 2011-2012 openxlive.com
-Copyright (c) 2012      Totally Evil Entertainment, LLC
-Copyright (c) 2012      Gena Minchuk
-Copyright 2012 Xamarin Inc
+Copyright (c) The Cocos2D-XNA Team

整个MIT许可证只有一个要求:

以上版权声明和本许可声明应包含在本软件的所有副本或大部分内容中。

Xamarin确实做了禁止的事情。Xamarin可能认为,使许可证“更漂亮”可以使顶部的版权声明减少,但他们没有(合法或道德上的)许可删除“冗余”。

当然,如果他们修复了许可证文件,它们将再次处于合法区域。原始图书馆的作者可能不同意,但是他选择了许可证,并且不能责怪任何人他们做了许可证明确允许的事情。


3
这个^只有一个直接去源头。+1
Ryan

25
这种变化似乎并不是源于派生的代码库。更重要的是,由Cocos2D-XNA团队成员Jacob Anderson 提出反对。相比之下,米格尔·德·伊卡萨(Miguel de Icaza)就是那个做分叉的人我想念什么吗?还是您将清除工作归因于错误的人员和项目?
伊利亚·卡根

3
那是2013年9月?我对时间安排感到困惑,如果那只是刚刚发生的叉子的一部分。
Elin 2014年

9
@Elin是的,我认为diff是个红鲱鱼。据我所知,它不是Xamarin的任何人做的,它发生在分叉之前。我认为这里不存在任何恶意行为,但是这篇文章显然是对不当行为的错误指控。
伊利亚·卡根

5
-1。在发生分叉之前,该更改是在Cocos2D-XNA中进行的。这是Cocos2D-XNA中的相同更改
David Hammen 2014年

4

即使人们通过为选择仔细查看的任何人提供必要的注意事项和修订历史记录来涵盖合法性,也让人们对叉子所附带的任何代码的作者得出错误的结论都是可耻的。因此,也许Xamarin的演讲是不道德的,也许不是,但我认为这是判断该演讲的依据:它是否会引起误解?

许可证规定了使用该代码的许可,并要求在代码副本中包括相关的版权声明。这只是一个很低的水平。它没有讨论您应该如何公开总结谁贡献了什么,而仅仅是因为这超出了许可的范围,而不是法律协议的一部分,并不意味着任何事情都会符合道德。道德各有不同,但在应有的地方给予诚实信用是一个普遍持有的原则,因此很容易理解为什么不这样做将构成犯罪。

就像每个人都说的那样,MIT许可证中无意防止分叉,因此这本身并不是不道德的。如果“将其重命名为自己的商标”是“公开您不应该得到的信用主张”的代码,那么请确保这是不道德的。

至于防止它发生在您身上:如果您想避免别人暗示您的代码属于他们的情况,那么在申请信用时就需要大声疾呼。如果您想避免有人创建代码分支的情况,最终可能会证明它们比原始代码更受用户欢迎(要么由于他们的资源更多,要么只是因为他们专注于“正确的”用户需求),那么我认为您不满意OSS的运气。如果另一个小组想要从软件中获得与您想要的软件不同的功能,您不能只是判断正确,如果(在用户看来)您错了,那么无论您先出现在哪里,都应该输掉。这是主要的开放源代码原则(或适当地,免费软件原则)的结果,即作者不控制软件,而运行该软件的人则控制。


2

商标主题的扩展:

在Apache Software Foundation,所有代码都是AL。而且,就像这里讨论的BSD许可证一样,很显然AL允许分叉。期。讨论完毕。实际上,正如在其他答案中所讨论的那样,所有 真正的开源许可证都允许分叉。他们所控制的只是分叉代码的许可/使用。

Apache基金会已选择注册和捍卫商标。如果除基础项目之外的某个实体派生了,哦,“ Apache Tomcat”,它们很好... 但是他们不能称其为Apache Tomcat,并且,当我们可以捍卫商标时,则不能称其为Tomcat

这里的问题是商标不适合胆小的人。如果您是一小群人,没有法律架构,也没有资金,实际上您将无法使用商标法保护您的名字。

最后,这种事情是建立各种基金会的原因之一。

从道德的角度来看,如果捐助者之间存在内部分歧,那么谁说谁“应该”保留这个名字呢?另一方面,如果一个局外人分叉,那么保持名称不变可能不是世界上最道德的事情。这也不是一个令人发指的行为。

Github 到处都是叉子。有时人们确实更改了名称,Java包或其他内容,特别是如果他们想发布到Maven Central。通常他们不这样做,而用户却迷失在迷宫中。这并不理想,但这就是无政府状态的破坏。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.