在开源的世界里如何应对搭便车者?

简介: 在开源的世界里如何应对搭便车者?

近来,有几位年轻人写了一些文章,有关道德绑架开源项目维护者之类的怨言之类的,其中颇具代表性的是:

  1. 望京一哥小智:6年开发者社区工作经历,聊聊我眼中的社区、开源与商业
  2. toughtworks 的李光毅: 开源社区的暗面

通常情况下,我是不理会这样的文章的,但是这次实在憋不住了,不吐不快。我想最大的原因还是不希望看到年轻人这样,他们本应该充满希望,对开源保持乐观。


什么是搭便车?

经济学家/博弈理论家的解释是这样子的:

没有通过参与集体行动来为利益总和的累积贡献力量,还想要从成果中分得一杯羹。[1]

那么我们在开源的世界里,可以套用这个定义:

一些商家或个人没有参与开源项目的 upstream 的任何行动(设计、编码、测试、反馈、需求、文档、宣传、营销等),只是坐收其中的利益,甚至还违反开源项目的许可证声明。

大体上满足这个定义,就可以称之为搭便车者了。


如何识别搭便车行为?

在开源的世界里,其实识别搭便车行为是蛮难的一件事,因为加入开源,就压根不是冲着这个来的。还因为开源对于最终用户是完全不设防的买卖,对于惩罚搭便车行为不是直接的。

最为简单粗暴的识别方式就是是否违反项目的许可协议,换句话说,当继续分发的时候是否遵照了开源的许可证条款。

虽然搭便车行为在人类自己建立的秩序上不能让部分人接受,但是传统意义上的知识产权官司大部分也很难提起诉讼。

其实还有一个颇为有效的识别方式,可以美国波特·斯图尔特大法官鉴定情色艺术的说法[2]:

“哪儿有什么标准,我一看就知道是不是。”


搭便车行为不会根除,请认清这一现状

我们通常以为随着时间的流逝,尤其是近代物理学和生物学的发展,以进化论为代表的观念深入人心。以为人性也是全部进步的,其实不然,以全球的视角来看,文化的发展并不是齐头并进的,可能随着全球化供应链的发展,技术普惠人类可能很快,但是文化观念却未必。即所谓的“现代人的头脑,原始人的心智”[3]。

因为开放源代码的天然特性,对于搭便车行为是没有任何限制的,也就是我们常常形容的“不设防”的交易,而且将定价权完完全全、彻彻底底的交还给了消费者。那么搭便车行为,只要文化没有进化为生物性,这种事情就不会断绝。

如果对于搭便车行为视为一种恶意的话,而且你总是盯着这些恶意的行为,就会让你的心胸充满怨气,就是作者在引言中所提及的那种类型,进而走向开源的反面:专有的闭源,历史上有一些聪明的人非常的善于利用人性的这点,并成就了专有软件帝国。正是应了著名哲学家尼采的那句话:

“与怪物战斗的人,应当小心自己不要成为怪物,当你凝视深渊时,深渊也在凝视你。”

可以,换一个思路,搭便车又何尝不是一种征得用户乃至开发者的先决条件了呢?但是,正如中国古代谚语所云:“升米恩,斗米仇”的后半句,有一部分搭便车者就会转换为对原创者的恶性索取。这是谁也不想看到的局面,但是人性的弱点,我们是可以通过其它手段来进行预防和弥补的,而且不一定非得使用道德绑架/谴责,法律等强制手段。


如何消化道德上的反胃

搭便车者,绝大多数时候给人的是一种不适的感觉,似乎一报还一报是一种人类非常原始的本能,即使进入现代复杂的社会,人们之间的相互依赖前所未有的紧密,而且有着越发紧密的趋势。

就像我们在引言总所看到的文章作者字里行间透露出来的厌恶、谴责一样,搭便车者给人的感觉让人抓狂。每年、每个项目都有一些人忍受不了这些人或行为,倦怠感充斥着,有的甚至心理上出现了一些问题。

其实,这种反感,要尽力去理性的对待,不能任由其发展,无论是倦怠,还是愤怒,其实伤害的是自己。除了上面提到的转移注意力之外,掌握更多的知识,未尝不是一种转移这种消极的上佳做法。


如何转化搭便车为共赢,才是充满前途的道路

一定要认识到,人是可以改变的,没有人是天生下来的搭便车者,不要尊严,愿意寄生的。有了这个前提,就可以想着做下面的事情了,即有一部分搭便车者是可以转化为:付费用户、推广者、contributor、捐赠者、赞助者的,一同进步,所有人都赢的非零和博弈,是大家都乐意得到的结局。


从认知的角度

软件的开发以及软件本身是一种很特殊的兼具信息、计算机技术、传播等特性的新型事物,其本身的抽象性,以及构建自身世界的复杂性,决定了软件是一个动态的、开放的、进化的创造物。也就是说它是一直都在变化的。纵观软件的历史,很好的证明了这点。

只有真正的理解了软件,才能明白开源的重要性,源代码对于技术的传播和交流的载体,是软件进化的充分条件。其实搭这样的便车,是一种“冒险”,它并没有固定下来的可能性,随时翻车。


动之以情,同理心策略

