跳转到内容

信息市场策略/兼容性和标准/分叉

来自维基教科书,开放世界开放书籍

在市场内竞争的一个潜在缺点是分叉的概念。由于公司将在一个标准内争夺市场份额,因此竞争的焦点将从功能转变为价格,但总会有人试图通过竞争专有标准来进一步发展标准。为了改进产品,可能会出现“分叉”标准的情况。分叉标准是一个术语,用于描述将网络划分为两个(或更多)并行网络。如果公司在网络中过度发展功能,其影响可能是争夺市场,基本上破坏标准并大幅减少网络外部性。Unix 是一个公司分裂市场的例子。“包括 IBM、Sun、HP、Silicon-Graphics 和 Novell 在内的几家硬件供应商,为了差异化其产品、增加价值和进行改进,创建了自己的 Unix 版本”[1]。这些公司不想等待正式标准的制定,而是基本上将计算机市场分割开来。另一个此类案例涉及微软,当时他们创建了 Java 虚拟机。其影响是,“通过构建专门针对 Windows 定制的 Java 虚拟机,分裂了 Java 市场。为其编写的应用程序只能在 Windows 上运行”[2]。“该公司随后设计了一种 Java 工具 Visual J++,它具有特别有利于 Windows 设计的扩展”[2]。微软创建了旨在在其自身系统上运行的软件,而不是标准,从而导致分叉。可能很快分裂的市场的一个例子是智能手机市场 Android。[3]。许多用户正在运行许多不同版本的 Anroid,导致软件中出现许多错误和滞后。设备兼容性以及下载第三方软件的问题让许多用户和开发人员感到沮丧,这一切都是由于市场的分叉造成的。

软件工程 中,项目分叉是指开发人员从一个 合法源代码 软件包 中获取副本,并开始对其进行独立开发,从而创建独立的软件。

自由和开源软件 的定义是,在不违反任何 版权 法律的情况下,可以从原始开发团队那里分叉,无需事先许可。但是,专有软件(例如 Unix)的许可分叉也会发生。

分叉自由和开源软件

[编辑 | 编辑源代码]

根据“自由软件”版权许可(“自由 3:改进程序并发布你的改进以供公众使用,使整个社区受益”)和“开源”(“3. 派生作品:必须允许重新分发修改。(为了允许合法共享并允许添加新功能或进行修复。)”)的定义,可以合法地分叉自由和开源软件,无需获得当前管理软件项目或分发软件的那些人的批准。

在自由软件中,分叉通常源于对不同目标的意见分歧或人际冲突。在分叉中,双方都假设几乎相同的代码库,但通常只有较大的群体,或控制网站的群体,将保留完整的原始名称和相关的用户社区。因此,分叉会带来声誉损失。不同团队之间的关系可能是友好的,也可能非常恶劣。

分叉被认为是自由和开源软件提供的自由的一种表达方式,但它也是一种弱点,因为它会重复开发工作,并可能让用户困惑,不知道应该使用哪个分叉包。开发人员可以选择与自由和开源软件合作并集中资源,但这并非 自由软件许可证 保证的,只有通过对合作的承诺才能实现。

埃里克·雷蒙德在他的著名文章《大教堂与集市[4] 中于 1997 年指出,“分叉最重要的特征是它会产生竞争项目,这些项目以后无法交换代码,从而分裂潜在的开发人员社区”。

在某些情况下,分叉可以合并回原始项目或替换它。 EGCS(实验性/增强型 GNU 编译系统)是从 GCC 中分叉出来的,它被证明比原始项目更重要,最终被“认可”为官方 GCC 项目。有些人试图有意地引发这种效果,例如,Mozilla Firefox 最初是 Mozilla 中的一个非官方项目,它很快就取代了 Mozilla Suite,成为开发的重点。

关于分叉,术语文件 中写道

分叉被认为是一件坏事——不仅仅是因为它意味着将来会浪费很多精力,而且因为分叉往往伴随着继任群体之间关于合法性、继承和设计方向的大量争吵和敌意。人们对分叉有严重的社会压力。因此,主要的分叉(例如 Gnu-Emacs/XEmacs 分裂,386BSD 集团分裂成三个子项目,以及短命的 GCC/EGCS 分裂)非常罕见,以至于它们在黑客民间传说中被单独记住。

宣告分叉很容易,但要继续独立开发和支持则需要付出相当大的努力。因此,缺乏足够资源的分叉很快就会变得不活跃,例如,GoneME,由一位前开发人员从 GNOME 中分叉出来的,尽管吸引了一些关注,但很快就停止了。然而,一些著名分叉取得了巨大成功,例如 X.Org X11 服务器,它从 XFree86 中分叉出来,获得了开发人员和用户的广泛支持,并且显著加快了 X 的开发速度。

最近,使用 分布式版本控制 (DVCS) 工具使“分叉”一词的感情色彩减弱。使用 DVCS(如 MercurialGit),对项目做出贡献的正常方式是首先“分叉”存储库,然后寻求将你的更改集成到主存储库中。这些工具旨在使创建、维护和合并分支(内部分叉)比使用集中式 VCS 更容易,因此从 VCS 工具的角度来看,它们消除了分支与分叉之间的区别。此外,诸如 GithubBitbucketLaunchpad 等网站提供免费的 DVCS 托管,并提供非常易于使用的支持,以支持这种分叉,从而大大降低了分叉源代码存储库的技术、社会和财务障碍。虽然分叉社区必然仍然代价高昂且痛苦,但拥有许多竞争的源代码分叉已成为开发过程中的一个更自然和更被接受的部分。

