消费或发布开源软件的 6 个动机

尚无读者喜欢此文。
neon sign with head outline and open source why spelled out

Opensource.com

开源非常棒,您可能出于多种原因考虑消费、发布、协作或支持开源。1 以下是其中一些原因

1. 微观经济动机

无论您是个人、公司、小型企业、非营利组织还是政府机构,开源都符合您的最佳利益。

  • 将开发人员从低价值工作转移到高价值工作。 我们喜欢在开源领域说,所有容易的问题都已得到解决。 博客、内容管理和操作系统都是一些已经有成熟(和主流)开源解决方案的问题,仅举几例。 虽然您的开发人员可以将时间花费在重新发明开源社区已经完善的轮子上,但最好还是使用世界上最好的轮子,尤其是在这个轮子对您来说是免费的时候。 这使开发人员可以专注于尚未解决的挑战,这些挑战是您组织使命所独有的并为其增加价值。 为什么不站在技术巨人的肩膀上呢?

  • 降低总体拥有成本 (TCO): 与闭源和专有替代方案相比,使用开源软件可降低总体拥有成本。 采用开源软件通常具有较低的前期成本(因为该软件通常是免费或成本相对较低的),并将成本中心从许可(运营费用)转移到定制和实施(资本支出)。 培训、维护和支持等额外成本是沉没成本。 无论软件是开源还是闭源,您都将为两者付费,在商业现成软件 (COTS) 的情况下,成本通常已计入许可证中。 开源的独特之处在于您无需为使用底层知识产权付费。

    成本 开源 专有
    许可
    实施
    维护
    支持
  • 只要有足够的眼睛,所有错误都是肤浅的(林纳斯定律): 经验表明,开源 往往比其专有或替代同类软件产生更高质量的软件。 当您编写闭源软件时,唯一可以检测、诊断、分类和解决软件错误的开发人员是那些恰好受雇于发布该软件的公司(或更可能是他们付费构建该软件的独立承包商)。 开源提供三个优势:首先,您有机会利用世界上最优秀开发人员的知识,而不仅仅是那些在一个组织工资单上的人。 其次,潜在的贡献开发人员的数量以及潜在的知识库要大几个数量级。 最后,开源软件被适应于各种用例,而不仅仅是发布者最初预期的用例,从而比传统的、预测性的质量保证流程更快地发现错误和边缘情况。

  • 现代软件开发实践: 开源软件不仅仅是“发布”的代码。 您很难找到一个遵循过时的、瀑布式或僵化的命令与控制开发理念的开源项目,这些理念在许多大型官僚机构中仍然很常见。 由于开源项目是分布式的,并且不受政策或技术债务的束缚,因此几乎所有开源项目都需要现代软件开发工作流程。 这些工作流程 是电子化的(意味着流程自然被捕获和公开),异步的(意味着决策与时间和地点无关),并且是无锁的(意味着贡献者可以快速实验而无需事先批准)。 这三个工作流程特性意味着更快的开发周期和更频繁的发布,而不会牺牲质量。

  • 开源是未来: 您很难找到一家当今值得风险投资的初创公司不是至少部分(如果不是大部分)基于开源的。 开源不是一种时尚,也不是一群嬉皮士在加利福尼亚州像传递非法物质一样传递扎染笔记本电脑。 开源是现代组织以及越来越多的传统组织构建软件的方式。 越来越难以论证五年或十年后技术格局将变得更少协作和更封闭。 哎呀,即使是传统上最反对开源的公司之一微软,也已经 开源了他们的主要开发框架(以及 苹果和 Swift)。 今天,所有最大的科技公司,从 IBMSAP 再到 Adobe,都积极参与开源社区。 说“开源是未来”略有不准确。 开源已经获胜。

  • 按您自己的时间表打补丁: 只要软件是由人编写的,错误和安全漏洞就不可避免。 当在专有软件项目中发现漏洞时,您必须等待公司时区的工作日开始,等待召开会议,委派任务和编写代码,所有这些都在法律、销售和营销等 G&A 团队协调如何将修复程序纳入下一个定期计划的发布之前。 对于专有软件,错误和漏洞会影响利润,因此不鼓励广泛宣传其细节。 使用开源,不仅更精简、更敏捷、以非营利为导向的组织可以更快地行动,而且由于您可以访问源代码,因此您通常可以根据自己的方便应用大小修复程序,而不是根据发布组织的发布周期的方便。

  • 上游改进: 如果您使用开源软件,那么回馈社区符合您的最佳利益。 贡献可以以报告错误的形式,甚至可以提交建议的修复。 由于软件是由人编写的,因此极不可能完美,即使如此,也可能无法满足每个用例。 与其 fork 项目并将更改实施到您自己的版本(闭源)中,不如向上游(开源)提交错误报告和改进,这使您更容易继续从其他人提交的后续修复和改进中受益。

