“自私”的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 ...
随机推荐
- Sudoku Solver
Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by th ...
- Eclipse通过集成svn实现版本控制
Eclipse通过集成svn即安装subclipse插件 前面已经讲解过了,这就不说了,作为测试人员继续总结下Eclipse通过集成svn实现的版本控制 首次从SVN代码库中导出代码文件: 1.右键工 ...
- 关于dynamic_cast
http://www.groad.net/bbs/read.php?tid-5476.html dynamic_cast 进行运行时强制转换.如果在执行时转换非法,则会转换失败.dynamic_cas ...
- 李洪强iOS开发之让您的Xcode键字如飞
手指在键盘上飞速跳跃,终端上的代码也随着飞舞,是的这确实很酷.优秀的程序员总是这么一群人,他们不拘于现状,不固步自封,他们喜欢新奇的事,他们把自己发挥到极致. 指法攻略 放下您钟爱的鼠标吧,在前行之中 ...
- CF 353C Find Maximum #205 (Div. 2)
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; ]; ] ...
- 【mysql的编程专题①】流程控制与其他语法
流程控制与内置函数,一般用在select的field字段上,或者用在函数,存储过程,触发器中; 如果用在select上就会随着query出来的row来隐式迭代; 注释与语句结束符 语句结束符 默认有两 ...
- 汇编debug 截图2
- Photoshop:制作方块背景
1.填充背景色 2.滤镜->杂色->添加杂色 3.滤镜->像素化->马赛克 4.添加横线,明度-10 最终效果 附: 利用:查找边缘.最小值,还可以做这样的效果
- 虚函数(virtual)为啥不能是static
静态成员函数,可以不通过对象来调用,即没有隐藏的this指针. virtual函数一定要通过对象来调用,即有隐藏的this指针. static成员没有this指针是关键!static function ...
- arcgis engine 开发之QI
ArcGIS Engine开发基础之QI AO开发中QI(接口查询)非常重要,从某种意义上说不会QI就不会做AO开发. 在讲ArcGIS Engine开发QI实例操作之前,以一个现实生活例子以方便大家 ...