通常,即使原始软件的版本是 3.0、4.0 或 5.0,分叉也会从版本 0.1 或 1.0 重新开始。一个例外是当分叉的软件被设计为原始项目的直接替代品时,在这种情况下,例如,分叉的版本 5.2 与原始软件的版本 5.2 兼容(如 MariaDBMySQL 在 2011 年的情况一样)[5]

分叉专有软件

[编辑 | 编辑源代码]

专有软件中,版权通常由雇用实体持有,而不是由个别软件开发人员持有。因此,当所有者需要开发两个或多个版本时,专有代码更常见的分叉,例如窗口版本和命令行版本,或针对不同操作系统的版本,例如针对IBM PC兼容机器的文字处理程序Macintosh电脑。一般来说,这种内部分叉将集中于在平台之间具有相同的外观、感觉、数据格式和行为,以便熟悉一个平台的用户也可以在其他平台上保持生产力或共享在其他平台上生成的文档。这几乎始终是一个经济决策,以产生更大的市场份额,从而收回分叉带来的额外开发成本。

一个著名的非此类专有分叉是专有Unix的众多变体——所有这些都源于AT&T Unix,都被称为“Unix”,但彼此之间越来越不兼容。参见UNIX 战争.

BSD 许可证允许分叉成为专有软件,有些人说,因此,商业激励几乎使专有化不可避免。例子包括Mac OS X(基于Nextstep,因此基于BSD)、CedegaCrossOverWine的专有分叉,虽然 CrossOver 跟踪 Wine 并做出了相当大的贡献)、EnterpriseDBPostgreSQL的分叉,添加了 Oracle 兼容性功能)、Fujitsu 支持的 PostgreSQL及其专有的 ESM 存储系统,以及Netezza的专有高度可扩展的 PostgreSQL 派生产品。其中一些供应商将更改贡献回社区项目,而另一些则将其更改作为其自身的竞争优势保留。

其他值得注意的分叉

[编辑 | 编辑源代码]
Linux 发行版分叉的时间轴图表。
  • 大多数Linux 发行版都是从其他发行版衍生而来,大多数可以追溯到DebianRed Hat|Slackware。由于发行版的大部分内容是免费和开源软件,因此想法和软件可以自由地相互交换,这对各个发行版来说都是有用的。合并(例如United LinuxMandriva)很少见。
  • Pretty Good Privacy在美国以外被分叉,以使其免受美国关于加密软件出口的限制性法律的影响。
  • 游戏NetHack使用原始代码产生了多个变体,最著名的是Slash'EM,它本身就是Hack|的分叉。
  • OpenBSDTheo de RaadtNetBSD 1.0 的分叉。
  • OpenSSHSSH的分叉,这是因为 SSH 2.x 的许可证是非自由的(即使源代码可用),因此对 SSH 1.x 的早期版本(最后一个被许可为自由软件)进行了分叉。在几个月内,几乎所有 Linux 发行版、BSD 版本,甚至一些专有 Unix 都用 OpenSSH 取代了 SSH。
  • XOrg在 2004 年从XFree86分叉,因为后者更改了其许可证,许多发行版发现该许可证不可接受。
  • DragonFly BSD是由长期 FreeBSD 开发者Matt DillonFreeBSD 4.8 的分叉,因为他们对 FreeBSD 5 的技术方向存在分歧。
  • Adempiere是社区维护的Compiere 2.5.3b 分叉,因为他们对 Compiere Inc. 的商业和技术方向存在分歧。
  • iDempiere被一些人视为Branch GlobalQSS Adempiere361的分叉,而另一些人则将其视为 ADempiere 的下一代。由于前 ADempiere 开发者社区中的分歧,他们决定为具有新 OSGi 架构的代码路径使用新名称 iDempiere。
  • NeoOfficeOpenOffice.org的分叉,具有不兼容的许可证(GPL 而不是 LGPL),因为他们对许可证以及将 OpenOffice.org 移植到Mac OS X的最佳方法存在分歧。
  • Joomla!Mambo的分叉。
  • 矢量图形程序Inkscape最初是Sodipodi的分叉。
  • Xvid是 OpenDivX 的分叉。
  • 媒体播放器软件BoxeePlex都是从媒体中心XBMC分叉的。
  • 甲骨文收购太阳微系统后不久,导致LibreOffice从 OpenOffice.org 分叉,以及MariaDBMySQL分叉,这是因为人们担心甲骨文对开源开发的承诺。

参考文献

[编辑 | 编辑源代码]
  1. Shapiro, Carl (1999). Information Rules. Boston, MA: Harvard Business School Press. {{引用书籍}}: 引用缺少以下必要参数:|1=|2= (帮助); 忽略未知参数 |coauthors= (|author= 建议) (帮助)
  2. a b CNET News (1998 年 12 月 2 日). "被 Java 困住了". CNET News. 检索于 2010 年 12 月 2 日.
  3. Michael Arrington (2009年10月11日). "Android 的一个漏洞". TechCrunch.com. 检索于 2010年12月2日.
  4. w:Eric S. Raymond (最后修改: 2002年8月15日). "放荡的理论,清教徒的实践". {{cite web}}: 请检查 |date= 中的日期值 (帮助)
  5. http://programmers.stackexchange.com/questions/31551/forked-a-project-where-do-my-version-numbers-start
华夏公益教科书