GitHub 联合创始人 Tom Preston-Werner 在他的帖子开源(几乎)一切中列出了一些额外的论点

  • 力量倍增器: 开源是您开发人员的力量倍增器。 这发生在三个方面:首先,当社区围绕共同的挑战形成时,自然而然出现的思想多样性比思想市场仅限于您的组织时浮现出更好的解决方案,这意味着开发人员工作更聪明。 其次,将问题空间暴露给其他感兴趣的组织可以提供额外的人力资本来应对您的挑战,这意味着解决方案投入了更多的开发人员时间,而您无需额外付费。 最后,“更多用户意味着探索更多用例,这意味着更强大的代码。”

  • 模块化: 开源项目往往采用更模块化的架构,从而提高代码的灵活性和稳健性。 当您为单个用例构建软件时,您可以采取一些技术捷径。 问题在于当您想在不同的用例中使用该软件或当您的需求发生变化时。 开源本质上是为各种用例、环境和用户构建的。 这意味着更多选项(而不是为特定用途硬编码默认值),以及鼓励更多模块化(而不是假设一套通用功能),从而在长期内实现更大的灵活性和更低的定制成本。 换句话说,开源需要更干净、更易于维护的代码。 “即使是内部代码也应该假装是开源代码”。

  • 减少重复工作: 您应该专注于您的核心竞争力。 是什么让您与众不同或赋予您优势? 其他一切都是其他人也在做的工作: 或者换句话说,是您需要做的工作,以便您可以做您想做的工作。 不必如此。 开源通过允许共享各个组件来减少组织内部和跨组织的重复工作。 可口可乐的秘方是其糖浆的配方,而不是其发布博客文章或新闻稿的能力。 使用开源 CMS 或与世界分享其内部构建的博客组件并不会使百事可乐的味道更好。 “减少重复意味着更多工作朝着重要的事情迈进。”

  • 绝佳的广告: 成功的开源项目的维护者通常被视为行业领导者,他们能够围绕特定的软件问题塑造对话,并将他们的品牌与首选解决方案联系起来。 37Signals 以创建 Ruby on Rails 而闻名。 GitHub 以创建 Hubot 而闻名。(“在两天内,它在 GitHub 上有 500 名观察者,在 Hacker News 上有 409 票赞成。这转化为 GitHub 的商誉和比以往任何时候都多的超级粉丝”)。

  • 吸引人才: 开发人员希望解决尚未解决的问题。 开源允许您向开发人员社区展示您面临的有趣挑战以及您如何考虑解决这些挑战。 开源开发人员可以随意为项目做出贡献,以了解您的工作方式以及为特定的一系列挑战开发软件的感觉。 如果他们喜欢他们所看到的,那么他们申请工作的机会要比您的组织在工作方面是一个黑匣子要大得多。 “聪明的开发人员喜欢与聪明的代码打交道。”

  • 最佳技术面试: 传统上,技术面试涉及处理一个模拟问题,该问题可以在设定的时间内以很少的额外上下文来解决。 根据定义,此类模拟不是真实世界的用例,也不能显示与申请人一起工作会是什么样。 开源提供了候选人如何解决问题以及他们如何与他人合作的可见性。 如果过去六个月,候选人一直在为您希望他们从事的项目做出贡献,并且您喜欢他们的工作,那么您可以更自信地雇用他们。 “[T]最好的技术面试是您不必做的面试,因为候选人已经在您的一个开源项目上表现出色。”

2. 宏观经济动机