无论是黑客文化[4]也好,匠人[5]精神也罢,开源项目的开发、工程都是有这些人付出劳动的结果展现,正如其成果,以Linux、Kubernetes、Apache等为代表的开源项目为现代信息世界的塑造有着巨大功劳的成果,这些人在现实中也是人类,需要吃、穿,需要安心的为社会尽自己的一份责任。任何对开源项目的不可持续性造成的伤害,就会间接的造成这些开发者的困扰,从经济学的角度讲,一旦不划算,他们就可能会放弃项目,另谋高就。


精打细算不吃亏

开发一款开源项目是可以计算出成本的,全球化的汇率是流通的,各地的人均收入也是可以查阅的,不断迭代的开源项目仍然在不断的累积着成本,搭便车者往往会在静态中做计算,忘记了没有投入,意味着对于项目的驾驭能力的消弱,以及创新的匮乏。以Linux为代表的开源项目,用事实证明了,搭便车者经过了岁月的洗涤,没有占半分便宜,相比于一干不断的contributing,亏的是不见影踪。

把自己该做的事情都做了,剩下的就看他们的觉悟了。


结语

“以眼还眼,以牙还牙” 是记载于*巴比伦时代的汉谟拉比法典[6], 但是这是说被伤害的时候。其实搭便车者在信息时代,或者是限定在开源世界,至少是没有伤害到主体:开源项目及其共同体,虽然在行为上是有道德反感,而且也不符合共同体的日常行为规范,但是他们并不是开源的敌人,或者是由于一时的贪婪,或者是由于知识上的欠缺,又或者是由于道听途说,又或者是由于盲目跟风,无心做出了这些行为。

就结果而言,搭便车者往往没有什么好的下场,翻车、落伍、失去诚信等等都是他们最后承担的代价。

无论如何,他们仍然是开源世界的一部分,你不能消灭他们,那么就不如争取到他们。

9月17日,由中国信通院主办的可信开源大会 OSCAR 即将举办,演讲主题赞助正在招募中,“开源之商”和“开源文化”分论坛,欢迎你来传播开源知识,拓展用户视野,打开开源万亿市场!

相关文章
|
资源调度 安全 网络协议
聊聊 Zookeeper 的 4lw 与信息安全
聊聊 Zookeeper 的 4lw 与信息安全
|
虚拟化 数据中心 异构计算
GPU 虚拟化技术MIG简介和安装使用教程
使用多实例GPU (MIG/Multi-Instance GPU)可以将强大的显卡分成更小的部分,每个部分都有自己的工作,这样单张显卡可以同时运行不同的任务。本文将对其进行简单介绍并且提供安装和使用的示例。
1040 0
|
SQL XML 关系型数据库
Mybatis-Plus通过SQL注入器实现真正的批量插入
Mybatis-Plus通过SQL注入器实现真正的批量插入
6245 0
Mybatis-Plus通过SQL注入器实现真正的批量插入
|
11月前
|
监控 安全 测试技术
我们为什么要API管理系统呢?
API 管理系统通过接口标准化与复用、简化开发流程、版本管理、监控与预警、访问控制、数据加密、安全审计、集中管理与共享、协作开发、快速对接外部系统和数据驱动的决策等多方面优势,显著提高开发效率、增强系统可维护性、提升系统安全性、促进团队协作与沟通,并支持业务创新与扩展。
|
JavaScript 前端开发 Java
敏捷测试价值观、方法和实践读书笔记(5)
本章节介绍了敏捷功能测试的原则与实践,包括单元测试的概念及其编写步骤,测试驱动开发(TDD)的流程,以及如何通过模拟对象进行测试。详细讲解了单元测试的编写方法,如初始化对象、执行操作及验证结果,并探讨了 TDD 的五个步骤。通过具体案例展示了如何逐步完善储蓄账户的功能测试,包括存款、取款及异常处理。此外,还讨论了代码覆盖率的重要性及其局限性,强调了测试充分性比单纯追求代码覆盖率更为关键。
174 4
敏捷测试价值观、方法和实践读书笔记(5)
|
前端开发 API
vue3中Pinia的使用之actions
vue3中Pinia的使用之actions
|
存储 Prometheus 监控
Prometheus 存储方案与优化
【8月更文第29天】Prometheus 是一个流行的开源监控系统,它使用时间序列数据库来存储监控数据。Prometheus 的时间序列数据库是基于本地文件系统的,这种设计提供了高吞吐量的读写能力,但同时也带来了存储方面的挑战。本文将详细介绍 Prometheus 存储的工作原理,并提出一些优化策略以减少磁盘占用。
1132 1
|
存储 SQL 安全
数字堡垒:构筑网络安全与信息保密的防线
【5月更文挑战第30天】 在数字化时代,数据如同虚拟世界中的流通货币,而网络安全与信息安全则是保障这些数据资产安全的“保险箱”。本文将深入探讨网络安全漏洞的本质、加密技术的最新进展以及提升个人和企业的安全意识。通过分析网络攻击者的常见手段和动机,我们能够更好地理解防御策略的必要性。文章还将介绍如何利用加密技术来保护数据传输和存储,并讨论培养安全意识的重要性,以建立更为坚固的信息安全防线。
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的租房平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的租房平台附带文章和源代码部署视频讲解等
91 0
|
Web App开发 缓存 网络协议
浏览器原理 03 # HTTP 请求流程:为什么很多站点第二次打开速度会很快?
浏览器原理 03 # HTTP 请求流程:为什么很多站点第二次打开速度会很快?
597 0
浏览器原理 03 # HTTP 请求流程:为什么很多站点第二次打开速度会很快?