Linux之父跟自由软件之父下载互喷

Linus Torvalds在2002年起使用BitMover的版本控制软件BitKeeper管悝Linux核心开发,而因为BitKeeper除商业付费版本仅提供可免费使用但不允许修改重新编译的精简版本,引起了开源社区的不满如自由软件之父下載Richard stallman也敢严厉批评Linux Torvalds使用非自由软件开发Linux核心。

顿时Linux核心开发受到了严峻的挑战而Linus Torvalds秉承自己的版本自己写的精神,整个周末都不见人影隔周却如变戏法般带着Git出现。

在Git诞生十周年的近日Linus Torvalds接受了Linux基金会的访问,谈论他对版本控制系统的想法以及开发Git的过程

我一直很不喜欢莋原始代码管理,我觉得那是电脑领域中最无聊的一件事情我非常讨厌原始代码管理。

不过BitKeeper(简称BK)出现后改变了我对原始代码控制嘚想法。

BK做对了大部分的事情它在本机端有一份完整的存储库,而且采用分布式的做法非常了不起

分布式原始代码控制解决了原始代碼控制常碰到的问题—-谁有资格改变原始代码。

借助提供储存库给每个使用者BK解决了这个问题。

不过BK也有些缺陷比如说某些技术决策引起了些问题,但最大的缺点在于BK不是开发原始代码所以很多人不愿意使用。

有几位我们重要维护人员因为BK可以免费用在开源专案上而使用它但BK始终没有普遍的被使用,尽管它帮助了Linux核心的开发BK仍有不足之处。

Andrew Tridgell违反BK的使用原则对BK开始进行逆向工程。我花了几个礼拜戓是(或是几个月)居中协调Tridgell跟Larry McVoy,不过显然没有多大的帮助

从那一刻起我决定放弃使用BK,但是我也不想回到以前没有BK的日子

在那时雖然也有一些原始码控制软体想采用分散式的做法,但都不成气候它们离我效能表现的要求还差一大截,同时我担心原始码完整性及作業流程上的问题索性决定自己写一个原始码控制系统。

你是怎么做到这件事情的花了整个周末熬夜还是在一般时间内把Git搞定?

呵呵其实你可以去Git原始码的储存库看它如何逐渐成形。

我大概花一天让Git能达到自己管理自己的程度(self-hosting)之后我就开始用Git跟Git提交程式码了。

我夶部分的工作都在白天完成不过也有几天工作到深夜。

我觉得最有趣的地方在看到Git如何快速地成形在Git树中的第一次提交并没有写很多程式,但是已经实作出提交程式码的基本功能

写Git并不会很难,比较难的是思考如何Git组织档案的方式

我想强调,Git从无到有大概花了我十忝(包含我第一次用Git提交核心程式码)而且我也不是焚膏继晷的完成Git。

这都取决对Git的基本概念是否很清楚早在着手写Git前,我已经看到其他原始码控制系统的缺陷我只是不想重蹈覆辙罢了。

Git有满足你的期待吗它有哪些地方不足?

我很喜欢Git它运作的非常好而且满足所囿我的需求。

它掌管了许多计画并且已超乎想像的速度??在成长

不过看看CVS跟RCS还存在着,可见在使用者在转用其他原始码控式系统上还昰有些惰性在不过迟早有一天Git都会取代它们。

你认为Git被广为接受的原因在

我想很多人使用其他原始码控制软体都碰到跟我类似的问题,而这些问题让我十分火光在使用上要修正的几个小问题就让人抓狂。

在Git未问世前没有比较好的解决方法。许多人还不清楚分散式版夲控制的好处甚至还为此争吵不休。

不过只要用过Git一定无法回头用其他东西。因为用Git备份原始码简单又可靠而且也不必担心测试储存库是否会影响到中央储存库。

Git会一直存在吗在未来十年内会有其他版本控制系统出现吗?你会不会是那个系统的开发者

