可持续开源

开源
要实现可持续性,项目必需能够负担自身的各项成本。成本包括基础设施成本(如托管和配套服务),以及开发、更新和维护代码库的成本。成本还包含项目产生的治理成本、营销成本和沟通成本。

[[129350]]

要实现可持续性,项目必需能够负担自身的各项成本。成本包括基础设施成本(如托管和配套服务),以及开发、更新和维护代码库的成本。成本还包含项目产生的治理成本、营销成本和沟通成本。

很多项目的初始成本是由上级机构、赞助商、投资商或者创始开发者的初始投资来支付的。

但当这些钱和资源都用完了,会怎么样呢?

初期资金作为一种可行的选择并不是无限期的。到了某个阶段,就必须要开源或者节流。一个可持续的开源项目,其收入或节约的成本必须超过持续支持和开发的成本。

在软件开发方面的残酷现实,绝大多数项目不能实现可持续性。开源和闭源项目都是这样的。实际上,任何需要资金支持的活动都是如此。现实证明,绝大多数的创意都无法实现可持续性,而只有少数能够做到。

因此,我们有必要探究为何项目没能实现可持续性。某些情况下,这是因为项目未能达到它所设定的目标。所以,人们便期望能够撤销项目。然而,令人担忧的是,很多项目就算达到了最初的目标,却仍然会无法延续。公共资金支持的项目尤其如此。这类失败通常是由规划不当引起的。也就是说,一开始人们并没有就项目初期资金用完时如何维持项目制定计划,因此也就没有为实现可持续性分配资源。

所以,结论是显而易见的:要实现可持续性,项目的初始目标必须包括实施可持续性计划。其意味着,可持续性计划应该在项目周期的最开始阶段制定出来。而要制定这一计划,您必须了解自己有哪些选择。

这里无法列举所有可持续性选择,因为可用的模式和项目创意一样多。以下将简单介绍常见开源软件的可持续模型。

注意,只有极少数项目可严格归为以下某种模型。大多数项目能够实现可持续性,是因为它们将各种模型的要素进行了不同方式的组合;同样,各种模型之间也有共通之处。以下部分仅为您开始制定可持续性计划时提供参考。这些信息使您能够接触到像 OSS Watch 这样了解您所面临的机遇的顾问。
产品开发

一个从事开源产品业务的公司和其它公司并没有什么区别。就是说,它必须将一部分收入投入到产品研发中。四大类公司有能力从事商业性开源软件开发:

为最大限度扩大其付费产品市场而开源软件的服务公司,如支持、培训、定制、搜索引擎和电子商务公司等
想拓展潜在硬件市场的硬件公司,如打印机或手机制造商
使用开源组件的软件公司
采用双重授权模型,同时发行产品的专有版本和开源版本的软件公司

一个公司的活动不仅限于以上某一种;同样,每个开源项目的商业化也可由多个公司参与完成。

对于服务或硬件公司来说,主要营利方式不是出售软件本身。这样,这些公司就有可能发行受开源许可控制的软件,以便从第三方的贡献中受益。

对于服务型公司来说,开放软件源代码的动机是相同的。提供咨询和定制服务的公司希望尽可能扩大对其服务的需求,因此发布核心产品的开源版本是一种市场培育方法。此外,提供软件驱动的服务(如搜索引擎、Web 2.0服务或电商运营)的公司有充分的理由来开源他们的软件套件中不具竞争性的部分。这样就可以通过共享开发成本的形式,在初期开发、运营开发和持续维护中节约成本。例如,亚马逊、IBM、雅虎、易趣、Facebook和越来越多的公司在使用 Apache HTTPD Web服务器和GNU/Linux,并为它们作出贡献。

至于硬件公司,开源的动力可能来自于拓展硬件市场或降低产品开发成本。例如,打印机制造商可能会开源驱动程序,允许驱动程序被定制到不同的平台,以便扩大其硬件市场。又如,手机制造商可能将开源软件作为核心操作系统,以便与其它制造商共享公共功能的开发成本。

通过销售软件营利的软件公司有两种可用模型。但每种模型只在特定的开源许可下有效。希望在专有产品中嵌入开源软件的公司可使用所谓“宽松”开源许可(一般称为BSD许可)来实现这一点。与此相反,其它公司对其软件产品采用双重许可授权模式,即采用所谓“公共”许可(如GPL),同时在专有许可方式下销售软件。
非营利性开放开发

很多时候,由某一组织开发的软件其本身并不创造收益。在这种情况下,该组织可通过开放源代码来降低开发成本。此时,可以考虑成立非营利性组织来管理软件的开发。这样做有两种作用:首先,基础设施成本和管理成本的很大一部分可被此非营利组织吸收。这些成本由使用非营利性组织管理的产品的公司出资维持。其次,这将鼓励更多的组织参与到项目中来,因为他们相信,他们始终可以使用项目产品,并以符合所有贡献者利益的方式管理项目产品。就是说,不存在与项目战略相“冲突”的商业利益,也没有被“买断”的席位能够掌控开发。

此类组织的最好例证可能就是 Apache 软件基金会 (ASF),一个领导着如Apache Web服务器 (HTTPD) 和许多基于 XML 和 Java 的项目的非营利性组织。ASF 由来自公司和个人的慈善资金支持,为 Apache 项目开发人员提供工作所需的基础设施。ASF 的工作由个人来完成,这些人通常是使用 Apache 代码作为内部开发代码或销售定制版本的公司的雇员。

例如,Apache Rave 门户框架最初是由学术界和商业伙伴作为 Apache 孵化器的一个项目提出的,后续又成功吸引了大量开发者,并于 2012 年晋级为 ASF 顶级项目。

