2007-08-23

Linus Torvalds 談 Linux 未來發展

Linus Torvalds talks future of Linux
http://apcmag.com/7012/linus_torvalds_talks_about

APC 的採訪者 James Buchanan 是位程式設計師、作家與漫畫家,最近有機會透過 e-mail 訪問 Linux 核心的創造者 Linus Torvalds。當 Linux 的社群愈來愈龐大,有時很難概觀 Linux 將往何處發展的全貌: 2.6 版的核心發生了什麼事?將會有 3.0 版的核心嗎? Linus 最近發生了什麼事?他的業餘時間都在忙什麼?下面大略翻譯每段的內容。有興趣了解 Linux 之父的人可以看看。

22nd August 2007, James Buchanan

Linus Torvalds, creator of the Linux kernel, has, along with others like Richard Stallman, literally changed the world of software forever.

Linux-based distributions seem to pop up every day, while more and more devices now run Linux at their core, from mobile phones to inflight entertainment systems, to the world's mission critical server infrastructures.

The development of the kernel has changed, and Linux is just getting better and better. However, with a community as large and fractured as the Linux community, it can sometimes be hard to get a big picture overview of where Linux is going: what's happening with kernel version 2.6? Will there be a version 3.0? What has Linus been up to lately? What does he get up to in his spare time?

I had the opportunity to chat with the original creator of the Linux kernel, Linus Torvalds, in a number of email exchanges.

APC: Writing an operating system kernel is a hard job. Why did you write Linux in the first place?

LT: Kernels may be hard, but partly because of that they are also interesting. I've always been more interested in "down to the hardware" details than in fluffy stuff like user interfaces etc, and an operating system kernel is about as down to the hardware as you can get without actually building it yourself (which I've also done - I was at a CPU company for seven years, after all). So I'm not into soldering irons etc, but I very much enjoy working at a low level, and thinking about how my software actually interacts with the CPU and other parts of the system. Besides, I really didn't realize how hard it would be. I really never expected to be still working on it 15+ years later ;)
(Linus 喜歡較靠近硬體的低階工作,而非較高階的 UI 等等,雖然不是真的拿烙鐵去打造 CPU,不過他還是很訝異在 15 年後,他還能在這個領域中。)

APC: What's the Linux Foundation?

LT: Heh. I just work here, you should ask some of the people who are actually involved in all the other things that LF does. It's basically the combination of OSDL ("Open Source Development Labs") and FSG ("Free Standards Group"), and is a vendor-neutral place for different organizations to discuss the issues they have, and trying to help Linux along. Part of what LF does is pay me to maintain the kernel.(Linus 提到 LF 是 OSDL 與 FSG 的結合,該單位是要幫助 Linux 發展,而他目前也在那工作。)

APC: What are you doing with the kernel now? Are you working on it full time? What parts of it do you work on the most?

LT: I very much work on it full time, but I no longer really work on any particular "part"of it - I end up spending almost all my time on not writing kernel code myself, but on working with the flow of code and merging it all.

In fact, the biggest amount of actual source code I've written in the last two years is not in the kernel itself, but in the tool I use to just track the kernel development (called "git" - a source control management system).

So I still get to write code (and I send out suggested patches quite often - but usually they are along the lines of "so here's how we could handle this issue..." in order to prod others to actually do the final patch and testing). But what I do a lot more is go through other peoples changes and say "yes" or "no". (Linus 表示他全心透入 Linux 的開發,他不是撰寫特定程式碼,而是對如洪水般的程式碼進行整合。事實上他最近真正寫過的程式是 git,也會送出建議的修補給大家評論,不過他做最多的還是討論他人 [對核心] 的改變,並決定是否要改變。)

APC: The 2.6 series kernel has been around for a long time. Why?

LT: We used to have these big and painful development releases that took several years, and it worked reasonably well and people got very used to it ("2. is stable, 2. is development"), but it had serious downsides too.

