“自私”的Linux
| 导读 | “如果当时我真的知道从头建立一个操作系统的难度,肯定是不会有勇气去做的。”1991年8月25日,随着林纳斯·托瓦兹(Linus Torvalds)这句“天真”的描述,Linux系统正式与世人见面了。25岁的Linux,它的开源却源自“自私”。然而自私的他,却被追崇了25年,还被“强硬”的绑架到了别的设备上,甚又可恶的将其送入了太空! |

目前Linux官方的吉祥物 Tux
说是“天真”,并非贬低,只是从现在来看,当年的林纳斯·托瓦兹真的太过于天真的低估了这个自己课余做出的东西。
因为Linux在随后的发展中逐步壮大,所涉范围小到掌中设备,大到探索宇宙,远非超他当年所想象的广泛。
如果爱范儿说Linux是为了“自私”目的诞生的产物,想必很多人都会先嗤之以鼻。但其实Linux诞生之初,确实只是为了满足个人需求。
那一年的林纳斯·托瓦兹只有22岁,在芬兰赫尔辛基大学学习电脑。在学习中,他为了方便访问大学内的Unix服务器,针对自己手中设备随手写了一个程序,但直到程序写的差不多的时候,林纳斯才发现他写了一个操作系统内核。在后来IEEE Spectrum的一次专访中林纳斯坦言当年的自己真的是初生牛犊不怕虎:
如果当时我真的知道从头建立一个操作系统的难度,肯定是不会有勇气去做的。

Linux之父林纳斯·托瓦兹
这种年少无知也让我从一开始就没有按照前人的老路编程编写内核。但是,爱范儿想说的“自私目的”并不是指林纳斯为自己需要开发这事,而是指Linux的开源。
所周知的Linux是一个开源系统(虽然并非所有Linux发行版都开源),而Linux的成功很大程度上是依靠开源社区为其提供的源源不断的代码支持,使其从当年一个人的“小项目”日益壮大起来。而之所以Linux能够获得这些资源,其实全依靠Linux采用的授权协议——GPL。
GPL全称GNU通用公共许可协议(GNU General Public License),自由软件许可协议条款之一,该协议最大的特点(也是最大的非议)就是,任何使用GPL程序的演绎作品也要在GPL之下。简单来说就是,任何使用了GPL程序代码的程序都需要以GPL授权来开放代码,一份代码就有可能引发无数的程序成为GPL,并且继续扩散。
因为这一特性GPL获得了“传染病”的评价,并且有不少公司对这一协议表示反感。比如微软前任CEO鲍尔默,他曾在2001年公开评价使用GPL的Linux为“癌症”,其根本原因就是GPL协议。之所以鲍尔默这样评价,是因为在GPL协议下发布的Linux内核,任何使用涉及GPL协议代码的再开发项目,都需要将代码重新以GPL返回给开源社区。
而除了微软之外,很多企业和公司,尤其是硬件厂商也都对Linux这种GPL十分头疼,因为涉及到开源驱动,出于商业保密等原因,在提供支持的时候十分小心,甚至消极应对。比如Nvidia就一直不对Linux提供最新技术的驱动支持,并直接表示过不会像Linux提供和其他OS等级的支持,因为这会使得公司一直保密的技术信息暴露在所有人面前。而对于这一现象,Linux之父林纳斯在一次芬兰的采访中直接以“国际手势”回应,并表示Nvidia是他这辈子工作生涯中处理过的“最糟糕的故障”。

对于Linux开源所带来的非议,林纳斯可能是早有预料的。在一次和BBC的采访中林纳斯谈及,他所认为的开源真正的特色是让人人能“自私”。开源不是虚伪的“让我们围着篝火唱歌,使这个世界变得更美好”。如果每人都能为他们“自私”的原因而作出贡献,开源才能成功。
林纳斯以自己来举例,他热爱编程并希望学习如何控制硬件,而这就是他的“自私”目的。这里的“自私”并非是指利益回报,并且很多人都有这种想法,担心自己的努力白白被他人利用。所以林纳斯使用GPLv2许可证解决了这一问题,这种类似“一报还一报”的模式,在享受别人成果的同时,也承诺回报成果。
林纳斯认为GPL是一种公平的许可证。连接未来的路上前行,Linux能够发展到今天的程度绝对是当年林纳斯没有想到的。在手机中,在路由器里,在服务器云端,在股票交易大厅,甚至连太空的卫星都有Linux的身影。Linux在以不同的形式应用在不同行业,不同领域。