非营利基金会的其它例子还包括:

自由软件基金会
Eclipse 基金会(注意,该组织最初是一个联合会,见下文)
Gnome 基金会
Mozilla 基金会
Python 基金会

联盟

当组织的核心团队就某一项目合作时,可能形成软件维护联合会。这与创建非营利性组织类似(见上文)。联合会与非营利性组织的主要区别是,联合会成员比非营利性组织发起者对项目拥有更多的控制权。非营利性组织会以有利于所有人的方式管理软件,而联合会则以对其成员(和共同利益者)有利的方式管理软件。

联合会模式的一个优势在于,联合会能够通过决定如何使用资源(时间和金钱)来更密切地控制项目。然而,这一事实将减弱项目对非核心团队成员的吸引力。考虑到今日的用户会成为明日的开发者,因而应鼓励用户早期参与,这一点就显得尤为重要。遗憾的是,联合会模式往往使用户感到被排除在外,因为他们不是项目成员。

有意思的是,许多以种子资金创立的项目常常以贤明君主模式(benevolent dictatorship)或联合会模式启动,而当种子资金用完时不得不转变为其它模式。这种转型非常难于控制。

DSpace 项目是教育系统中一个成功的联合会项目的例子。联合会模式的其它例子还包括 Apereo 基金会和Kuali 基金会。而 DSpace 和 Apereo 都在转向更开放的模式。
对降低成本的贡献

一个组织选择开源软件产品可能出于多方面的原因。某些情况下,他们这样做是为了实施新流程、提高现有流程效率或者降低软件许可费用。已经采用了开源软件产品的组织可能也会选择向开源项目贡献代码,以获得更多的收益。例如,加入新功能以进一步简化内部流程,或者修复 bug 以提高员工的使用效率。

在这种情况下,回馈项目的主要动机有两点。首先,通过回馈项目,该组织可确保所依赖的软件保持活跃。其次,通过回馈项目,该组织可确保未来的升级尽可能顺利,即升级后不必重复进行本地修改。

例如,APLAWS 开源内容管理系统就是为帮助英国地方政府提供在线服务而开发的。
教育和研究资金

英国以及世界许多其他地方鼓励教育机构在开源许可下开发软件。大专院校的开源项目资金可能来自投资机构或学校自身。只要机构可以获得直接利益,投资,即便不是全额,也很可能会一直持续下去。

机构可以多方面受益。最大的好处可能就是,内部成本的降低和在为更广泛的教育界做出贡献方面提升声誉。此类项目的一个例子是剑桥大学的 Exim 项目。菲利普•黑兹尔自 1995 年 Exim 项目开创起即负责此项目,在剑桥大学计算机系任职期间他持续服务此项目,直到 2007 年退休。这类项目的另一个例子是南安普敦大学的 MailScanner 项目,大学雇员朱利安•菲尔德是该项目的“贤明君主”。

开放开发已证明是具有不同利益和专长的各方的有效合作方式,尤其适合于开源软件开发。在商业领域,我们看到人们对“开放式创新”这一理念具有广泛兴趣,认为这是开发新产品和现有产品的有效方法。通过精心规划和管理,开放式创新提供了一种可控、可管理的流程,鼓励商业开发和社会推广,而项目学术研发团队只需专注于局部问题,而非商业计划。例如,Apache Wookie 由博尔顿大学开发,却吸引了大量其它学术外领域的开发者,并于 2012 年成为 Apache 顶级项目。
慈善家和其他基金组织

多个慈善组织是开源项目的重要投资者。这些组织包括:

梅隆基金会 - 主要资助图书馆领域的重要工作
Google Summer of Code - 由 Google 运作的项目,用于资助学生参与开源项目
自由软件协会 - 为免费和开源软件项目募集资金的慈善机构

志愿者

参与开源软件项目很有教育意义,更不必说其乐趣了。因此,在业余时间为开源作贡献的人并不少见。除以上模式之外,志愿者的工作也是很重要的,大多数开源项目都有志愿者参与。

目前,项目可通过多种方式使用免费基础设施获得托管和相关功能(如问题跟踪和社区参与),此类资源有 SourceForge 和 GitHub。这意味着,只要项目能得到来自可靠社区的开发和发布支持,便可以零成本可持续发展。

(志愿者)用户对于开源项目同样很重要,因为用户会提出需求并进行测试。只要您能够管理用户对特定版本的期望,就能发行开源软件试用版或早期采用者版本用于测试,这便可以大大降低稳定版本发行前的成本。

OSS Watch 文档如何建立开源社区切实地介绍了如何实际创建一个包容、多元的开源社区。

责任编辑:chenqingxiang 来源: linux.cn
相关推荐

2019-03-29 10:05:44

Apache开源软件

2023-02-02 17:30:01

超越云ICT数据中心

2022-04-26 10:04:56

VMware

2024-04-15 14:20:35

边缘AI人工智能ENIAC计算机

2023-05-08 15:05:54

数据中心服务器

2022-03-03 13:31:16

物联网

2023-06-28 11:39:02

数据中心服务器

2024-01-10 18:13:52

生成式AI开源

2013-11-06 15:42:53

华为云计算华为

2020-10-20 09:00:10

数据中心设计运营

2020-10-28 11:48:52

人工智能

2022-09-29 11:25:18

云计算数据管理可持续发展

2023-02-11 09:00:00

架构

2022-01-13 15:11:12

区块链数字化转型技术

2022-03-14 09:30:00

架构DevOps云时代

2022-09-29 16:04:17

物联网iSIM

2023-04-11 15:53:48

2023-07-05 14:18:09

数据中心
点赞
收藏

51CTO技术栈公众号