In particular, the release cycles were so long that all the commercial vendors effectively had to back-port a fair amount of new code from the development kernels, and so development code ended up in the stable releases. Also, conversely, the vendors fixed problems in the stable versions, and sometimes the fixes were missed or weren't easy to then forward-port to the development series, because the two were just very far apart.

Basically, a multi-year development cycle simply doesn't work. It was reasonable and required for a while (we did some pretty radical changes there too), but with 2.6, the base kernel is in good shape, and we've improved our development process enough that we just don't have any pressing reason to go back to that kind of "everything changes" model.

So instead of having two or three years between stable releases, we now have two or three months. Which means that the vendor kernels are much closer to the development kernels, and avoids a lot of the problems we used to have. Everybody is happier.

So we'll probably stay with that model unless something really radical happens, and that means that we'll keep with the "2.6.x" codebase, and just incrementally improve on it.

Of course, if we had a marketing department that had a strong say, they'd make us call it some sexy name ("Panther" or "Vista" or whatever), but as it is, the technical people are in charge of version names, and the sexy naming is up to the distribution makers that can call their offerings whatever they want ("Fedora" or "Feisty Fawn"). (Linuxs 提到核心開發週期通常很冗長,不過他也承認這樣並不好,但是在 2.6 基本的樣子都以大致底定,他們也發展出足夠的開發模式,所以穩定版 [偶數版本] 的推出時程大約是 2-3 個月,這表示開發版 [奇數版本] 與之差異漸小,而他們也會持續在 2.6.x 上進行改進。)

APC: When do you expect to see a kernel version 3.0? What will be the major changes or differences from the 2.6 series?

LT: We really don't expect to need to go to a 3.0.x version at all: we've been very good at introducing even pretty big new features without impacting the code-base in a disruptive manner, and without breaking any old functionality.

That, together with the aforementioned lack of a marketing department that says "You have to increase the version number to show how good you are!" just means that we tend to just improve everything we can, but you're not likely to see a big "Get the new-and-improved version 3!" campaign.(由於他們在開發新功能時都能在不破壞既有架構下進行,因此沒必要推出 3.0 版,變得跟其他商業軟體一樣大玩版本遊戲。)

APC: There doesn't seem to be a Linus kernel anymore and an experimental (e.g. Alan Cox kernel, etc) anymore. Is this true? If so, is it because you have the 2.6 series pretty much exactly where you want it?

LT: Well, part of it may be that we've gotten better at handling the code flow issues, and so maybe there's less reason for various experimental kernels. That said, there's still the -mm tree (Andrew Morton's kernel) where a lot of new code goes first. It's maybe less about "experimental" than about "a first testing ground before merging into Linus' tree", but that's not so different from what -ac (Alan Cox's tree) was about.

And there are still a lot of specialized trees for specific things. In fact, it's one of the things I wanted git to make easier to do, and if you want to follow network driver development before it gets merged into my tree, there are trees for that, and for sound drivers etc etc.

But I do think that part of it is that over the years we've found what works, and that the current development model is reasonably good.

That said, I'm sure we'll eventually hit some issue that gets peoples blood boiling, and we'll have a tree for some changes that I don't think are appropriate and am not willing to merge, and that's as it should be: unlike a lot of other open source projects, I've always encouraged people to try their hand at forking off a kernel project of their own to scratch their own itch.

So I don't think such project forks are bad at all, it's how a lot of development is done. Obviously, most development is about "micro-forks" and people don't even think of them as real forks at all, but I actually think it's good to encourage experimentation - and by keeping it friendly, if some experimental kernel shows that it was actually the right direction, we don't end up having psychological road-blocks to switching over or to merging the code...

May the best code win.(由於流程改善,因此在併入核心之前,除了 -mm tree 之外,其餘以某人姓名稱呼的實驗性核心,將比較少出現,而且 -mm tree 的目的是為了先行測試用,跟所謂的實驗性核心概念十分不同。)

APC: Do you think Linux has had an impact on computing in the past decade? If so, what stands out the most?

LT: I think Linux has affected the OS landscape a lot, but even more than that, I think Linux was instrumental in making the whole issue of Open Source move into the mainstream software development consciousness.