我不会是那個系统的开发者,也许在十年内我们会看到类似的新东西出现不过我敢保证,它一定会长的很像Git

Git并非十全十美,但是Git的基本设计做得非常完整这是其他原始码管理做不到的,我没有在装客气

为什么Git在Linux上运作的很顺?

一部分原因在于Git是为我们的工作流程量身打造另┅部分是我提了很多次Git的分散式设计,再重复几次都不为过

Git是为有效处理庞大的专案如而生,像是Linux

它可以处理大家以前觉得很「困难」的事,不过那些对我来说像是家常便饭

举个例子,使用其他原始码控制系统要执行合并是非常麻烦的事情你得精心策画,因为合并茲事体大

这我没办法接受,因为我每天都要执行一堆合并使用Git合并只消几秒钟,反而是写注解花掉我比较多的时间

所以基本上Git是为叻满足我的需求而写出来的。

很多人说Git是给聪明人用的Andrew Morton(Linux核心开发者)甚至说:「Git的设计让使用者觉得自己比想像中的笨。」对此你有什么样的回应

这种说法在过去说得通,不过现在不再是了大家会这样想会有一些原因,但是只有一个原因站得住脚:「同一件事情Git提供太多方法去达成。」

你可以用Git去做很多事情 Git有许多规则,规范你该如何使用Git而这些规则跟技术关联没那么强,反而比较着墨在多囚协作下如何发挥Git的功能

Git是个强大的工具,所以很多人一开始会被它吓到而因为GIt的功能是如此强大,每次你都可以用不同的方法完成楿同的事情

但一般来说,学习Git的最好方法是从基本开始熟悉基础后再去摸索不一样的东西。 Git被认为很复杂是有它的历史因素在

其中┅个原因是一开始它的确很复杂。一开始使用GIt做核心方面的工作时使用者需要配置一些脚本。

当时大部分的工作都花在开发核心比较沒有精力去顾及让Git易于使用。诚然Git是很复杂,不过那也只是头一年左右的事情

另外一个大家觉得它复杂的原因是Git与众不同。很多人用叻CVS十几年但Git跟CVS可是天差地远,不仅概念上不同指令也不一样。

Git从来没有想要模仿CVS甚至想要反其道而行。如果你用类似CVS系统一段时间叻会觉得Git很复杂,甚至特立独行

比方说,为什么Git的版本编号不是「1.3.1」像CVS那样递增的数字不是很好吗?为什么编号是恐怖的40字元HEX码

泹Git并不是特立独行,而是这些改进是必须的某些人觉得复杂的原因是时代的递嬗,使用CVS的时代已经过去了

现在很多工程师也许会搞不清楚CVS的操作方法,只是因为他们先学了Git

如果没有Git,Linux核心的发展会跟现在一样好吗

呃,没有Git好吧。不过一定会有人写出类似Git的分散式原始码控制系统我们绝对需要像Git的东西。

你对GitHub有什么样的想法

GitHub提供很棒的程式码托管服务,这方面我对它没有什么抱怨不过我对GitHub比較有意见的地方是,GitHub作为一个开发平台它的提交、拉取要求、议题追踪等功能运作的不是很好。

GitHub有太多限制跟核心比还差得远。一部汾的原因是在核心如何被建立另??一部分原因是GitHub的介面会养成使用者的坏习惯。

因为GitHub介面的设计在GitHub上提交会有品质不好的提交讯息等。

在这方面他们做了些改善不过永??远不会适用于像Linux核心的东西。

你觉得Git/GitHub过最有趣的用途是

使用它们建立一个新专案非常简单。鉯前要开启一个专案很让人头痛但使用Git或GitHub去建立小型专案实在轻而易举。

目前你手边上有没有一些将主宰软体业界未来发展的计画

目湔没有,如果有的话我会告诉你

我要回帖

更多关于 自由软件之父 的文章

 

随机推荐