通过结合和增强并行或相关的努力,开源使社会在生产更高质量的软件方面更有效率。

  • 效率: 上面许多微观经济论点总体而言具有宏观经济影响。 当企业更有效率地工作时,经济会生产更多(和更好)的软件,这些软件反过来可以改善生活。 如果您认为所有容易的问题都已得到解决,那么在宏观经济层面上,开源允许您将公司从较低级别的工作转移到更高级别、尚未解决的挑战。 这种更高级别的工作的结果往往是颠覆性的,而不是迭代的,从而创造了激发经济活力的动荡。 如果每家科技公司都必须花费几年的研发时间来解决相同的 5-10 个问题,那就会延迟(或至少将资本从)公司生产力和生产对社会有价值的技术的能力,更不用说,这提高了新市场进入者为老牌公司提供替代方案的门槛。

  • 站在巨人的肩膀上: 今天,创新技术,即提高生活质量的技术,不是在真空中创造出来的。 即使是闭源技术,从您口袋里的手机到您驾驶的汽车,再到生产它们的财富 500 强公司,都严重依赖开源(不相信我?看看您手机的“设置 -> 关于”页面)。 正如代数和三角学不受私营部门版权的束缚,为从微积分到量子物理学的一切让路一样,开源允许开发人员将已解决的问题视为既定事实,依靠其自身专业领域之外的专家的知识,并释放他们创造新发明的潜力,否则是不可能的。

  • 促进思想市场: 软件只不过是技术知识。 曾经有一段时间,炼金术士会隐瞒他们的工作成果,声称他们的发现是专有的。 每个人都必须通过痛苦的方式了解饮用铅对人体的影响。 当那些炼金术士开始分享他们的工作时,我们开始称他们为科学家,科学革命由此诞生。 数学、文学和计算机软件也是如此。 两个单独工作的开发人员可能会针对给定问题提出两个解决方案,但通过对话与协作,每个人都带来自己的知识和经验,可能会发现相同问题的三个、五个或十个解决方案,结果社会变得更好。

3. 道德动机

开源的正式名称是自由/自由开源软件。 因此,开源动机具有很强的道德成分。

  • 自由如言论,而非啤酒: 开源软件并非没有成本。 当开源软件被称为“免费”时,它指的是软件消费者获得的权利,而不是他们必须支付的成本。 例如,Adobe 的 Flash 播放器在经济意义上是免费软件,但仍然是专有(非自由)软件(和格式)的核心。 具体而言,自由软件指的是四个核心自由:运行软件的自由、研究和修改软件的自由、重新分发软件的自由以及分发您的修改的自由。

    正如 自由软件运动所主张的那样,非自由软件存在软件控制用户的风险(发布者控制软件)。 这创造了软件成为不公正权力工具的潜力。 如今,专有软件监视用户(例如,拨打家庭电话)、限制用户(例如,DRM)、审查用户(例如,公司防火墙)或利用用户(例如,不可跳过的广告)的情况并不少见。 随着物联网的兴起,这一点变得更加重要,并且有可能将世界变成“电话推销员的互联网”或“窥探者的互联网”。 自由软件将权力重新掌握在用户手中,并确保用户控制他们使用的软件,而不是相反。

  • 回馈的义务: 开源是软件的“一分钱投入,一分钱取出”的罐子。 如果您使用开源,无论是服务器、桌面出版应用程序还是软件库,您都有义务回馈社区。 毕竟,如果没有他人的贡献,微观和宏观经济动机将不再成立,我们所知的开源将不复存在。 这就是黄金法则,或者用传统的哲学术语来说,是 绝对命令

  • 政府应将其开发成果提供给为其开发付费的人民: 如果开发成本由政府支付,那么就有额外的理由回馈。 政府收取金钱(税收)来为其民众提供服务。 例如,美国联邦政府是通过其宪法由我们人民建立的,以执行许多重要任务。 如果民众(我们人民)正在为软件的开发付费,那么我们应该获得我们付费开发的成果,包括我们付费开发的软件,这是理所当然的。

  • 教育下一代: 当今许多行业最杰出的工程师都通过学习开源而崭露头角。 当软件的底层代码可供检查时,消费者可以了解他们最喜欢的软件是如何工作的,计算机科学课程可以分析行业的前沿技术是如何构建的。 这对于培养下一代软件工程师大有裨益(如果没有开源,他们将不得不猜测先前迭代的内部运作方式)。

4. 透明度动机