There had certainly been Open Source projects before Linux, but Linux was big and successful, and actually changed how people viewed them. Part of that was that Linux took a lot more pragmatic approach to what used to be called "Free Software" (and is still called that by some), and moved it from being a fringe and sometimes pretty extreme ideology to be something that was just "technically better".

And I'll certainly take some of the credit for that personally. I dislike the frothing-at-the-mouth ideology (to me, ideology should be something personal, not something you push on other people) and I think it's much more interesting to see how Open Source actually generates a better process for doing complex technology, than push the "freedom" angle and push an ideology.

And I think that pragmatic approach was what made Linux and Open Source also much more palatable to many more people, and helped make it mainstream.(Linus 認為 Linux 的最大貢獻是讓開放原碼變成主流的軟體發展意識。他認為 Linux 之所以會是個成功的開放原碼計畫,有一部份在於它的做法比「自由軟體」更加「務實」,讓它從一個在邊緣的、有時相當極端的「思想體系」,變成一種有時只是「在技術上更好的」。對他而言,思想體系應該是屬於個人的信念,他有興趣的地方在於開放原碼如何能讓複雜的技術做的更好,並藉此推動「自由」的觀點與「思想體系」。譯註:最近 Linus 在某些觀點上與 GNU 的 GPL 3 有些摩擦。)

