瞰源|当我们谈论开源时,我们在谈论什么?

OpenTEKr OpenTEKr     2023-02-21     803

关键词:

「如果你有正确的态度,有趣的事情自然会找到你。」 —— Eric S. Raymond

1.

开源三问

一直记得很多年前的那个夏日午后,当我游荡在波士顿艺术馆里,突然被迎面而来的一大幅油画震撼住的场景。

那是一副色彩斑斓、布局奇特的画,从右到左依次画着三组人物:右边是几个女子和一个婴儿,中间是一个踮着脚、抬头举手正在摘果子的年轻人,左边则是一位迟暮的老人和一位女子,还有只鸽子。画面的左上角则用亮黄色的色彩衬托着三行法文:D ou venons nous/ Que Sommes nous / Ou Allons nous v。我好奇地拍下来用手机上的字典查了下,译文是:“我们从哪里来?我们是谁?我们往哪里去?” 原来这就是「人生三问」,高更的经典画作!

随着接触越来越多的开源社区,以及和不同的开源社群深入的交流,我也不由地心生好奇, 犹如高更画作里的人生三问:开源从哪里来?开源是什么?开源往哪里去?

2.

开源从哪里来

在深入了解开源的历史后,我们会发现开源其实不是与生俱来的,而是一个经过妥协后的名词,它最初的名字叫「自由软件」。

20世纪末期,自由软件运动和商业化专有软件历经过十多年的斗争和博弈。在1998 年 2 月,在硅谷一群资深黑客召开的一场小型聚会上,为淡化自由软件的纯意识形态而创造了「开源」这样的一个中性名词。而召集这场聚会的就是写出了一本以技术的视角但非技术化地描述了开源现象的书籍,已经成为也必将继续成为开源世界的经典之作《大教堂与集市》的作者——Eric S. Raymond (雷蒙德)。

确实,即使放在那个年代,自由软件也是一个意识形态十分浓厚的名词。自由软件由其发起人理查德·马修·斯托曼(Richard Matthew Stallman,下文简称 RMS) 针对当时市场上专有软件提供商不提供源代码而影响了程序员修改权利的现象发起的一场呼吁软件用户自由的运动。他的思想内涵有四层:

1. 用户对于软件的使用自由

2. 用户对于软件的修改自由

3. 用户对于软件的再发布自由

4. 用户对于将软件修改后的再发布自由

RMS 对这些权利主张的逻辑是:软件控制电脑,电脑控制人类;当如果由编写专有软件的公司控制了软件,那么变相就是公司控制了人;人类就会因此失去自由。

与其说他是个黑客级的精英,不如说他是人类自由的先锋卫士。斯托曼以其超越常人的前瞻性远见,意识到当人类进入到数字化时代,软件用户自由应当是人类的一项基本权利。

我想这个问题随着技术的快速发展,人类在数字世界面临的自由问题,已经不只是代码自由的问题,更是用户对在软件中产生的内容的自由权,以及软件智能对人类自由的影响和侵害等更多更深层的问题。关于数字世界里人类是否拥有自由的权利,及如何却拥有自由的权利的思考和行动实际上却远还没有开始。

而随后的市场是残酷无情的,事实上大多数的用户只关心软件给自己带来的使用便利,而其实根本不怎么关心软件使用的自由,最多只是更多地关心软件好不好用。如果有问题,供应商是否能提供及时的维护问题,就给微软这样的软件公司只要在承诺适当维护和更新的情况下,这似乎是符合市场潮流的。但即使在那样的情况下,Stallman 仍旧以堂吉诃德般的骑士精神孤独而执着地捍卫着。

聪明绝顶如比尔盖茨举起了版权的大旗,用管控用户的软件自由防守着自身的商业利益,而聪明的斯托曼也同样高高举起了版权的大旗,舍弃了自身的利益来捍卫用户的软件自由。比尔盖茨的旗帜叫 Copyright,而另一面叫 Copyleft [i]。就像我们阴阳太极,每样事物都有其正反两面,关键看使用它的人。而在 Copyleft 上闪耀的纹章就是 GNUGPL(通用许可证)。

就像比尔盖茨给他的 DOS、Windows 标出了市场零售价格,斯托曼的 GPL 同样给自由软件标出了价格。自由软件不是没有代价的,它是有价格的。只是它的价格不是以金钱来度量,而是当你自由地享用自由软件时,你也同时应当自由地把自由软件分享给到其他人。

且不说斯托曼在软件领域内作为顶流黑客的技术共献,仅自由软件的宣言和他借用版权规则发布的 GPL,就已经成就了自由软件运动的灵魂和血液。正是 GPL,才让一个在遥远北欧的 21 岁青年在有幸听过了斯托曼的布道,随后在他一时兴起而编写的 Linux 系统里注入了这份血液,意外地却又是必然性地造就了世界软件史上一个新的传奇。

直到很多年后,当 Linus 在他的自传《Just for Fun (只是好玩)》中回忆起当年的时光。他说他只是想给自己编一个能够方便他接入到大学电脑的远程终端,他只是想把成就在圈子里炫耀一下,但一不小心做出了一个惊世之作 LINUX。在这样有些小想法的背后,实际上就是 Linus 在听取了 Stallman 的演讲后受到启发把自己软件随后按照 GPL 许可的方式发布出来。于是,一件出乎了所有人意料的事情发生,人们不仅贡献了想法和意见,进而贡献出了代码反馈回来。于是,一场代码共享的社会运动就在 GPL 协议下的轰轰烈烈地展开了。

同样很多年后,当 Linus 在自传里反思 Linux 的开发管理过程时:当初如果事先知道要做多少基础建设工作和付出多少代价才能让 Linux 成功推出,他就早就没有了任何斗志。如果事先知道了,他估计自己不管有多优秀都不够,如果知道了推出linux 有多少工作,他会有多辛苦,事情会变得多复杂,他大概就不会启动这个项目了。所以,对于创新来说,如果一切都是功利性目的去预见和计划的,那么未必都能产生真正的创新。No plan is a plan。

而对于 Linux 的成功,他是这样反省自己的:一是他懒惰,二是他善于委托他人。但这也只是他自谦的说法,如果他懒惰,最多也是建设性的懒惰;他善于委托他人,但也更是他善于总结和管理他人的代码。他甚至因此建立了第二个开源的 GIT 项目,也成就了今天的 GITHUB、GITLAB 和 Gitee。

这不只是技术协作的成功,更是一次社会协作的成功。人类历史上第一次成规模地证实了,在发散并行无序的组织形式下,可以惊人的有序。他的成功首先打破了《人月神话》中 Brooks 定律:在一个已经延期的项目中,投入更多的人力时,只会让这个项目更加延期。同时又产生了一个新的林纳斯定律(Linus’s Law)——“足够多的眼睛,就可让所有问题浮现(Given enough eyeballs, all bugs are shallow)”。这就犹如牛顿的经典力学定律之后,突然有了量子力学定律,二者共同作用于世间。

3

开源是什么

互联网的兴起让全球的工程师,可以不分地域、不分时间,甚至不分种族地为了同一个愿景,在一个平台上协作起来。这些因素的综合,在天才如 Linus 般背后,真正的基因是一种来自于根植于这个叫黑客(hacker,热衷于计算机软硬件的技术高手)全体内心的「荣誉文化」——表面上是在分享和炫技,不过促成的显性结果是「利他」。但在利他的背后,源驱动力是黑客那通过被人认同和赞誉来获得的自我满足感。人不利我,我是为何?人若利我,我又何物?利他自利,自利利他 [ii]——才是根植于开源文化的灵魂。

而以这样的道德标准去要求每个俗世的大众,显然是一个极高的标准。正是因为淡化了意识形态,「开源」一词扩大统一战线,为了适应商业化环境的自由软件的演变形式。其关注点是: 代码开源协作,许可证模式在 GPL 模式下的变形兼容。

在世俗意义的社会实践上,一个相对中庸的可以兼容更多人群在一起的生态,则是一个最具生命力的生态。在工程学上,开源的核心是是否能产生建立有效的协作,协作后的成果是否有利于大多数群体不同利益的满足;在社会学上,其存在的核心是能否同时满足不同群体的差异化诉求,如作为社区程序员的荣誉和自我满足?如社区的企业化创业群体否能够建立合理的商业模式在既定规则下发展壮大?等等不一而足。

4

开源往哪里去

当下的中国,开源作为一个貌似发展的趋势,无论在政策层面,还是在资本市场上,因为各种原因都兴起了阵阵的热潮。但在这热潮的背后,我们是否也应当清醒而理智地看到:开源本质上是中性的,开源的灵魂在于软件用户自由,开源贡献者的驱动力本质上根植于来自声望和荣誉文化下的自我价值满足。