开源允许更高的流程透明度,无论是检查政府行为所需的透明度,还是私营公司软件的准政府职能的透明度。

  • 展示您的工作: 随着政府越来越依赖技术来监管行业和提供公民服务,能够看到底层算法和流程对于检查政府的工作至关重要。 如果使用闭源软件包来计算我的税款或分配广播频率,我如何知道该过程,我们的过程,是公平和准确的? 虽然人类流程不能被版权保护,但当闭源时,这些流程会变成一个黑匣子,最大限度地减少公民制衡的可能性。

  • 公众信任的职位: 随着私营公司生产的软件越来越多地被置于公众信任的职位上,透明度义务也扩展到私营部门。 投票机是否准确地计算了我的选票? 当面临两难选择时,自动驾驶汽车是否符合社区规范? 例如,如果使用闭源软件包在犯罪现场比较 DNA,与可以接受交叉询问的医学专家不同,该专有算法受到版权(或专利)法的保护,免受审查。 开源,至少是特定组件的部分开源,将随着私营公司自动化准政府职能而变得至关重要。

5. 参与性动机

开源为软件利益相关者(包括技术和非技术人员)提供了塑造任何给定软件开发项目的机会。

  • 直接民主: 鉴于大多数民主国家的规模,真正的直接民主(每个公民对每个问题进行投票)是不可行的。 由于技术限制,公民也无法直接参与大多数问题。 开源通过允许软件利益相关者直接参与软件开发过程来改变这一点(因为软件越来越依赖于编纂监管和服务交付偏好和规范)。 认为购买医疗保健的过程令人困惑? 提出问题。 认为政府应该使用更多开源,提交拉取请求。 白宫已经在针对许多以 IT 为中心的政策这样做,例如 数字服务行动手册、HTTPS 和开放数据政策。

  • 客户反馈: 开源使消费者能够在私营部门的开发过程中拥有共同的、强大的声音。 把它想象成软件的 Yelp。 如果没有 Yelp,餐厅可以自由地惹恼单个顾客。 充其量,不满意的顾客可能会劝退 5-10 位其他潜在顾客。 在后 Yelp 世界中,顾客在选择去哪里之前会阅读陌生人的评论。 开源在消费者-发布者关系中放大了软件消费者的声音。 更不用说,私营公司收到的反馈可以更好地为产品决策提供信息,并改进整体产品。 开源为公司提供了直接联系其最热情的客户的渠道。

6. 个人动机

如果您是开发人员(或有抱负的开发人员),开源可以为软件开发社区内的个人成长之路提供一个简单(且免费)的入口。

  • 学习编码: 开源是学习如何编码的好方法。 想知道您最喜欢的网站是如何工作的吗? 在您的 Web 浏览器中单击“查看源代码”可以帮助您找到正确的方向。 您可以阅读为其提供支持的软件的文档,甚至可以启动您自己的克隆。 想了解更多? 加入框架或语言的本地聚会。 更好的是,向项目提交拉取请求以修复一个小错误或添加一个新功能。 虽然肯定会涉及时间和机会成本,但所有这些都不会给有抱负的开发人员带来任何直接成本,至少在软件方面是这样,并且比在专有社区内做同样的事情(尤其是作为局外人)更具包容性。 几乎所有传统学术界以外的编码学校今天都教授开源是有原因的。

  • 这很有趣: 根据维基百科,开源是一种爱好。 事实上,开源传统上一直被认为是业余爱好者的产物(尽管我认为今天的情况并非如此)。 开源很有趣。 如果您是 黑客,它会为您提供一套无穷无尽、不断变化的魔方,供您在周末解决。 正如谜题(纵横字谜和拼图)提供一口大小的智力逃脱一样,开源的秩序和对称性通常可以成为代码的岩石花园(特别是对于那些足球是一个令人尴尬的非起步者而言)。

您应该更喜欢消费、发布、协作和支持开源的原因有很多,如果您的原因未在此处列出,我很乐意听到(并添加)它。 无论您的原因是什么,很明显开源不是下一个大事件。 开源已经在这里了。


对于更长、更全面、研究更透彻的列表,我强烈推荐 David Wheeler 的经典论文《为什么选择开源软件》,该论文最初于大约 15 年前发表(至今仍然非常准确)。

最初发布在 Ben Balter 的博客上。在此通过知识共享重新发布。

User profile image.
Ben Balter 被评为政府和技术领域 25 位最具影响力的人物之一,并被美国首席技术官描述为“最坏的创新者之一”,被白宫数字战略主管描述为“瓶子里的闪电”,是 GitHub(世界上最大的软件开发网络)的政府布道者,他在那里领导鼓励人们的努力

评论已关闭。

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.