而在未来,Linux除了应用到更多的领域,还将更强大、专业。根据Linux基金会公布的数据,越来越多的企业开发者在贡献代码。根据最新的数据,志愿者贡献的代码比例低至7.7%,余下的代码都是由企业开发者贡献的,其中Intel以12.9%占据榜单第一。
然而当有人问林纳斯Linux未来会如何时,林纳斯似乎并不想考虑太过遥远的事情。林纳斯表示思考未来这事让那群空想家去考虑好了,他只想脚踏实地的当一个程序员,尝试做到“可以做到的最好的效果”。
原文来自:http://***/linux-25-selfish.html
添加微信公众号linuxprobe,掌握最新IT资讯动态,免费领取Linux课程以及专业的RHCE考前答疑服务。
“自私”的Linux的更多相关文章
- Linux如此“自私”?
Linux如此“自私”? “如果当时我真的知道从头建立一个操作系统的难度,肯定是不会有勇气去做的.”1991年8月25日,随着林纳斯·托瓦兹(Linus Torvalds)这句“天真”的描述,Linu ...
- Linux 驱动开发
linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...
- linux命令行netstat总结
1.所谓的监听就是某个服务程序会一直常驻在内存中,所以该程序启动的Port就会一直存在. 2.在小于1023的端口,都是需要以root身份才能够启动的. 3.大于1024以上的Port主要是作为cli ...
- Linux 线程调度策略与线程优先级
Linux内核的三种调度策略 SCHED_OTHER 分时调度策略. 它是默认的线程分时调度策略,所有的线程的优先级别都是0,线程的调度是通过分时来完成的.简单地说,如果系统使用这种调度策略,程序将无 ...
- 《鸟哥的Linux私房菜》读书笔记2
1. 压缩后缀与压缩程序: *.Z compress 程序压缩的档案; *.bz2 bzip2 程序压缩的档案; *.gz gzip 程序压缩的档案; *.tar tar 程序打包的数据,并没有压缩过 ...
- Linux系统编程之进程概念
注:本文部分图片来源于网络,如有侵权,请告知删除 1. 什么是进程? 在了解进程概念之前,我们需要先知道程序的概念. 程序,是指编译好的二进制文件,这些文件在磁盘上,并不占用系统资源. 进程,指的是一 ...
- Linux 内核概述 - Linux Kernel
Linux 内核学习笔记整理. Unix unix 已有40历史,但计算机科学家仍认为其是现存操作系统中最大和最优秀的系统,它已成为一种传奇的存在,历经时间的考验却依然声名不坠. 1973 年,在用 ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- NodeJs在Linux下使用的各种问题
环境:ubuntu16.04 ubuntu中安装NodeJs 通过apt-get命令安装后发现只能使用nodejs,而没有node命令 如果想避免这种情况请看下面连接的这种安装方式: 拓展见:Linu ...
随机推荐
- HDU 3038 How Many Answers Are Wrong(带权并查集)
太坑人了啊,读入数据a,b,s的时候,我刚开始s用的%lld,给我WA. 实在找不到错误啊,后来不知怎么地突然有个想法,改成%I64d,竟然AC了 思路:我建立一个sum数组,设i的父亲为fa,sum ...
- SpringMVC学习总结(五)——SpringMVC文件上传例子
这是用的是SpringMVC-3.1.1.commons-fileupload-1.2.2和io-2.0.1 首先是web.xml <?xml version="1.0" e ...
- linux软中断与硬中断实现原理概述
linux软中断与硬中断实现原理概述. 1.软中断通过open_softirq注册一个软中断处理函数,即在软中断向量表softirq_vec数组中添加新的软中断处理action函数. 2.调用rais ...
- Photoshop:热气球的制作方法
大致流程: 1.做等宽色块,加内发光 2.变形->膨化,弯曲20% 3.加高光和投影层,增加立体感 4.制作多列,合并后,滤镜->扭曲->球面化100%2次(注意放在在正方形画布中间 ...
- Windows系统上如何使用SSH
Windows系统上如何使用SSH 传统的网络服务程序如FTP.Telnet等,在网络上一般使用明文传送数据.用户账号和口令信息,容易受到中间人的攻击.用户利用SSH协议后能有效防止DNS及IP欺骗, ...
- Maven是如何工作的
Maven的依赖机制能够自动下载依赖文件,并且自动维护.更新版本. 让我们通过一个案例来了解Maven是如何工作的,假如你的系统想用log4j作为日志输出工具,让我们看一下传统做法和Maven做法: ...
- POJ 2114 Boatherds【Tree,点分治】
求一棵树上是否存在路径长度为K的点对. POJ 1714求得是路径权值<=K的路径条数,这题只需要更改一下统计路径条数的函数即可,如果最终的路径条数大于零,则说明存在这样的路径. 刚开始我以为只 ...
- C# 常用控件及单击事件
1.窗体 1.常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体. (2)WindowState属性: 用来获取或设置窗体的窗口状态. 取值有三种: No ...
- 1888. Pilot Work Experience(dfs+bfs)
1888 dfs找出连通块 块内构造数据 bfs找出最值 如果有多个连通块 那max就为49 可以起点不同 这样记得修改后面的数据 写的老长了.. #include <iostream> ...
- sdut 2819 比赛排名(边表 拓扑排序)
题目:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2819 #include <iost ...