首先推荐一部电视剧

很早以前看过一部港剧《龙兄鼠弟》,是万梓良、郑则仕和张卫健演的。其中万梓良饰演的雷文凤,在最后写了一本书,叫做《黑白灰》。大意是:这个世界,虽然存在黑白两色,绝大多数人,却都是灰色的。而他,却一定要坚持做一个纯白色的人。甚至在他看来,灰色的人,较之黑色的人,更加罪恶。

最近刚刚读完了另外一本书《若为自由故》,则是一本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相关推荐

  1. Free software是什么?

    谁定义的:written by Richard Stallman andpublished by Free Software Foundation (FSF): " Free softwar ...

  2. 74 Open Source VoIP Apps Resources 【转】

    有一个文章中提到据说不错,但是没找到翻译的,先记录在此. When a body of independent auditors and expertsrecommended that the Sta ...

  3. 【北邮国院大三下】Software Engineering 软件工程 Week4

    北邮国院大三电商在读,随课程进行整理知识点.仅整理PPT中相对重要的知识点,内容驳杂并不做期末突击复习用.个人认为相对不重要的细小的知识点不列在其中.如有错误请指出.转载请注明出处,祝您学习愉快. 编 ...

  4. GCC 在 Linux、Windows 系统安装

    1. GCC 简介 谈到 GCC,就不得不提 GNU 计划.GNU 全称 GNU's Not UNIX,又被称为"革奴计划",由理查德·斯托曼于 1983 年发起.GNU 计划的最 ...

  5. VS Code搭建C/C++开发环境超详细教程

    目录 一.下载配置MinGW 1. 下载解压 MinGW 2. 配置环境变量 3. 测试是否配置成功 二.安装 C/C++ 插件 三.第一个程序 四.相关插件推荐 1. Visual Studio I ...

  6. 通过修改软链接升高 gcc 版本、降低 gcc 版本

    1. 查看 gcc 版本 wohu@ubuntu16:/etc/apt$ gcc --version gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 Copyright ...

  7. Hadoop 全分布模式 平台搭建

    现将博客搬家至CSDN,博主改去CSDN玩玩~ 传送门:http://blog.csdn.net/sinat_28177969/article/details/54138163 Ps:主要答疑区在本帖 ...

  8. linux cuda 如何编译器,linux – Cuda编译器不使用GCC 4.5

    我是Cuda的新手,我正在尝试编译这个简单的test_1.cu文件: #include __global__ void kernel(void) { } int main (void) { kerne ...

  9. Python基础01-Python环境搭建与HelloWorld

    目录 从今天开始学习Python Python环境搭建 安装gcc Python源码包安装 开始Python第一个代码HelloWorld! 从今天开始学习Python 为啥选择Python,可能是跟 ...

最新文章

  1. postman简单教程,如何在请求中引用上次请求返回的值
  2. [Elasticsearch] 邻近匹配 (二) - 多值字段,邻近程度与相关度
  3. python django bootstrap_导入 201901
  4. (二十)深入浅出TCPIP之epoll的一些思考
  5. android 颜色反转 api,来自Android camera2 API的图像数据在Galaxy S5上翻转和压缩
  6. 阿里云 mysql 表锁死_解决阿里云数据库MySQL实例空间满自动锁问题
  7. python可以管理操作系统吗_python之路——操作系统的发展史
  8. python枚举类型_Python 的枚举类型
  9. 类对象等式括号的意义
  10. ios实现读写锁,AFN的实现
  11. 【VREP】四舵轮(or n舵轮)自旋与平移融合运动解算
  12. 报错:[Banner] The number of titles and images is different
  13. C# winform跨线程操作控件
  14. Java web speach api_HTML5 Web Speech API,让网站更有趣
  15. Maya2018基础(一)通用设置与建模基础与常用快捷键
  16. 清华大学企业资本运营总裁高级研修班
  17. android alarmmanager后台,Android AlarmManager实现定时循环后台任务
  18. WordPress 插件开发教程:插件加载顺序、创建插件、add_action与do_action
  19. win7-64位操作系统下载
  20. XML File format error

热门文章

  1. 无法重新启动计算机进入恢复环境,Windows10 Windows RE(恢复环境)启用不成功(问题及解决方法)...
  2. Mnist手写数字集的识别和可视化
  3. 淘宝天猫商家运营,无法参加淘宝大促期间,如何保证店铺流量
  4. 在迅捷CAD编辑器中如何画点划线?
  5. 未能链接ea服务器,《双人成行》无法连接到EA服务器怎么办 无法连接到EA服务器解决办法...
  6. 自相关系数 ACF与偏自相关系数PACF,拖尾和截尾
  7. 如何从零开始做好自媒体(分类篇)
  8. Android音视频编辑库,Android音视频处理.pdf
  9. 我为什么写《DDD浮夸,Eric Evans开了个坏头》
  10. vue打包文件过大、Vue打包压缩