APC: For those eager to make their first contribution to the kernel and have it accepted, what would your recommendations be? (Any areas that need help more than others, any good books for kernel hackers; however you'd like to interpret this question).

LT: It's hard to give advice, because it's different for different people. The big thing is to not think too big - you don't start out by rewriting some subsystem. Start out with some small annoyance, and see if you can fix it. And do something you're really interested in - kernel programming is easily complex enough that if you're not really interested, you'll lose your motivation before you really get anywhere.

Note from James: I recommend you first read "Linux Kernel Development" 2nd Edition by Robert Love, published by Novell Press, ISBN 0672327201. Written by a professional Linux developer and "insider," it focuses on the 2.6 series kernels. This book gives you the essential "big picture" before plunging you into mind-boggling details.(要如何對核心做出貢獻,很難建議,因為這因人而異。不過別太貪心,要從小處著手,並做有興趣的事,才不會失去動力。在此他推薦一本「圈內人」寫的書。)

APC: Out of curiosity, do you have anything to say to hardware manufacturers who refuse to release datasheets or specifications about the functioning of their hardware so it could operate with the Linux kernel?

LT: Is "I hope you all die a painful death" too strong?

The good news is that a lot of hw manufacturers are actually doing the right thing. Intel in particular has improved wrt open source a lot, and for that reason I tend to suggest that when buying a machine, just make sure that you buy one with Intel graphics and wireless. That takes care of the two biggest annoyances right there.

But Intel certainly isn't the only one, and we're doing fairly well in general - with just a few dark spots.(他認為許多硬體廠商的做法是對的,特別是 Intel,他還提到顯示卡與無線網路都可以選他們的,會比較不「痛苦」,當然其他品牌也很棒。)

APC: You've made an enormous contribution to community service and to the lives of countless people with Linux. People in third-world countries are donating old or second hand machines, and Linux distributions are free of charge and come with sometimes tens of thousands of free programs. Is there anything else about Linux you are really proud of?

LT: Actually, I'm not all that proud of the "community service" and "third-world countries are using Linux". Simply because it wasn't really what I was aiming for. So that feels like a great bonus, but it's not something I see myself patting myself on the back for. The credit for that goes to a lot of other people.

So the thing I tend to be personally proud over is just the fact that I've had the tenacity to "just do it" for over fifteen years, and that Linux has fostered a culture of good open source technology. I'm proud of a lot of the technology too, of course. (Linus 個人為 Linux 感到驕傲的地方在於過去 15 年來他都能夠秉持「just do it」,並且讓 Linux 與其他技術培養出良好的開放原碼文化,至於其他部份,得要歸功給其他人。)

APC: You said you were proud of the technology. What do you mean by this - something like better memory management algorithms than those in commercial Unix(TM) kernels, better flow of control in a complex process like a kernel?

LT: I think we have tons of areas where we're just better than anybody else. We handle portability better, we handle the development process better, and yes, we also end up having better memory management and a better filesystem layer than anybody else.

So there's tons of things on the technical side that I'm really proud of how we handle. And hey, I'm obviously biased, and some people will disagree on any particular feature, but that's what makes things interesting.(他自豪於他們如何處理這些技術。)

APC: Before you wrote the kernel, you wrote a clone of Pacman. Do you play games at all and if you do, which ones?

LT: I don't games that much, I don't tend to find it interesting enough. And when I do play, I tend to play things that are more kids or teenager games: more of a "platformer" kind of thing. I played the original Prince of Persia a long time ago before I started Linux, and for that reason I tried out the modern versions, and liked those too ("Sands of Time" in particular, the later ones were a bit too serious). (他提到他不常玩遊戲。不過他喜歡玩原版的「波斯王子」與後來的「波斯王子:時之砂」。)

APC: Would you write another game if you had the time? If yes, what would it be? Do you have a favourite type of game, such as adventure?

LT: I really only wrote some (fairly bad) games because I was interested in the programming, not so much the playing. I found it more interesting to just do flicker-free graphics at high performance than the actual game-play.

So no, I'd probably never do a game again. Especially in these times, when games are a lot more about the content, and less about the things I used to worry about.(他寧願寫程式而非玩遊戲)

APC: What do you like to do in your spare time? Do you have any particular hobbies or interests outside of computing?

LT: I spend a lot of time at the computer. But I'm writing this one-handed, because our puppy is sitting in my lap right now. And when not at the computer or with the family, I tend to read a lot.(他用單手寫程式,小狗用另一手抱。如果不碰電腦,他就碰書。)

APC: What books do you like reading, and what have you read over the past few months?

LT: I read mostly just random pocket-books - horror, sci-fi, fantasy, thrillers, you name it. I tend to not really remember the books, it's not like I read them because they leave a lasting impression...(平常喜歡看平裝小說,但大多只留下印象。)

The more serious stuff I read tends to be biology and especially genetics. Richard Dawkins was a big hero of mine even before he became an internet cult figure - I really enjoyed his The Selfish Gene (and I find his books on evolution more interesting than "The God Delusion", even if his atheist worldview is perhaps what he's now most famous for - probably because I just find genetics more interesting than religion ;) (嚴肅書籍喜歡看生物學,特別是遺傳學,特別是「自私的基因」這本書。譯註:中譯版由天下文化出版。)

APC: You like to use your computer, as you said. Aside from writing kernel code, what do you like to do on your computer?

LT: These days, most of the time I write less kernel code than I write code for git, and in fact for the last year, even that has no longer been a full time job. What I really end up doing most of the time is just communicating. Reading emails, forwarding them, writing replies...

And reading other peoples patches (and bug-reports - most of them never get elevated to "let's bring Linus into this", but it happens often enough that I end up being personally involved enough with some regression most days..)

And that really does fill my computer time. I waste time browsing the web when I'm bored, of course, and I have my classic rock going on random selection in the back-ground, but what I do most of the time is literally revolving around email and the kernel. (現在愈來愈少碰程式,碰 git 比核心來的多,反而花比較多時間在通訊上,如 e-mail 的機會比較多,另外就是閱讀他人的修補或臭蟲回報。做煩了就上上網,背景放經典搖滾樂。)

APC: Do you use a specific distribution of Linux at home or work?

LT: A "specific" one? No. I have changed distributions over the years, and it tends to really end up depending on various random circumstances, like just when I switch machines around and what happens to be convenient.

So right now I happen to run Fedora on my machines, which largely came about from me running on POWER for a few years, and Fedora supported it pretty well (and since I actually don't care that deeply about the distribution, I tend to prefer running the same thing on everything, just to keep any distro issues away).

Before Fedora had PowerPC support, I ran YDL for a while, and before that I had SuSE. Funnily enough, the only distributions I tend to refuse to touch are the "technical" ones, so I've never run Debian, because as far as I'm concerned, the whole and only point of a distribution is to make it easy to install (so that I can then get to the part I care about, namely the kernel), so Debian or one of the "compile everything by hand" ones simply weren't interesting to me. (平常並沒有特別專注在某個套件上,目前跑的是 Fedora,通常會看情況更換套件。不過他並不跑 Debian,他認為套件應該把安裝程序弄的更簡單,而他,專注在核心上就好,他對動手編譯每件事不感興趣。)

APC: What software do you use everyday? Your browser, desktop (if any), email client and so on?

LT: Well, ignoring the actual development stuff (make, compiler, editor etc), it ends up being mostly just xterms and "alpine" (the newer version of the venerable old "pine" email reader. Strictly text-based, thank you very much).

And yes, a browser is mostly open in the background. There's a few technical discussion forums I'm active on when I have nothing better to do (or when I do have better things to do but get frustrated with them ;) , and then the normal "random" sites (boing boing etc). (最常用的程式是 xterms 與 alpine,「隨機」網站則是 boing boing 等)

APC: You've worked on Linux for 15+ years. Do you think you'll ever stop working on it? If you did, what do you think you'd do?

LT: "Ever" is a long, long time. I didn't expect it to end up being 15+ years when I started, and I still don't really have any plan on what I'll do in the future. But one reason I've done it for 15+ years is that I like concentrating on something, and don't like flittering from one project to another. And I simply like doing Linux.(他不喜歡在不同計畫之間跳來跳去,因此他專注在 Linux 上。)

So no, I'm not planning on ever stopping working on it, but maybe some day somebody better simply comes along, and I certainly hope I'll just have the good grace to realize when I'm simply not needed any more and not adding anything to it. (要等到他停手的那一天,或許是 Linux 變得完美的時候吧!)

APC: You've been to Australia, and rumour has it that you were bitten by a penguin. Is that true? How did you find Australia, how many times have you been there, any favourite town or city? Was there any kind of activity like bush-walking and things like that which you really took to in Australia?

LT: I've been to Australia several times, these days mostly for Linux.Conf.Au. But my first trip - and the one when I was bitten by a ferocious fairy penguin: you really should keep those things locked up! - was in 93 or so, talking about Linux for the Australian Unix Users Group.(他在 1993 年前後真的被澳洲一隻「兇殘」的小企鵝咬過!那時他在對 AUUG 談論關於 Linux 的事。)

And I'd never go bush walking. Not that I mind the idea of poisonous animals (or the drop-bears), but simply because I'm just not into that whole outdoor thing. I tend to go to zoos, and I love walking around the strange creatures you have down there, but let's face it - one of the biggest draws is that it's warm and sunny there when it's nasty and horrible in the northern hemisphere. I'm from Finland, so "warm and sunny" means more to me than it may do to some other people.(他不是喜歡 bush walking [沿著海岸線走] 反而比較喜歡到動物園,或是在奇怪生物四周看看。不過他事實上是喜歡那裡的溫暖與陽光,別忘了,他來自於芬蘭。)

One of these days I hope to find myself on the Great Barrier Reef and do scuba diving (which I love), but for some reason I've always ended up in other parts.(水肺式潛水他也頗喜歡,最近這些日子,他夢想有天發現自己身處大堡礁裡,不過最後通常是身處他處。)

APC. Thank you Linus. Linuxus Victa! (Heh!)

Recommended reading for how Linus' terminal emulator ended up a kernel in glorious technical detail: Just For Fun: The Story of an Accidental Revolutionary , by Linus Torvalds with David Diamond. TEXERE Publishing Ltd. ISBN 1587990806.This particular chapter also pretty much details how to write a kernel and how he did it. The book also contains a lot of extra interesting information on Linus and his background.(對於 Linus 如何在終端模擬前面敲出核心程式碼,可以參閱上面那一本自傳。)

APC Interviewer, James Buchanan, is an Australian programmer, writer and cartoonist.

沒有留言: