Free Software vs. Open Source
首先推荐一部电视剧
很早以前看过一部港剧《龙兄鼠弟》,是万梓良、郑则仕和张卫健演的。其中万梓良饰演的雷文凤,在最后写了一本书,叫做《黑白灰》。大意是:这个世界,虽然存在黑白两色,绝大多数人,却都是灰色的。而他,却一定要坚持做一个纯白色的人。甚至在他看来,灰色的人,较之黑色的人,更加罪恶。
最近刚刚读完了另外一本书《若为自由故》,则是一本Richard Stallman的传记。在这本书里,红帽公司总裁罗伯特·杨(Robert Young)总结理查德看似矛盾的政治行为时,说道:“我崇拜也尊敬理查德和他所做的一切。我对他唯一的批评就是,有些时候,他对待朋友甚至比对待敌人还要无情。”
在我看来,也许发起开源运动的那群人,大多数自认为是RMS的朋友,而对于RMS而言,他们只是一群放弃了原则而站在灰色地带的人罢了。
说实话,在自由软件与开源之间,我究竟应该持何种立场?这是一个,我一直以来,都不愿意深想的问题,实在是太难了。只是这回读了一遍RMS亲笔签名的个人传记,又了解到了很多当事人的实际言论,总觉得应该督促自己,思考出一个结论出来。
两者的分歧,首先是哲学上的:理想主义 vs. 实用主义
在RMS看来,自由是天赋人权,可以说:因为自由本身值得追求,而RMS恰好又是个软件天才,所以他才会致力于自由软件。
而在开源运动看来:吸引更多的人参与自由软件的开发,然后实实在在的拿出优秀的开源软件来,才是真正有价值的事情。
自由软件的目的,是更多的自由,而开源软件的目的,是更好的软件。
GPL是一种神奇的创造
如果RMS只是一位致力于追求软件自由的斗士,也许不会有任何人理睬他。但是他写出了Emacs、GCC这样的神级软件。以至于由此建立起了几乎无人能及的社区影响力。
因为他写的软件实在太牛,所以无论他以什么样的License来发表自己的软件,都会引发全社区的关注。
然后,GPL这种诡异的授权模式,才会有人愿意遵循。甚至,应用作为自己的开源License。
或者换句话说:RMS挂了Emacs的羊头,卖了GPL的狗肉。但是,Emacs这个羊头实在太好,买了GPL这种狗肉的人,居然也就认可了。
《大教堂与集市》对于RMS是一个重大打击
因为《大教堂与集市》一书,对于Linux成功之道的总结与宣传,使得Linus被人们提升到了世界上最知名黑客的行列。
说到底,在黑客这个圈子里,大家还是更注重实力,而非理念。当有人以完全不同的方式,创造出完全不逊于Emacs、GCC这样的开源软件时,RMS/自由软件/大教堂所代表的「道路」,就不再是唯一的选择了。
尤其是当Linus站在了开源的大旗下,更多的公司则出现在了Linux的周围。集市的胜利,不仅仅是开源相对于闭源的胜利,也是Linus相对于RMS的胜利。
在之后的世界里,虽然开源的代码越来越多,但是自由却越来越少被人提及了。
不完美的系统会激怒黑客
《公正——该如何做是好》一书中,有一个经典的伦理学命题:假设铁轨上有一辆失控的火车,在岔路的一边是一个人,而另一边则是五个人。你是一个扳道工,你会选择让火车开向一个人,还是五个人?
我曾经问过我儿子这个问题,他的回答非常有趣:「如果是五个大人,与一个大人」,那就撞一个大人。「如果是五个大人,与一个小孩」,那就撞五个大人。「如果是五个男人,与一个女人」,那就撞五个男人。「如果是五个男人,与一个胖女人」,那就撞那个胖女人。。。
这其实反应了一个事实:想要通过权衡利弊,来做出最有利的选择,可能会是非常没有原则的事情。即使是一个成年人,也未必能做得有多好。
对于一个像RMS这样的黑客来说:他们会被这种问题所激怒,进而会拒绝回答问题,并想尽一切办法,要hack掉这个该死的列车与轨道系统。
在本书的第十二章《开往黑客地狱的短暂旅途》,就讲了一个令RMS暴怒的故事,在书中,作者写到:「“不完美的系统会激怒黑客。”史蒂芬·李维说过这样的话,这是我决定与斯托曼同坐一辆车前应该听取的另一个忠告,“这是黑客们通常不喜欢开车的原因之一:这是一个充满不确定性的程序,交通信号灯总是随机的变化,还有横七竖八的单行道,导致交通经常堵塞。这实在是太不必要了,只要让黑客们重新安排一下信号灯,打开交通灯控制盒,重新设计整个系统。”」
是的,对于真正的黑客来说:适应这个不完美的世界——取舍、权衡、妥协,是别人的事情。而黑客,就一定想要改造它!
我的结论
RMS这样的人,就像是在遥远的天边,在夕阳即将落下之时,努力为我们撑起天际线上那最后一点光明的人。
我没有资格自称为黑客。哪怕是改变世界的念头,我也常常是一闪而过。但是,这并不妨碍我始终对RMS,报以最高的崇敬!
至于Open Source,那至少是个很不坏的东西吧!
Free Software vs. Open Source相关推荐
- Free software是什么?
谁定义的:written by Richard Stallman andpublished by Free Software Foundation (FSF): " Free softwar ...
- 74 Open Source VoIP Apps Resources 【转】
有一个文章中提到据说不错,但是没找到翻译的,先记录在此. When a body of independent auditors and expertsrecommended that the Sta ...
- 【北邮国院大三下】Software Engineering 软件工程 Week4
北邮国院大三电商在读,随课程进行整理知识点.仅整理PPT中相对重要的知识点,内容驳杂并不做期末突击复习用.个人认为相对不重要的细小的知识点不列在其中.如有错误请指出.转载请注明出处,祝您学习愉快. 编 ...
- GCC 在 Linux、Windows 系统安装
1. GCC 简介 谈到 GCC,就不得不提 GNU 计划.GNU 全称 GNU's Not UNIX,又被称为"革奴计划",由理查德·斯托曼于 1983 年发起.GNU 计划的最 ...
- VS Code搭建C/C++开发环境超详细教程
目录 一.下载配置MinGW 1. 下载解压 MinGW 2. 配置环境变量 3. 测试是否配置成功 二.安装 C/C++ 插件 三.第一个程序 四.相关插件推荐 1. Visual Studio I ...
- 通过修改软链接升高 gcc 版本、降低 gcc 版本
1. 查看 gcc 版本 wohu@ubuntu16:/etc/apt$ gcc --version gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 Copyright ...
- Hadoop 全分布模式 平台搭建
现将博客搬家至CSDN,博主改去CSDN玩玩~ 传送门:http://blog.csdn.net/sinat_28177969/article/details/54138163 Ps:主要答疑区在本帖 ...
- linux cuda 如何编译器,linux – Cuda编译器不使用GCC 4.5
我是Cuda的新手,我正在尝试编译这个简单的test_1.cu文件: #include __global__ void kernel(void) { } int main (void) { kerne ...
- Python基础01-Python环境搭建与HelloWorld
目录 从今天开始学习Python Python环境搭建 安装gcc Python源码包安装 开始Python第一个代码HelloWorld! 从今天开始学习Python 为啥选择Python,可能是跟 ...
最新文章
- postman简单教程,如何在请求中引用上次请求返回的值
- [Elasticsearch] 邻近匹配 (二) - 多值字段,邻近程度与相关度
- python django bootstrap_导入 201901
- (二十)深入浅出TCPIP之epoll的一些思考
- android 颜色反转 api,来自Android camera2 API的图像数据在Galaxy S5上翻转和压缩
- 阿里云 mysql 表锁死_解决阿里云数据库MySQL实例空间满自动锁问题
- python可以管理操作系统吗_python之路——操作系统的发展史
- python枚举类型_Python 的枚举类型
- 类对象等式括号的意义
- ios实现读写锁,AFN的实现
- 【VREP】四舵轮(or n舵轮)自旋与平移融合运动解算
- 报错:[Banner] The number of titles and images is different
- C# winform跨线程操作控件
- Java web speach api_HTML5 Web Speech API,让网站更有趣
- Maya2018基础(一)通用设置与建模基础与常用快捷键
- 清华大学企业资本运营总裁高级研修班
- android alarmmanager后台,Android AlarmManager实现定时循环后台任务
- WordPress 插件开发教程:插件加载顺序、创建插件、add_action与do_action
- win7-64位操作系统下载
- XML File format error
热门文章
- 无法重新启动计算机进入恢复环境,Windows10 Windows RE(恢复环境)启用不成功(问题及解决方法)...
- Mnist手写数字集的识别和可视化
- 淘宝天猫商家运营,无法参加淘宝大促期间,如何保证店铺流量
- 在迅捷CAD编辑器中如何画点划线?
- 未能链接ea服务器,《双人成行》无法连接到EA服务器怎么办 无法连接到EA服务器解决办法...
- 自相关系数 ACF与偏自相关系数PACF,拖尾和截尾
- 如何从零开始做好自媒体(分类篇)
- Android音视频编辑库,Android音视频处理.pdf
- 我为什么写《DDD浮夸,Eric Evans开了个坏头》
- vue打包文件过大、Vue打包压缩