黑客们的故事(连载六):IT世界里的理想主义者
一头疏于梳理的长发和一把肆意生长的大胡子,往往可能是人们对于理查德马修斯托曼的第一印象。这位马上就要过60岁生日的自由软件基金会主席不用手机、不买房、没有汽车,看起来像是个流浪汉,但是却是美国工程院院士、麦克阿瑟奖得主,以及五所大学的荣誉博士和两所大学的荣誉教授。同时,他也是世界上最著名的黑客之一。
站在比尔盖茨的对立面
斯托曼和比尔盖茨有些相似之处。他们年纪差不多,都在大城市出生和长大,都曾在哈佛大学就读,都是程序员;但是,他们的主张却截然不同。比尔盖茨致力于消除盗版、保护版权;而斯托曼则主张源码共享、自由复制。比尔盖茨和他创立的微软公司让软件行业一度成为年轻人就业的首选,斯托曼的自由软件运动则催生了Linux和难以计数的自由软件,让全球十亿的计算机用户有了更多选择——脱离软件公司的控制,而且免费。
斯托曼对计算机的兴趣是在高中萌生的。他在纽约曼哈顿的IBM科学中心展现了对计算机技术的兴趣与天赋,并且由此在暑假中得到写一个数值分析程序的机会。1971年,十八岁的斯托曼进入哈佛大学,同年就受聘于刚刚成立不久的麻省理工学院人工智能实验室,一干就是十几年。就是在这里,他开发了被称为“神的编辑器”的Emacs。
在这十几年中,斯托曼也成为了计算机历史的一部分。他目睹着计算机从庞然大物变成桌上必备品的过程,也经历了软件行业迅猛发展的浪潮。成千上万聪明的年轻人投身到这个行业中,商业软件公司纷纷建立,施乐、苹果和软件这样的公司成为新的偶像,写软件、卖出去、挣大钱,正成为这个行业的新规则。
但是斯托曼并不喜欢这样。他一直认为,软件这种智力产物应该是可以免费获取和免费分发的。软件是由黑客的兴趣凝成的结晶,以金钱为代价阻碍它们的流通,将会禁锢思想和抑制创造。他认为人们有发自内心的创造渴望,而限制这种渴望,本身就是犯罪。
最后一个黑客
1983年,比尔盖茨善于软件版权的论述已经深入人心, 人们已经接受把软件作为商品看待的想法。麻省理工学院人工智能实验室的几句程序员离职创办了一家公司,走上了模仿微软公司的道路。也就是从那时开始,斯托曼决心发起自由软件运动。
他认为,软件的商业化不仅会阻碍计算机文化的发展,还会让人们丧失自由。当人们受制于某个不发布源代码的商业软件,也就同时受制于软件公司。用户无法自由地改变软件来适应看书的工作和生活,也无法确定软件中是否有让自己受到伤害的东西。
虽然世界上大多数人并不是程序员,无法自由修改软件的源代码来添加自己想要的功能,但是这并不是重要,对于软件源代码的诉求是道德上的,软件公司本来有义务向用户提供源代码——用户自己是否能修改并不重要。
1984年1月,自由软件基金会成立,斯托曼差不多是一个人和整个行业对抗。当时他只能睡在办公室里,没有钱,民不知道接下来会发生什么。他就像唯一的战士,面对迎面杀来的千军万马,手里的武器却只是一根牙签。
第二年,自由软件基金会发布了“自由软件通用许可证”,任何使用这种许可证发布的软件,都允许其他人查看、修改和传播软件的源代码,并且在传播软件的时候,也要同时发布源代码。斯托曼说:“我试着从总体上改变人们接触知识和信息的方式。我认为个人独占知识、控制人们使用知识,或者企图阻止人们共享知识,都是一种蓄意破坏行为。这种行为只有利于这样做的少数人,而代价却是让全社会都变得更贫困。”
作为一个黑客,斯托曼认为真正的黑客们本来就不是为了钱才工作。好奇心、乐趣和成就感是他们的驱动力,如果获得额外收入的话,那可算是某种意外。事实证明,真正的黑客还为数不少。自由软件运动开始发展壮大,应用软件、编译器直到操作系统都有了能替代商业软件的自由软件,它们的使用者也越来越多,从个人到企业和组织,都在从自由软件中受益。
改变了这一切的斯托曼,已经成了黑客中的传奇。他的名字有了专用的缩写rms,他那标示性的长发和胡须也成为黑客精神的象征——虽然热爱自由的黑客们不会把它的头像像切格瓦拉的头像那样印在T恤上。
黑客们的故事(连载六):IT世界里的理想主义者的更多相关文章
- Cocos2d-js官方完整项目教程翻译:六、添加Chipmunk物理引擎在我们的游戏世界里
添加Chipmunk物理引擎在我们的游戏世界里 一.简介 cocos2d JS能给我们力量来创造令人印象深刻的游戏世界.但缺乏某种现实. ...
- Java练习 SDUT-2737_小鑫の日常系列故事(六)——奇遇记
小鑫の日常系列故事(六)--奇遇记 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 今天,小鑫在山上玩的时候,意外被推下 ...
- Android NFC开发(二)——Android世界里的NFC所具备的条件以及使用方法
Android NFC开发(二)--Android世界里的NFC所具备的条件以及使用方法 NFC的应用比较广泛,而且知识面也是比较广的,所以就多啰嗦了几句,我还还是得跟着官方文档:http://dev ...
- VRChat简易教程3-往世界里导入模型和VRC接口初探
一.准备工作 按前面的教程新建一个project,导入sdk并创建地面(Terrain)和VRCWorld. 本教程中我们学习如何导入别人做好的模型并使用VRC提供的接口来实现物品的抓取,模型素材(小 ...
- python世界里的局部变量和全局变量: 潜规则太重要了!!!
python世界里的局部变量和全局变量: 潜规则太重要了!!! 先上代码: def fun(): def test_global(): ''' 内层和外层都需要声明为global, 才能彻底打通变量名 ...
- 原来Java世界里也有这么多精彩的故事,学Java真有趣!
大千世界,无所不有.这世上不光有人类世界,还有咱们的java世界.今天就由我这个实习导游带领你们了解了解咱们的java世界奇妙之处. 有一种暖男叫catch,有一种真爱叫try---catch,世 ...
- 【转载】Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载六)Linux的网络配置
本篇是Linux小白最佳实践第6篇,目的就是让白菜们了解Linux网络是如何配置的.Linux系统在服务器市场占有很大的份额,尤其在互连网时代,要使用计算机就离不开网络. 想每天能听到小妞的语音播报, ...
- 百度云世界里的“七种武器”:PCS、BAE、Site App、ScreenX等
如果说去年百度世界的关键词是“百度新首页”的话,那么今年在研发者人群中,对百度世界最深的印象就是“七种武器”,即在云的世界里,百度为开发者所提供的包括个人云存储.LBS.移动云测试中心等在内的七种工具 ...
- 面向对象世界里转转七(Liskov替换原则)
前言:Liskov替换原则是关于继承机制的应用原则,是实现开放封闭原则的具体规范,违反了Liskov原则必然意味着违反了开放封闭原则.因此,有必要对面向对象的继承机制及其基本原则做以探索,来进一步了解 ...
随机推荐
- ubuntu 12.04 设置代理
一. Ubuntu 12.04 apt-get 代理设置 由于公司通过代理上网,firefox的代理设置很容易就搞定了,但是通过apt-get安装软件还是不行,于是,查阅了很多资料,最多的方法就是网上 ...
- 博客后台迁移至i.cnblogs.com及小经验分享
大家好!我们已经将博客后台从原来的 www.cnblogs.com/博客地址名/admin/ 迁移至独立的二级域名 i.cnblogs.com.如果您发现任何问题,麻烦您立即向我们反馈. 虽然这次迁移 ...
- 通过AngularJS实现图片上传及缩略图展示
从项目中截出的代码 HTML部分: <section> <img src="image/user-tuijian/tuijian_banner.png" /> ...
- SQLite事务管理
事务管理对数据库一致性是至关重要的.数据库实现ACID属性以确保一致性.SQLite依赖于本地文件锁和页日志来实现ACID属性.SQLite只支持扁平事务,并不支持事务嵌套和保存点能力. 1.1 事务 ...
- MySQL大数据分页的优化思路和索引延迟关联
之前上次在部门的分享会上,听了关于MySQL大数据的分页,即怎样使用limit offset,N来进行大数据的分页,现在做一个记录: 首先我们知道,limit offset,N的时候,MySQL的查询 ...
- object-assign合并对象
1. Object.assign() 对于合并对象操作, ECMAScript 6 中提供了一个函数: Object.assign(target, source); 这个方法会将所有可枚举 [1] 的 ...
- jQuery自动补全
方法一: jquery-autocomplete配置: <script type="text/javascript" src="/js/jquery-1.4.2.m ...
- spi controller
http://blog.csdn.net/droidphone/article/details/24353293 http://www.china-cpu.com/supports/article/0 ...
- mysql.sock的作用
1.在编译安装mysql的时候,会将mysql的配置文件复制到/etc/my.conf中: [root@Web-lnmp02 mysql]# cp support-files/my-small.cnf ...
- Intellij_idea-14官方快捷键中文版
编辑类: Ctrl+Space 基本代码实例(类.方法.变量) Ctrl + Shift + Space 智能代码实例(根据需要的类型过滤方法和变量) Ctrl + Shift + Enter 完整的 ...