的确,开源可以包容一定的商业化和市场化,但商业化和市场绝对包装不了开源。政策的鼓励和政府的引导可以加速开源在中国市场的发展和壮大,但开源同时有着不以意识形态而改变的内在逻辑,而所有偏离了开源的灵魂和本源去运行的开源,大概率也终将和开源南辕北辙。

2021 年,距离 RMS 创立自由软件基金会 37 周年,距离 Linus 开始 Linux 的代码的第一次发布 30 周年,距离 ESR《大教堂与集市》的第一版发布 20 周年。

但时至今日,开源在全球以及在中国,是一个历史阶段性的软件运动?还是一个人类在科技领域的一个长久必然趋势?这依然值得继续探究,并有待实践论证。不过这不妨碍我们先做这样的结论:在软件领域内,通过开源进行的技术协作和知识分享是有显而易见的优势。因为有一点是明确的,即人类的知识理应在更广泛层面上共进、共享及共用。

很多现在足以称其伟大的艺术作品,大多经过岁月的发酵和历史的沉淀后,才得以确认被大家认可。有时候是几年,有时候是几十年,而有时候是几百甚至上千年。而正如此刻静静挂在波士顿艺术馆里的《我们从哪里来?我们是谁?我们到哪里去?》 ,假设只是为了当时利益,高更可能不会也没有机会在困境中画出这样的杰作。

唯有那些根植于人类内心本性的想法和愿景,才是让人们可以置目光于生命长度之外,置世俗财富与欲望于肉身之外去寻找和探索的源动力。于是,天才成就传奇,凡人成就历史,或许开源也如是。

注:本文涉及到的部分图片来源 wallhere、unsplash。

[i] 关于 CopyLeft:源自自由软件运动,是一种利用现有著作权体制来保障用户软件自由使用权利的许可方式,可以了解为允许他人使用、传播但加了一些少规则(维基百科释义)。详细理解可查阅 https://linux.cn/article-7826-1.html。

[ii] 出处:公元前1世纪末希勒尔犹太长老希勒尔Rabbi Hillel (Pirke Avot 1:14) 在《 圣贤箴言》的名句。

- End -

关于本文作者:狄安,系 OpenTEKr 创始人,企业级软件领域的连续创业家。现从事开源和数字化领域的开源文化研究布道,及开源和商业结合的探索与实践。

顺带预告:近期 OpenTEKr 联合云赛空间共同举办《TekSpark | 当数字化转型预见开源》系列讲座,将会以行业中发生的实际案例,结合时代的趋势以及技术的发展,分享深度的观察和洞见,与各位行业爱好者共同探讨开源与数字化的相关问题,旨在帮助开源技术发展企业用户,帮助企业用户找到开源技术。

当我们在谈论multidex65535时,我们在谈论什么

本文来自网易云社区作者:郑文首先我们并不在讨论车牌号.本文尽量避免谈论重复的技术点,只探讨一下multidex提供给我们的技术启示。原理multidex技术原理可以分成两个部分:在app启动时,通过Multidex.installapi,扩展ClassLoader的d... 查看详情

当我们谈论erlangmaps时,我们谈论什么part2

   声明:本文讨论的ErlangMaps是基于17.0-rc2,时间2014-3-4.兴许Maps可能会出现语法或函数API上的有所调整,特此说明.       前情提要: [Erlang0116]当我们谈论ErlangMaps时,我们谈论什么Part1    查看详情

当我们谈论跳槽时在谈论什么

3月9号时,微信上突然收到一条消息:公司给涨了几K工资,且答应让我自己完成公司的DLP的网络驱动……终于能锻炼了。我一看,是原来在微信上向我咨询过职业选择问题的一个朋友。当时他在微信里说,他喜欢做底层开发,可... 查看详情

当我们谈论不可变基础设施时,我们在谈论什么

午夜时分,电话响起,线上告急。你从千呼万钉中醒来,睡眼朦胧,手忙脚乱。恍惚之间,终于梳理清楚发生了什么,一个陈年老应用突然停机,消息堆积,系统停摆。而你就像一个下水道小工疏... 查看详情

当我们谈论颜色时,我们在谈论什么-基础知识篇(代码片段)

...师首先想起的便是基于RGB的16进制颜色代码,这也是我们工作中最常用到的 数值表示 方式。但是当我们的谈话再深入一些,话题远不止这些:前端:「我在hackathon时做了个网站,配色怎么看都丑,你帮我... 查看详情

