3.3 理论宽松,实践严格
然而,在经历这些变化之后,人们对什么是“自由软件”或“开放源码”仍有着普遍认可的共识,在很多开源许可证中都能发现对此共识的清晰表达,其最关键要素都是一致的。
1997 年,“Debian 自由软件准则”提炼了这些共同要素,并形成了开放源码定义(OSD,参见 http://www.opensource.org)。
定义指出,开源许可证必须保护任何个人或团体无条件修改开源软件(以及发布修改后软件版本)的权利。
所以,OSD(以及与 OSD 一致的版权声明,如 GPL、BSD 许可证、Perl 的艺术许可证(Artistic License))隐含的规则是“任何人能干任何事”(anyone can hack anything),没有任何事情可以阻止人们获取任意开源产品(如自由软件基金会的 gcc 编译器)、复制其源码、推进其向不同方向演进,并都可声称是该产品。
这种演进上的分化称为“分支”(fork),分支最重要的特点是它派生出一个随后不能交换代码的竞争项目,并导致开发社区潜在的分裂。(有的情况看上去像分支但其实不是,如 Linux 存在的多种发布版本。这种伪分支可能会导致不同的项目,但是它们使用的代码几乎相同,并且可以互相受益于对方开发的所有成果,它们在技术上和社会学上都不是浪费,也不会让人感觉到是“分支”。)
开源许可证没有对“分支”做任何限制,更不用说“伪分支”了。人们可能会说这暗中鼓励了分支,但实际上,“伪分支”比较常见,分支却几乎没有发生过。重大项目极少产生分化,如果有,也总伴随着重新命名以及大量的公开解释,很明显,在诸如 GNU Emacs/XEmacs 分化、gcc/egcs 分化,以及从 BSD 派生出的各种分化中,分化者都觉得他们在违背一个相当强大的社区准则 1。
事实上,和“任何人能干任何事”共识相矛盾的是,开源文化有一套严格的但主要是“不允许”类型的所有权惯例。
这些惯例决定了谁能修改软件、在什么情况下可以修改,以及(特别是)谁有权利向社区发布修改后的版本。
文化中的一些禁忌凸显了这些准则,我们在此总结其中一些重要的内容,以便后面使用。
·分化一个项目会遇到强大的社会压力,只有在极为必要的情况下才使用,而且要重新命名和做出大量的公开解释。
·在没有项目主持人认可的情况下发布更新是令人不悦的,除非是特殊情况(如本质上不重要的移植 bug 修复)。
·在项目历史、致谢表或维护列表中移除某个人的名字是绝对不可以的,除非当事人明确表示同意。
在本文的余下部分,我们将仔细研究这些禁忌和所有权惯例。我们将不仅探究这些概念是如何运转的,还将揭示开源社区背后隐藏的社会动力学及激励结构。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论