参与开源项目的人为什么“不求回报”?「剪贴报」

Posted 七吟覃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了参与开源项目的人为什么“不求回报”?「剪贴报」相关的知识,希望对你有一定的参考价值。

源于对复杂系统的学习,了解了一下软件开源社区是如何形成的,这种自发的有序是如何涌现并不断扩张的。笔记整理自博客开源之道(http://www.ocselected.org)中商业模式相关主题文章。

开源生态成立的逻辑

为什么有人不为经济回报做贡献?

1.开发者参与开源软件项目的动机(回报社区+控制权+自我技能实现)

Bob Young(红帽公司创始人):“当我问到这些开发者们,这些自由软件是如何生产的,他们通常会这么回答‘你知道,这些都来自与工程师们自身的需要和技能展现。”

同时,Stephen R. Walli认为:“在开源世界的关键贡献里有你的名字,这在某种程度上是最好的广告,这是最佳的简历:能够胜任项目中的工作,可以有效的和他人协作,并展示出对于技术的理解,这对于面试是绝佳的优势。当然了,它还非常的有意思。它不仅有趣而且很具挑战性。如果读者你是一名开发者的话,或者渴望改进自己的技能,那么为什么不去参与到上游社区?从而实现自己的价值并增强技能。”

Bob Young询问一名曾为Linux撰写了以太网驱动的开发者Tom Sterling

  • Bob:“你为什么会花钱开发这些复杂的以太网驱动?还不去售卖它们?”

  • Tom:“我们只是作为回报提交了以太网驱动而已,要知道,我们获得整个操作系统的源代码,我们可以将之安装到任何机器上,我可以自由的做任何事情。”

  • Bob:“你为什么不让Linux运行在那些大型机上?就我所知,太阳微系统公司是非常乐意给你源代码的,如果你愿意在他们的系统上开发的话。”

  • Tom:“你说到没错,我也可以和太阳微系统公司索取源代码,但是如果我这么做了的话,我就得和我的律师商讨并查找,哪些代码我可以动,哪些不可以。如果我使用Linux的话,其许可证允许做我任何想做的事情。”

Tom 的回答,解决了 Bob 困惑已久的问题:控制权才是用户的真正关心的,而不是那些所谓的功能。

2.软件开发本身的特性导致开源相比闭源是更好的途径(代码审核+代码重用;工程经济原理)

Stephen R. Walli(曾是Hewlett Packard Enterprise的杰出技术专家。目前在Docker公司担任顾问)说:我们从一开始开发软件就在分享着软件,这要一直追溯到上世纪40年代末和50年代初普林斯顿高等研究所,那里的第一台可编程计算机上就是如此工作的。具体来说,软件构建的稳定性、配置管理、审核工具和流程、以及测试,所有的这些举措都能帮助我们在合理的软件交付过程中减少缺陷数量。撰写出优秀的软件是非常困难的。

经事实证明,软件的代码审核要比测试本身发现的缺陷更有效,所以构建软件开发的代码审查文化来创建更加优秀的软件。

在软件工程和编程系统中很多的发明来自于代码的重用,或者是精简已有的代码以生产更好的软件。软件本质上是动态的,程序在被使用的过程中逐渐的进行演进。

运行良好、规则清晰、自由许可的协同社区能够满足软件开发的上述属性,而且相比其它的开发方式能够开发、演进、维护更优秀的软件。而这点就是开源软件背后的工程经济原理。

walli还强调,开源项目遵循协作规则的重要性,这些规则包括:创建过程中进行同行评审,版本控制和配置管理、使用软件构建自动化和测试框架。若是没有这些,则就不可能在使用它的社区中传播,更不用说让成千上万的用户当作产品来使用了。

3.公司能从开源生态系统中获得的好处

公司参与开源生态有两种方式,一种是加入开源项目,另一种是将自己产品或服务的代码开源。

适兕(开源之道博客作者)总结了公司参与开源生态系统的益处(名与利)

  • 参与到自己所依赖的项目,快速的增强产品特性。

  • 吸引并留住优秀而卓越的人才。

  • 改进代码质量、文档、模块化以及重用性。

  • 将开发和测试的资源池化。

  • 让大众来验证架构的设计决定。

  • 在这个生态环境下保证能够跟上步伐和处于中心位置。

  • 建立信任以及协作的基础。

  • 对自由软件有着独特的情怀等类似的使命。——名

Stephen R. Walli认为将自己公司的代码开源有助于形成客户对于公司的粘性:当一家公司根据自己的产品和服务,对外提供源代码时,并尝试发展自己的协作社区,那么这家公司就可以获得很多的益处。其技术会对客户以及未来潜在的客户具有一定的粘性,他们会进一步增设布道师和专家团队,并围绕技术更进一步的培养用户的习惯,那么技术就随之稳固的在客户中间流传。

开源生态中公司的常见收入模式

适兕(开源之道博客作者)总结了开源生态中公司的主要收入模式

  • 以软件即服务(SaaS)的形式出售:有了云计算之后,以软件即服务的方式赚取利润,不失为一种可行的办法,尤以应用软件、CMS、HR、ERP、CRM等系统,让在线用户按需付费、即用即付的订阅方式来完成整个过程,而软件本身是开源的。最为知名的例子就是 WordPress 内容管理系统,依靠托管内容和样式等周边产品赚取利润。

  • 依商业许可重新发行,一些宽松的许可协议,如Apache、BSD等,是允许以商业且闭源的方式二次发行的。这其中最为著名的例子就是苹果公司的MacOSX操作系统,其内核是使用的BSD Unix,但是其二次发行也是顺理成章。

  • 销售增值部分

    • 销售某些专用的部件,例如视频游戏中的声音、图像等艺术的数据

    • 销售可选的商业扩展组件,比如操作系统,两张DVD,一张是基本的可安装的系统盘,另外一张是闭源的、商业的发行套件。也被称之为“Open Core”方式。如Cloudera、Elastic、Confluent

    • 销售专业的服务:服务包括有,培训、技术支持、咨询等,而软件本身是不收取任何费用的。还有一种情形是公开的只提供开源软件的源代码,只有用户付费了才能得到二进制的可执行程序,提供编译和软件打包的商业服务。如红帽和IBM

    • 双许可证:用户可以无偿使用无须付费的、开源的版本,这仍然属于商业版本的一部分,若用户有进一步的需求(重点是新功能),诸如商业的技术支持和服务等则就需要另行付费了。如Oracle的mysql数据库

  • 产品周边

    • 广告支持

    • 以认证和商标出售为生

    • 销售品牌周边商品:诸如Mozilla基金会、维基百科基金会等,销售一些如T恤、咖啡杯子等

  • 募捐

    • 接收志愿者的赞助

    • 与筹资组织合作

  • 价值链创新

    • 众包模式

    • 赏金驱动开发,如很多公司为开源软件的安全漏洞的发现准备了悬赏。

公司如何参与到开源项目中

1.参与到开源项目中,贡献代码,把项目转化为可以服务客户的产品

walli强调,不要将开源项目与产品相混淆。如,Linux内核就是一个项目,Fedora是一个发行版项目,RHEL就是一款产品。虽然许多优秀的软件是从一个运行良好的开源项目中所孵化出的,从而减少了工程上的工作量,但依然还有大量的工作要做,以便将其变成为客户解决问题的产品。

Ruth Suehle(在红帽工作,担任过红帽杂志的编辑)说:开源赋予了令人印象深刻的创新和快速变更。但是,企业一旦将软件部署到了生产环境中,那么创新和快速的变更对于企业来说则是噩梦般的存在。所以,红帽联合芯片制造商、硬件供应商以及独立软件开发商,对红帽的产品进行相互认证、兼容性测试,红帽则维护数以万计的软件包,并让代码冻结在某个稳定的版本。然后承诺提供支持7年的生命周期,这样红帽就将开源的优势提升到了适合稳定生产环境的所需要的安全级别。

2.对开源文化的宣传与社区建设

Ruth Suehle认为:社区大于代码

正如开源并不仅仅只限于代码一样,红帽的社区贡献也并没有将自己局限在代码上。

Opensource.com不是为了推广红帽。红帽仅仅是希望这有助于树立红帽为开放性的领导者的形象,并体现红帽的远见卓识,而不是去通过讲述红帽自己的故事。红帽希望通过展示开源界的人们是如何正确的做事,并希望可以帮助到那些尚未接受开放的人们或企业,让他们看到开源的好处,从而能够把握未来。

3.在开源生态中如何正确对待竞争

Grant(Lucidworks的联合创始人兼首席技术官, Apache Mahout 的共同创始人,而且还是 Apache Lucene 和 Solr 开源项目的长期贡献者)提出一个非常好的问题,恰好说明了开源项目和商业竞争有着不一样的挑战和机遇:福特/Apple,假设他们真的发布了所有的细节,这是不是也就意味着通用汽车或三星电子会去花时间去了解这些计划,而不是走马观花的粗略审查一下?

言下之意是可能不会,至少不一定是最好的策略。毕竟看别人的代码本身就是一件非常费劲的事,而且还得提防别人是不是有可能故意误导你。

对于竞争对手在开源项目中的进展如何对待:

  • 注意许可协议,有的竞争对手的成果可能允许直接套用,如果不行的话则去研究其功能发展脉络

  • 同时注意不要花过多时间分析对手的细节和代码,因为实际上效率很低

  • 不要忽略好点子的力量

  • 不要只专注代码,要注重用户体验

    • walli认为,吃瓜群众是成功的关键,有很多吃瓜群众其实意味着你做对了事情,只有拥有了足够多的用户,就会有开发者参与的可能性,那么一旦开发了就可能成为贡献者。但是作为项目的发起者要做的事情是将上述所有过程(安装、测试、提交代码)都变得更为容易。

  • 与竞争对手是竞争中合作的关系

    • 站在更广阔的市场角度,还有更多的开源项目,与当下的竞争对手合作可以共同完善所处的生态。

    • 开源项目中,各个团队之间的人员和成果常常是共享的,加之人员流动的加快,更有可能跟原来竞争对手的人共同工作;


    参考资料

    可惜不知道什么原因http://www.ocselected.org已经无法访问了

    [探索红帽商业模式最初的灵感来源]@BobbyMartin:http://www.ocselected.org/posts/open_source_history_teaches_us/

    [根本就没有什么所谓的开源商业模式]@StephenRWalli:http://www.ocselected.org/posts/business_model/there_is_no_open_source_business_model/

    [开源正在成为公有云巨头们的战场]@适兕:http://www.ocselected.org/posts/business_model/open_source_is_battle_field_of_public_cloud/

    [开源软件商业模式之收入来源概览]@适兕:http://www.ocselected.org/posts/business_model/opensource_business_model_overview/

    [红帽成功背后的秘密武器是什么?]@RuthSuehle:http://www.ocselected.org/posts/business_model/what_is_the_secret_of_redhat_success/

    [竞争中合作:开源商业化的爱与恨]@Grant:http://www.ocselected.org/posts/business_model/coopetition_all_fair_in_love_and_open_source/

    [关于开源软件的12条模因]@StephenRWalli:http://www.ocselected.org/posts/business_model/12-memes-explain-open-source-software/


    关于「剪贴报」

    记得中学的时候老师会让我们把报纸上喜欢的内容剪下来贴在本子上,当时大概仅仅只是享受剪纸的乐趣。最近发现这其实是一种不错的主题阅读记录的形式,不仅是泛泛阅读,把看到的某个主题相关有价值信息分门别类进行整理,有助于自己形成更加整体以及清晰的认识。

    以上是关于参与开源项目的人为什么“不求回报”?「剪贴报」的主要内容,如果未能解决你的问题,请参考以下文章

    为什么建议学生积极参与开源项目?

    如何从0开始参与一个开源项目?

    如何从0开始参与一个开源项目?

    如何从0开始参与一个开源项目?

    如何参与一个开源项目(多图)

    如何参与开源项目 - 细说 GitHub 上的 PR 全过程