当谈论设备指纹时,我们到底在说什么?(转)

原标题:当谈论设备指纹时,我们到底在说什么?http://finance.ifeng.com/a/20170829/15621402_0.shtml  中新网8月29日电 “设备”和“指纹”作为独立名词存在时,其具有非常典型的硬件属性;一旦将他们结合起来变成&ldq... 查看详情

当我们在谈论技术时,技术的本质和价值究竟是什么?

过去几年,硅谷最喜欢的口号悄悄地从“不创新,毋宁死!”换成了“不改良,毋宁死!”。湾区文化中,改良意味着全套的技术解决方案,它兜售着一种人类理想主义,从而让这里的极客们更有抱负、更愿意相信一己之力可以... 查看详情

当我们谈论 OnInit 时,Angular 2+ 中组件初始化的确切含义是啥?

】当我们谈论OnInit时,Angular2+中组件初始化的确切含义是啥?【英文标题】:Whatistheexactmeaningofcomponentinitializationinangular2+,whenwetalkaboutOnInit?当我们谈论OnInit时,Angular2+中组件初始化的确切含义是什么?【发布时间】:2018-11-1117:58:... 查看详情

当我们在谈论kmeans

...gs.com/data-miner/(暂时公式显示有问题)其他:建设中…当我们在谈论kmeans:总结概述  通过前面阅读K-means相关论文,大致能梳理出K-means算法发展过程中的一些轨迹。由于本人所阅读的仅仅是一部分,因此还会有更多的方面,... 查看详情

当我们在谈论kmeans

...gs.com/data-miner/(暂时公式显示有问题)其他:建设中…当我们在谈论kmeans:论文概述(2)算法历程2001年  在Estlick,Mike,etal."Algorithmictransformationsintheimple 查看详情

学习算法思想修炼编程内功

第1章当我们谈论算法的时候,我们在谈论什么?无论是BAT,还是FLAG,但凡有点儿水平的技术公司,面试都要面算法。为什么算法这么重要?在工作中,真的会使用算法吗?学了算法到底有什么用?当我们谈论算法的时候,我们... 查看详情

话题讨论&征文--谈论大数据时我们在谈什么获奖名单发布

  从社会发展趋势的角度,非常明显大数据会是眼下肉眼可及的视野范围里能看到的最大趋势之中的一个。从传统IT业到互联网、互联网到移动互联网,从以智能手机和Pad为主要终端载体的移动互联网到可穿戴设备的... 查看详情

程序猿的内功修炼学好算法与数据结构

第1章当我们谈论算法的时候,我们在谈论什么?无论是BAT,还是FLAG,但凡有点儿水平的技术公司,面试都要面算法。为什么算法这么重要?在工作中,真的会使用算法吗?学了算法到底有什么用?当我们谈论算法的时候,我们... 查看详情

当我们谈论瀑布和敏捷的时候,究竟在说什么?-人人都是项目经理系列(全13篇)

PMI全称ProjectManagementInstitute,中文名叫《项目管理协会》。成立于1969年,是全球领先的项目管理行业的倡导者,它创造性地制定了行业标准,由PMI组织编写的《项目管理知识体系指南》(PMBoK)已经成为项... 查看详情

当讨论面向对象的时候,我们到底谈论什么?

什么是面向对象编程?  面向对象编程是一种编程范式或编程风格,它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计的基本单元.什么是面向对象编程语言?  面向对象编程语言是支持... 查看详情

谈论代码生成,我们在谈什么(代码片段)

对于代码生成技术,我们希望他能帮我们解决什么问题?1.一些逻辑简单的机械式代码,比如大量的get/set(getter/setter)代码2.一些稍微复杂的套路式的代码,比如符合某个框架标准的数据库的增删改查代码3.同时我们希望生成的代... 查看详情

在谈论 AngularJS 时,视图到底是啥?

】在谈论AngularJS时,视图到底是啥?【英文标题】:WhentalkingaboutAngularJS,whatexactlyistheview?在谈论AngularJS时,视图到底是什么?【发布时间】:2015-10-2909:23:18【问题描述】:当谈到AngularJS时,视图到底是什么?还是可以不止一件事... 查看详情

什么是“SQL 提示”?

...”,而这在ORM框架中可能是不可能的。通常是这样的:“我们尝试过Hibernate。一开始它看起来很有希望,但是当我们让它在我们非常复杂的生产 查看详情