================================== これは、 http://linux-foundation.org/weblogs/openvoices/2008/01/07/welcome-to-open-voices/ のインタビュー音声の和訳です。 翻訳団体: JF プロジェクト << http://www.linux.or.jp/JF/ >> 翻訳日: 2009/02/03 翻訳者: Shimauchi Sho << sho dot shimauchi at gmail dot com >> 校正者: Tanaka Yosuke << lazysuits at gmail dot com >> Honma Kanako << kany1120 at gmail dot com >> 吉山 あきら << yosshy at debian dot or dot jp >> Kaneko Seiji << skaneko at a2 dot mbn dot or dot jp >> 小林雅典 << zap03216 at nifty dot ne dot jp >> 石田雄一 << fclinux at progresser dot net >> (敬称略) ================================== Linus Torvalds - Part I Jim Zemlin: じゃあ最初の質問を始めましょうか。The Linux Foundation の 一員であることはどのようなものですか? Linus Torvalds: この4年間ぼくは結局のところ基本的にフルタイムで Linux に 関わってきたよ。以前はぼくと家族を支えるいわゆる本業がずっとあり、 Linux は趣味の一種だった。ぼくの雇い主は Linux について知っていたし、 支援してもくれたけど、それでも Linux はぼくの公式な仕事じゃなかった。 4年ほど前に、Linux をフルタイムでやる必要が出てきたと言うようになって、 Transmeta(*) の仕事を休んで一人でやっていこうと思ったんだ。その代わり、 この団体がぼくが好きなようにやることを応援してくれることが 分かったんだよ。 (*訳注 Transmeta 社は米国の企業で、マイクロプロセッサを開発していた。 Linus は 2003年6月までこの企業で勤務し、その後 The Linux Foundation で Linux カーネルの開発に専念することになる。) だからぼくに関する限り、The Linux Foundation で働くことは、家族を 養う上での細かいこと全てに患わされることなくしたいことや必要なことを やるための手段なんだ。 Jim Zemlin: あなたが Linux を開発する動機はなんですか? Linus Torvalds: そうだね、昔は技術がぼくを熱中させる原因だった。ぼくの 興味はハードウェアがどのように動作するか、とか、ハードウェアと ソフトウェアがどう相互に作用するかということだけだったんだ。今もまだ 技術的な興味は熱中する大きな要因ではあるけれど、今では社会的なつながりも 大きな要因になってしまったよ。 みんなと一緒に開発するのはとにかく楽しいよ。別に一日中自分の席に座って 実際には誰とも会わないにしても、ぼくがやっていることは基本的に人と コミュニケーションをとっていることで、それはとても社会的なんだよ。 みんなのメールを読み、 回答し、厄介だって伝えたりするんだ。礼儀正しい 言い方をしないにも関わらず、みんないい仕事をするし人々を正しい方向に 導こうとしている。 Jim Zemlin: あなたはよく「Linux はとにかく楽しい」という発言を引き合いに 出されますが、それが Linux に本当に熱中する理由ですね。 Linus Torvalds: そうだね。 Jim Zemlin: あなたは Linux に、Linux の開発により大きな意義のような ものを見出していますか? Linus Torvalds: してないよ。まあ、他の人はそうした意義を見出してるかも しれない。というかね、ぼくが面白いなって気づいたことの一つが、 みんながどのように Linux を使うかってことなんだ。それはぼくが最初に 設計した用途じゃなく、場合によってはぼくがそれほど注意を払ってないことの ために使うのかもしれない。 「Linux を使うのは全て第三世界の国々のため、人類愛を支援するためで、 それこそぼくが Linux をやる理由だ」なんて考える人もいるけど、それは 違う。それは Linux をやる理由じゃないし、そういった賞賛はもっと大きな 構想の中で世界をよりよくしようとするために Linux を使っている OLPC(*) のようなプロジェクトに与えられるべきなんだ。 (*訳注 OLPC: One Laptop Per Child。世界中、特に開発途上国の子供たちに 革新的な教育理論に基づく学習の手段を提供することを目的として活動している NPO。(wikipediaより)) ぼくは Linux がとても面白いと思っていて、というかぼくに言わせると、 面白い部分こそがぼくを突き動かし夢中にさせてくれるんだよ。ぼくにとって、 楽しいってことの一部は退屈しないぐらいの難しさがあるべきなんだ。だから、 楽しいってのは楽にできるって意味じゃなくて、興味を引き興奮することを 意味するんだ。 Jim Zemlin: 「退屈しないぐらいの難しさ」について話しましょう。 まずは、技術的な面での…… Linus Torvalds: うん。 Jim Zemlin: ……難しさがあります。同様に社会的な面での難しさや共同作業の 面での難しさがあります。どれが挑戦しがいがあると思いますか?  ただ難しさが異なるだけですか? Linus Torvalds: どれも全部挑戦しがいがあるよ。ただ難しさの種類が 違うだけさ。場合によっては技術それ自体が挑戦しがいがあるね。技術的な 面ではほとんどいらつくことはないんだ。ぼくがいらつかないという意味では 技術的な面はわりと簡単な方になるね。よし、ぼくらはバグを見つけて、 2ヶ月もかけて技術的なバグに頭を悩ませたとすると、そう、 少しいらつくけど、同時にそれはいずれ解決する問題で、その点について全く 心配する必要ないということは常にわかっているんだ。 社会的な面は、とてもいらつくこともあるし、社会的な問題が解決できなくて みんなが怒り出すこともあるという点で、もうちょっと難しいかもしれない けど、それもとても興味を引くものだとぼくは思っているんだ。ていうか、 もしみんなが扱いやすく、同じ方向へ引っ張られてくれるとしたらそれは 楽しくもなく興味を引くこともありえないだろうね。 そして社会的な問題は以前とは異なり、刻々と変化していってる。ぼくらが 技術的な問題に没頭してるときにたまに、幸運にも本当にたまになんだけど、 社会的な問題のパーフェクトストーム(*)のようなものが来ることがあり、 そして一つのフレームワークがたぶん何か別の問題を呼び起こすんだ。元々 みんなが持っていて、水面下で爆発しそうになっているような問題をね。 (*訳注 パーフェクトストーム: 映画「The Perfect Storm」 (邦題:パーフェクト・ストーム)としたが、Linus がこの映画を意図して 言ったのかどうかは不明) だから、慢性的な技術的問題や社会的問題を抱えることは好ましくない。 そういった問題は現れては消えるものだから。 Jim Zemlin: 社会的な相互作用について、より深く見てみましょう。 オープンソースはよくこの種の民主化プロセスと描写されますから、そこには 全体的な合意があると誰もが言います。しかし最終的には何かを 決めるときには、断固たる決定権のようなものが必要とされます。この点に ついてどう取り組んでいますか? Linus Torvalds: それは単に民主的じゃないというだけの話で、 能力主義だなんて言う人もいるけど、別にどちらが正しいかなんて決める必要は ないね。ぼくの方針は、コードを書いた人が決めるってことだ。文句を言うのは すごく簡単だし問題について議論するのもすごく簡単だけど、それは ぼくにとってもすごく簡単なんだよ、「こんな風に解決するべきだ」って 言うのがね。 だけど最終的には、唯一重要なものは現実のコードと技術そのものだよ。 向上心もなくコードも書こうとしない人でもコメントはできるし、 こうするべきだとかああするべきだとか、そうしちゃいけないとか言うことも できるけど、結局はそういった声は問題にならない。唯一重要なものは コードなんだ。 人ってのは結局怠け者だから、多くの人達は議論してるだけでハッピーになる。 それに議論をしても、案を実現するコードは大抵一つしかなく、実際に 選択可能な選択肢はあまりないんだよ。本当にカーネルプログラミングが できるほど優秀で怠けることなく仕事をこなせる人ってあまりいないんだよね。 そんなわけで、ぼく達に2通りのコードがあって、それぞれ異なる実装で同じか あるいは似た動作を行っていると、誰かが、大抵はぼくだけど、どちらか 選ばなければならない状況になって、その選択によって何らかの社会的な 問題が起きることもあるんだ。実際はそんなことほとんど 起こらないんだけどさ。 Jim Zemlin: でもあなたは必要なときは決断を下そうとしますよね? Linus Torvalds: うん。実のところ、技術的な問題はぼくが間違った決定を 行ったときに取り消すことができるからとても簡単なんだ。みんなはただこう 言うんだ、「なるほど。一見正しい決定のように見えるかもしれないけど、 それは完璧に変な間違いだよ」 それでぼく達はただ方針転換すればいいんだ。時には少し痛みを伴うことも あるけど、さっき言ったように最初に大きな決定を行うことはあまり ないし、大抵の場合はその決定は間違ったものじゃないんだ。 Jim Zemlin: 開発プロセス自体の組織構造についてさらに話しましょう。 誰がプロジェクトの中心人物なのですか? Linux カーネル開発に従事している 立場から見て、プロジェクトはどのように拡大すればいいと考えていますか? Linus Torvalds: ぼくの好きな持論は、完全な組織なんて現実にはなくて、 大部分は自己組織化していくってことだ。それはつまり、従わなければ いけないものなんてないということを意味するんだ。それは誰が本当の メンテナか決まっていないときについて言える。さらには「この人が サブプロジェクトを任されています」と書いてあるメンテナファイルが あるときにも言える。その記述は何にも勝るヒントになる。もしこの領域に 問題があったり、取り込んで欲しいパッチがあったりしたら、記載されている 人物は、ほぼ間違いなく話しかける相手としてふさわしい人だろうということを 意味しているんだ。 でもそれはとても柔軟性があるし、結局何が起こるのかというと、他の人よりも 多くのコネクションを持つ人達が出てくるようなソーシャルネットワークにより 近くなっていって、パッチ自体は問題じゃなくなるということなんだ。 レポートは原著者から、ぼくや他のたくさんの異なる領域にたくさんの コネクションを持ってる中心的な人達につながるコネクションを最も多く 持ってる人達全てに移っていこうとするんだ。 Jim Zemlin: では色々な意味で、開発プロセスに有意義な形で参加する ということは信頼関係を築くことに大きなウェイトがあるということですね? Linus Torvalds: そう。 Jim Zemlin: カーネルコミュニティ外の参加者でも? Linus Torvalds: その通り。誰のために開発やるかなんてほとんど全く問題に ならないよ。だって誰もそんなことに構わないからね。ひょっとすると政治的な 何かが進行しているかもしれない、でも結局何が起こるかというと、みんなは 他の人達が為したここ数ヶ月、数年、場合によっては何十年もの開発姿勢を 観察するんだ、そして「よし、こいつは信用できる。彼がパッチを 送ってきたら、それは当てるべきものに違いない。ぼくが何でそのパッチが 必要か分からなかったとしてもね」と分かるんだ。そういうネットワークを 築くんだよ。 自己組織化していくってことは、これはつまり基本的に時間が経つほど 進化していくってことだけど、みんな別に中心から始めなくても特定の領域で 活躍していくってことがより一層顕著に表れるんだ。寄せ集めのようなものが もっと信用をつけ、コネクションを増やし、中心になっていくんだ。何か公式な 手続きにのっとって彼らを中心にしようとしなくてもね。 Jim Zemlin: ではちょっとコミュニティについて話しましょう。こうした 信用という面からコミュニティという言葉それ自身について質問をしたいと 思います。人々はコミュニティという言葉を、「そんな風にするな、それは 『コミュニティ』を乱すから」とか、「『コミュニティ』はこのような特定の 慣習を受け入れない」のように言い放ちますよね。 何を、どうやってコミュニティを定義していますか? つまり、コミュニティを どのように見ていますか? Linus Torvalds: コミュニティという言葉を使うのは避けたいね。この言葉は 色んな形で誤解を生むからね。あるひとつのコミュニティってものがあるわけ ではないから、誤解させてしまうんだ。みんな自分が関心のある問題を抱えて いるし、表向き同じコミュニティにいる人と一緒に何かするかもしれないし、 しないかもしれない。 そう、みんなが理想や目的を共有するみたいに考えることが誤解を生じている 原因の一つなんだ。それは正しくない。大抵はみんな全く異なった目的を 持ってるんだ。非常にはっきりした商業目的を持つ商業ベンダもいれば、 オープンソースの世界に属している個人もいる。それをコミュニティと 呼ぶんだ。営利企業を嫌う人をよく見かけるだろうけど、特に大きい存在では ないよ。大抵目的というのは非常に異なっているんだ。 また別の問題は、コミュニティもただの一構成要素に過ぎないのにそう 見られず、コミュニティの内側とか外側とか言いたがる人もいるんだよね。 それに、特にかなりの企業がようやく学習し始めたみたいだけど、企業が 「どうやってコミュニティと協力するか?」みたいな話し合いをしたぐらい、 非常に大きな問題だったんだ。 結局コミュニティは外部要素になるんだよ。本当の答えはいつだって コミュニティと協力するんじゃなくて、単にこの存在しないコミュニティの 一員として活動することなんだ。協力するんじゃない、一部となるんだ。 Jim Zemlin: それこそが私が広めたい考えなのです、というのは、 Foundation ではよく企業の方が来てこう尋ねるのです、「コミュニティに 参加するにはどうすればよいか? コミュニティと共同で開発するには どうすればよいか?」そして我々はこう答えるのです、あなたの答えと 似ていますが、「あなたはコミュニティの一部になれますよ」 コミュニティという言葉は控えて、開発目的で参加しようとしている企業に 対して、どういうアドバイスがありますか? Linus Torvalds: 一番簡単な方法は、既に開発プロセスの一員になっている 人や、開発での中心人物じゃないかもしれないけど、十分に貢献していて何が どう動くかわかるぐらい中心にいる人を探して、基本はそういう人を自分の 会社に引き込むことだよ。 大抵の企業は既にそういう社員を抱えているよ。もし技術の企業に 勤めていて、Linux カーネルのようなものに興味があるのなら、 Linux カーネルに興味を持つ理由はほぼ間違いなく自分の会社で働いている ような人と関係があるんだろうね。 どうやってモノが動くか知っている人は、ほぼ確実に自分の会社にいると 思うよ。 Jim Zemlin: しかしあなたは先程、信用について、そしてコミュニティで自分の 要望を実現するための自身の影響力という点でなぜ信用が重要なのかを 話していました。 企業はそのように考えないこともあります。彼らはこう考えるのです、 「おい、人を割り当てて働かせ、リソースを投入しさえすれば、我々の目的は 達成できるんだ」 こういう組織が、まず要員を割り当てたとして、どうやって信用を築けば いいのでしょう? 企業は社外で参加する従業員に何を言うべきなのですか? Linus Torvalds: ぼくにはその質問に答えがあるかなんてわからないね(笑)。 もし信用ってものについて人間関係における信用のように考えているのなら、 信用なんて得ることはできないし、意図的に信用を築くことさえできないよ。 信用っていうのは生じるか生じないかのどっちかで、それは自分の行動に大きく 左右されるんだ。 だから、信用を築くには信用を築くって考えるんじゃなくて、自分の行動が どんな発言よりも雄弁に語ってくれることを確実にすれば、心中の戦略なんて 問題じゃないんだ。外向きの行動が少しづつ信用を与えてくれるかも しれないし、くれないかもしれない。 Jim Zemlin: 今日のカーネル開発プロセスと、時代を経てどのように 開発プロセスが変わったかについて話しましょう。まず現況について説明し、 それからあなたのご意見をお聞きしようと思います。 何年も前には、この開発プロセスは楽しいプロジェクトで、場合によっては 企業に使用されることもありましたが、しかし今日ほどには広く採用されません でした。 今日では、モバイル機器や巨大サーバの実現のためのこの大きなうねりが あり、これは企業のこの業界に対する関心に不可欠なものとなっています。 営利的な観点から多くの企業が参加しています。 昔と比べて、開発プロセスはどのように変わりましたか? 人々は変わった のですか? 以前と比べ、例えば3、4年前に Transmeta にいた頃と比べて、 あなたがしていることはどのような違いがあるのですか? Linus Torvalds: 大部分は同じだと思うよ。あるプロセスをより明確に するための純粋に技術的なプロセスの変更というのはあったし、5年から 10年前まではなかったようなことをするのを手助けするためのツールもある。 もう一つ変化したことは開発に携わってきた人達が間違いなく今までより 長い時間開発するようになったことだね。たぶん彼らは自分達がどれほど 滅茶苦茶にすることができるか気づいていて、以前より慎重になったのかも しれない。とりわけぼく自身についてそう思ってるんだけど。10年前は今よりも ある程度簡単だったんだ。当時は簡単にこうやって言えたんだ、「おい、 こいつを試してみようぜ。もし動かなくたって大した問題じゃない」 ぼく達にはもうそれだけの自由は全くないんだ。全くの実験的コードを 持ってきて、「おい、こいつをどうやって動かすか考えようぜ」などとは 言えないんだ。 その結果として、ぼく達は現在コードを入れるレイヤを複数持っているんだ。 コードはぼくのツリーにすぐには入らない。何か実験的な要素があれば、 どこかの外部ツリーで開発されて、それから普通は、例えば Andrew Morton(*) のツリーに入れられて、みんなが「OK,このコードはこれらの ツリーでは動作する。まだ実験用に特化されたツリーの中にあるから多くの 幅広いテストを受けているわけじゃないが、一通りよさそうなので メインツリーに入れてみよう」って言うまで1年ほど居座ることもあるんだ。 (*訳注 Andrew Morton: Linuxカーネル開発における主要メンテナの一人。 「Andrew Mortonのツリー」とは、-mm ツリーと呼ばれる開発版ツリーを指す) ぼく達はそう変えたんだ。その多くはそれ自身の必要性から起こってきた ものだし、別にぼく達が問題を予測してたわけじゃなく、ぼく達の開発する 方法になっていっただけなんだ。というのも、ぼくのツリーはあまりに 実験的なのが明らかだったので、他の人が実験的ツリーのマントを 拾い上げようという気になってしまったからなんだよ(*)。 (*訳注 「列王記下 2:13」で、昇天した預言者エリヤのマントを 弟子エリシャが拾い上げ(took up also the mantle)、エリヤの霊を引き継いで 預言者となるエピソードがある。ここでは「引き継ぐ」の意。) Jim Zemlin: ある意味であなたの言っていることは、個人的責任感が 増していっている感じが、まるで独身の人が結婚し子供を持ったみたいに 聞こえますね。 Linus Torvalds: そうだね。ぼくが言いたいのは、ある程度は当然 成長しているし、たくさんの……似ている部分あるってことなんだ。もちろん 違う部分もいっぱいあるに違いないだろうけど(二人で笑) 。だから、あなたが そこまでこの例えにあてはめることができるかどうかわからない、でも……。 Jim Zemlin: カーネルコミュニティを愛していない、と? Linus Torvalds: 誰かと5年ないし10年一緒に開発すれば、その人達を そんな風に愛さないとしても少なくとも彼らを信用できるってことを 個人的レベルで強く実感するんだよ。 Jim Zemlin: 今起こっていることの一つは……コミュニティの話を続けますが…… Linux が世界中でより重要になり始めているということです。Linux を ソフトウェア産業とともに成長するための戦略的手段として認識している政府、 Linux でできることをやってみるために Linux を使う人達、台北の Linux モバイル機器製造業者、One Laptop Per Child、などなど。 皆さんがよく質問することとして、なぜ私達がもっと世界中から開発プロセス 自体に参加してもらうことを考えないのかというものがあります。他の言い方を すると、カーネル開発に注目している人はこの開発プロセスが欧米にばかり 焦点を合わせていると言っています。 私があなたの考えで聞きたいと思っているのは、a)なぜもっとグローバルに 配慮しないのですか? ということと、b)他の土地の人々のさらなる参加を 得るためのアイデアについてです。 Linus Torvalds: ぼく達は少し調べてみたんだ。6年以上に渡って開発者の 出身地を見て、開発者は人口の多い国から来るんじゃなくて、非常に高密度の インターネットアクセス環境のある国から来る傾向が明らかになったんだ。 それが理由の一つさ。 確かに、中国に10億人います、インドに10億人います、って言うのは 簡単なんだ。でも中国もインドも開発コミュニティではあまり存在感を 発揮していない。 だけど、人の数だけで見るんじゃなくて、良好なインターネット接続環境が ある人の数で見たら、中国もインドも別にそんなに大きくないんだ。そして 接続性こそが問題の一つなんだ。 Jim Zemlin: しかし(インターネットアクセス環境の充実に)比例して、 彼らは(欧米と)同じくらい参加するでしょうか、それとも……? Linus Torvalds: 他の問題もあるんだ。言葉の壁と文化の壁は明らかに大きな 問題の一つだ。教育と同じぐらい単純な問題で、明白な問題でもあるかも しれない。 この言語の壁は巨大な問題になってしまいがちなんだ。実際のところ、 アジア圏でインターネットがよく浸透している国々でさえ、さらに多くの 文化的な違いの問題があるかもしれない。インターネットの使用が非常に広く 普及しているところもあるし、それらの人々は明らかに高度な教育を 受けていているけど、結局はあまりオープンソースに貢献しないんだ。 カーネルにも、一般的に他のプロジェクトにもね。 そして少なくとも問題の一部は文化に関するもののように見えるし、どうにも 否定のしようがない。こうした人達のうち何人かは、文化の壁や言語の壁が あっても積極的に参加するようになる。確かにそうした人はいるけど、これで なぜ西欧とアメリカが最大の開発エリアになっているかということの大半の 理由は確実に説明できるよ。 Jim Zemlin: これはつまりコアカーネルコミュニティのような団体が、 「我々はどのようにすればもっと参加者を集めることができるだろうか? 我々はどのようにすればより簡単に、より気軽に参加者を集めることができる だろうか?」といったようなことを考えているということですか? Linus Torvalds: おりおりそういう話が出てくるね。誰も本当にその答えを 知らないと思うよ。ぼく達はドキュメントをいくつか追加した。普通最初に必ず 読むような"read me"のようなドキュメントで、そこにはどこに行けば 参加できるか、どう振る舞えばいいのかといったことが書かれている。そういう ドキュメントがいくつもの言語で公開されているんだ。 これが大きな意味を持つかどうか、ぼくにはわからない。ぼくはあまり 意味がないんじゃないかと思ってるけど、少なくとも人々にプロジェクトを 見てみようという気を起こさせたとは思ってる。多分プロジェクト自体を見て 逃げ出しちゃう人は減って、少なくともそのプロジェクトに取り組もうとは するかもしれない。アジアの人々はこう感じているかもしれない、「よし、 とりあえずこの件はこれ以上追求しない。問題だとは思うけど」でも 少なくともその人たちは問題に気がついているわけだし、ある程度までは 挑戦しようとしているんだ。つまり、そこが注目してきた点の一つなんだ。 このことは、文化の壁は言語の壁より大きいってことを示していると思うんだ。 ぼくがそう思う理由は、南米の人達が特に活発に参加してきたからなんだ。 彼らは必ずしもそんなに英語をしゃべるわけじゃないけど、文化的に ヨーロッパやアメリカとより近いから、参入しやすいんだろうと思うんだよ。 そんなわけで、そういった文化の違いにどうやって真剣に取り組んでいけば いいかぼく達はわかってないんだと思う。 Jim Zemlin: もう少し技術的な面におけるカーネルの将来について 話しましょう。当初 Linux カーネルは大部分がサーバ上で動作していました。 現在はデスクトップコンピューティングではっきりと使われていて、 モバイルや組み込みコンピューティングでも増加しています。 こういった状況、つまり組み込み機器とモバイル機器により Linux が使われて いくのを見て、技術的観点からカーネル全体に及ぼす影響はありますか? Linus Torvalds: 実を言うと、もっと強いインパクトを期待していたんだ。 モバイル機器はすごく成長してきたんだ。携帯電話や、かなり万人向けの スマートフォンでさえ多分最初に Linux を動かしたデスクトップよりも 高性能な演算処理能力を持っているに違いない。そしてその成長はどうも 止まりそうにない。 特にカーネルに関する限り、みんな、多分あなたが思うよりももっと 心配しているね。モバイル側の最大の問題は、傾向としてあまり……ああ、 問題は依然としてカーネルの側にあるんだけど、カーネルをより小さく、 効率的にしたくても、より多くの人々が心配してるのは実際には インタフェースだと思うんだ。 携帯電話を操作する方法とデスクトップの操作方法の差はさらなる違いを 生み出すんだ。すごく制限されたキーボード、タッチスクリーンの問題、すごく 小さいスクリーンがあるわけだ。ぼくはより大きな問題はどちらかといえば UIインタフェースのようなものにあると思うんだ。 Qtopia(*) があり、Qtopia はモバイル側が主要な役割を負っているようだった から、カーネル側ではその多くを目にすることはなかった。もしかしたら ぼくがそう感じていただけかもしれないけど、ぼくは一連の問題から 離れているんだ。なぜなら関与しているモバイルカーネルグループ全てに、 ぼくは直接関わっていないからだ。でもモバイル側の人々全体として ユーザ空間よりカーネルに気を配ってないと思うよ。 (*訳注 Qtopia: Trolltech 社(現ノキア社)が開発したモバイル向け アプリケーションプラットフォーム) Jim Zemlin: あなたの後半の発言にあった、モバイル特化型の カーネルグループや Linux ディストリビューションが数多く存在することに ついて話しましょう。よく耳にする話として、彼らが Linux 開発プロセスと オープンソースに参加する理由はこのような共同作業によって相当な コスト削減になり、彼らがお互い非常に効率よく開発できるようになるから というのがあります。 そしてグループが細かく分かれている中で、彼らがまさにベストプラクティスの 観点からできることは何でしょうか? もしあなたがモバイル機器の企業で、 メインラインカーネルに入れたいものがあれば、無限に入れられるとして……。 Linus Torvalds: モバイル業界での大きな問題は、どちらかというと市場全体が 完璧に断片化しているのに慣れてしまっていることだと思う。みんなこうした 一回限りのハードウェアを作るんだ。彼らはここ数十年間そうしてきたんだ。 基本的に使い捨てのコードを書くのにとても慣れていて、次世代ハードが 登場すると完全に一から始めるんだよ。 ハードウェアには世代があって、それは何年も何年も続いていき、彼らは その世代のサポートを行うんだ。でも最終的に彼らが別の世代へ行くことを 決定すると、基本的に一から始めるんだ。 あなたがそういう心持ちでいるとしても、ぼくが話す限りでは、人々はこうした プロセスで開発しようとする概念や、標準カーネルもしくは標準ユーティリティ と統合するなんていう概念を理解しようとさえしないね。なぜなら、 それは彼らがやったことのないやり方だからだ。 で、こうしたモバイル機器製造業者の多くがやってることはというと、 あるバージョンをとりあげ、普通はその時の最新バージョンをとりあげて こう言うんだ、「OK、こいつがベースだ」それから5〜6年の間特定の プラットフォームで彼らは同じバージョンに長く留まって、必要に応じて 機能強化するんだ。 で、彼らが次期バージョン、次世代ハードウェアを作ろうとするとき、彼らは 世界中がこの二、三年間何か別のもので動いているという状況に陥ってるんだ。 彼らがそのバージョンに加えた修正は今日世界中で使われているバージョンとは 何も関係がなくなっているんだ。そして彼らは以前やってたことをやめる。 彼らは自分達の作品を全て投げ出し、一から始めるんだよ。 これはぼくが……ぼくは助け合うことはできないと思ってる。モバイル市場は 成長してそのような悪習から抜け出す必要があると思うんだ。 Jim Zemlin: ある意味それは歴史的観点からでも地理的観点からでもなくむしろ ビジネス的観点から見た文化的問題ですね。 Linus Torvalds: ああ。技術的で文化的な問題で、技術的で商慣習的な 文化的問題だね。 Jim Zemlin: あなたが先程話した中に、カーネルとのインタフェースの方法が より複雑になってきているということがありました。そしてデバイスドライバは 明らかにこの構成部位です。 よく尋ねられるのですが、別にあなたは驚かないでしょうが、なぜカーネルには 安定版デバイスドライバ ABI(*) がないのですか? (*訳注 ABI: プログラムとOSの間のオブジェクトコードレベルの インタフェース) Linus Torvalds: ABI がない理由は2つある。1つは、ぼく達はそれを 本当に、本当に、本当に欲しくないということだ。いつもいつもみんな 安定版 ABI について訊いてくるけど、安定版 ABI を欲しがる主な理由は 自分達のバイナリドライバは持ちたいけどソースは外に出したくなくて、さらに 間違いなくソースを標準カーネルにマージしたくないからなんだ。 それはつまり、実際にカーネルの全機能が動作するようにしている、カーネルの メンテナンスをする人達の誰もがそのハードウェアでは基本的に作業できなく なってしまうことを意味するんだ。なぜならどんなバグがそこにあっても ぼく達は誰も修正することはできないからだ。 だから、全ての商用ベンダがたとえ以前はバイナリドライバを受け入れていた 企業であってもバイナリドライバとの関係すべてから距離を置いたか、 置こうとしている。なぜならそれは全くメンテナンスすることができない からだ。 ここに理由の一つがあるんだ。安定版を出さない理由を政治的だと見る人も いる。きっと政治的な面もあるに違いないんだけど、理由の多くは非常に 現実的だよ。単にぼく達がメンテナンスできないからだよ。 Jim Zemlin: こうして聞いているとここにはもう一つの文化的問題が あるようですね。かつて人々はバイナリドライバをサポートしていたもので、 たぶんそれで利益を上げていました。しかし、彼らはたぶんサポートを共有して 利益を上げることを理解することさえしないでしょう。 Linus Torvalds: うーん、そうじゃないね。あまり儲からないんじゃないかな。 サポートが行き渡っている時、それが現実となるんだ。ぼくはもうほとんどの デバイスをサポートする必要はないんだけど、ぼくは最終的にサポートの 終着駅となるんだ。ケツが割れて大きな問題が見つかると、結局その問題は ぼくのところまでくるんだ。 そのような誰もが何らかの点で関係してしまっている分散されたサポート システムでは、問題を起こしているであろうコードにごく一部の人だけが アクセスできるという状況にはとてもできないんだ。コードは公開する 必要がある。それは何ら社会的問題によるものではなく、単に誰がその問題を 修正しなくてはならない人物になるかわからないからだ。 なぜぼく達がソースコードを手にしておける必要があるか、その本当の理由は、 全てのカーネル開発者にとってバイナリインタフェースは悪玉でしかないから なんだ。どんなものであれ、利点などないんだよ。 ただもう一つの理由があって、ぼく達は最終的に過激なやり方でカーネル内部を 変更するんだけど、このことは一つの事実へとつながっていく。たとえぼく達が バイナリインタフェースを欲しがったとしても、ぼく達は断じてそうする ことなどできないし、そうすることができたとしたらその後はモノも 修正できず、内部的に行っていることを変更することもできなくなって しまうだろうね。 そしてこれはあなたも他のプロジェクトで見てるだろうけど、そう、彼らが 何らかの理由で、大抵は営利的な理由でバイナリインタフェースを持つことは 基本設計の修正が不可能だということも意味しているんだよ。彼らが 契約するのはバイナリインタフェースだけにとどまらず、そのインタフェースが 思い浮かんだ時点での厳密な設計とも契約することになるんだ。 ここに、安定版 ABI をつくろうとしない2番目に大きな理由があるんだ。 実際それはぼく達が安定した API を保証すらしないことも意味するんだ。 ソースレベルでさえぼく達は言うんだ、「OK、こいつがその API で、もし あんたがこの API を使う外部ドライバを持っていたら、ぼく達は API 変更時に 修正するのを助けてやろう。だけどバージョンを越えて同じ API が動くことは 保証しない」そしてその API は動作しないんだ。 Jim Zemlin: しかし始めから、あなたは明らかにこれらの問題とつき合うことが できてましたよね。 Linus Torvalds: そうだね。すぐにみんながソース API のようなものを使えば、 「おい、そいつはこれ以上コンパイルできないぞ。ここにあるぼくの 外部モジュールはその関数に依存していて、こいつはこれ以上存在しないんだ」 なんて文句を言う人がいても、その点では少なくともそのモジュールを 彼らのために修正することができるんだ。 だからそれはすごく大きな問題ってわけじゃない。それが意味するところは、 外部モジュールをメンテナンスする人は、ソースが入手可能であっても、多くの 異なるバージョンにまたがって修正なしに再コンパイルできるかどうかなんて 予想できないってことなんだ。 Jim Zemlin: なぜあなたはデバイスドライバ(のソース)を公開しないデバイス 製造業者が更に出てくると思うのですか? 誰か犯人がいるのですか? Linus Torvalds: 確かに犯人はいるよ。他のベンダより多くの問題を 抱えるようになってしまったベンダは確かにいる。実際、同じベンダが ある一つの領域でとてもいい仕事をしていながら、別の領域では全然ダメ、 ということも時々ある。 Broadcom はこの一例だよ。彼らはハイエンドギガビットネットワーク デバイスや、有線ネットワークデバイスを扱うときは実際とてもいい仕事を してきた。しかしワイヤレスネットワークやより消費者向けのデバイスを 扱うときだけは、彼らはぼく達を全く助けることができなくなったり、あるいは 助ける気がなくなったりするんだ。 だから、たまに同じ企業が参入する市場によって大きく異なる活動をしたり するんだ。ある市場では Linux が彼らにとって重要でも、別の市場では そうじゃないんだ。 特に台湾のベンダと話したりすると、こうしたハードウェア産業の人達の中には、 文字通り年に何度も何度も自分達のハードウェアを改訂するベンダがいる。 彼らのチップには100の異なるバージョンがあるんだ。彼らには Windows 用 ドライバを作るエンジニアがいるけど、彼らはリソースを持ってない。彼らは Linux コミュニティに参加することができなかったから、ぼく達はたまに問題を 抱えることもある。彼らにとってドキュメントを探すということは本当に難しい ことなんだ。もしかしたらドキュメントは彼らがリリースしたい形式では 内部にさえ存在していないかもしれない。 だから、時には単なる実務上の問題であることもある。ベンダはぼく達を 助けたいと思ってるんだけど、リソースの制約からそうすることができない という場合もある。 Jim Zemlin: Linux が産業でより重要な位置を占め、より多くの人々に 採用されるようになり、それが決定的な理由となって以前は Linux のために 時間がとれなかった企業も今では時間を作らないといけなくなった、そのような 変化に気づいたことはありますか? Linus Torvalds: もちろん変わってきているよ。以前は Linux 開発者が ドライバを書くのを本当に積極的に支援しようとするハードウェア製造業者は とても少なかった。今は少なくとも、ぼくの個人的な感覚では支援しようと しない企業、ドキュメンテーションの提供さえせず、たまに自力でドライバを 書くことすらしない企業は少数派になり始めてるんだ。 まあ、確かに変わってきてはいるものの、特にある領域ではぼくが サポートしてほしいと思ってもサポートされていないというケースが まだあるんだ。 Jim Zemlin: それでは少し話題を変えましょう、多分あなたが心待ちにしてたで あろう、法律の話ですよ。 Linus Torvalds: ああ、法律の話は大好きだよ!(笑) Jim Zemlin: ライセンスについて少し話しましょう。もしかしたら特許も少し 含むかもしれませんが。GPLv3 についてと、あなたにとって GPLv2 が 素晴らしい点を話して下さい。 GPLv3 があなたにとっていい点と言えるところはイメージできますか? Linus Torvalds: ぼくには強い主張があるけど、同時にぼくは……少なくとも とても現実的だと言っておこう。だからぼくは特定のライセンス自体に こだわったりはしない。ぼくはもっともぼくの望みに沿ってくれるライセンスを 選び出す。そして今この点において、バージョン2はバージョン3よりも もっともっとぼく達の望んでいることにマッチしているんだ。 Linux とオープンソースの側と、 FSF とフリーソフトウェアとの間には いつも明確な緊張状態があるんだ。ある程度、Linux はこの分裂をはっきり させたプロジェクトだったんだ。自分達はオープンソースとは大違いである という FSF の主張と、この自由に対する宗教的な信仰の代わりにオープン ソースと Linux が常に技術的優位性を優先してきたこととの間の分裂をね。 GPL バージョン3は FSF の目的を反映し、GPL バージョン2はぼくが ライセンスについてこうあるべきだと考えている形に非常に近い。だから 今現在はカーネルはバージョン2なんだ。 それを変えるようなことが起こると思うかい? ……もしかしたらね。 Jim Zemlin: それはどのようなことでしょうか? Linus Torvalds: そうだね、GPL の非常に大きな利点は、一つのライセンス だったことと、その一つのライセンスのバージョンは基本的にバージョン2 であることだったんだ。それが結果として莫大なソースコードを全て同じ ライセンスの下に置くことになったわけで、基本的に可能な限りコードの いいとこ取り、選択、共有ができるということを意味したんだ。 そしてバージョン3がやってしまったことの一つはこのソースが地盤としている ものを根本から分裂させたことだった。それで今ではあるプロジェクトは バージョン2のみであり、あるプロジェクトはバージョン2かそれ以降であり、 あるプロジェクトはバージョン3以降になっていたりするんだ。 そしてこれは、いま突然ライセンスの問題によってコードの共有ができなく なったかもしれないということを意味するんだ。別に何も新しいことじゃない。 ぼく達にはいつもあることなんだ。ぼく達は既に他のライセンスで 経験していたんだよ。Apache ライセンスの下でライセンスされたコードが あったわけだし、それは GPL バージョン2と互換性がなかったんだ。 [原註:Apache ライセンスは現在 GPL と互換性があり、このようなことは ありません(*)] (*訳注: Apache ライセンス v2.0 は GPLv3 と互換性があるが、GPLv2 とは 互換性がない。http://www.gnu.org/licenses/license-list.html を 参照のこと) だからそれは別に何か新しい問題というわけじゃないんだ。でもライセンスが 一つになれば明らかな利点があるし、ネットワーク効果もある。もっとはっきり 言うと、バージョン3が有用になるかもしれないと思うわずかな理由の一つは、 単にぼく達が本当に重要で価値があると感じている大量の外部コードが バージョン3のライセンスになってしまうからなんだ。そしたらライセンスの 非互換性を避けるためにカーネル開発者達がこう言うのを見れるはずだよ。 「OK。ぼく達はバージョン3に再ライセンスする。バージョン3がより優れた ライセンスだと考えるからじゃなく、そうすることでぼく達にコードが 公開されるからだ」 Jim Zemlin: そうすると基本的にあなたが説明していることは2つの 非常に異なる理由があるけれど結局同じ結論に行き着くということですね。 1つは哲学的理由及び自由についての思想、ここで自由とは権利としての 自由という観点でコードにアクセスできることを意味しますが、そして もう一つは単に実利的な理由ですね。「おい、ぼく達はコードが欲しいんだ。 あっちにこのモデルにあてはまるコードがもっとあるのなら、それはぼく達の 興味を引く価値のあるものだ」 Linus Torvalds: そうだね。だからぼくは Linux のライセンス選択は実利的な 問題から行いたいと強く思ってるんだ。そういった実利的な選択に相伴う理想が はっきりとあるね。でもライセンスはとても重要だから、現実的な問題と同様に あなたの言う思想的な問題も考えなくてはならないと思うんだ。 Jim Zemlin: 多くの時間私は人々と話し、ライセンス周りの問題について あなたにまつわる次のような構図で説明しています。右端ではマイクロソフトの 人達が GPL がいかに危険なライセンスであるかをしゃべっていて、左端では あなたの弁護士が、あなたがライセンスを調査するのにどのくらいの時間を 費やす必要があるかを話している、という構図です。彼らはあなたのために 喜んでそんなサービスを提供してくれます。 本当の答えは何なのでしょう? ライセンスすることは何らかの大きなリスク なのでしょうか? 私有ソフトウェアライセンス(*)に比べてより多くの問題が 生じるのですか? (*訳注 『フリーソフトウェアと自由な社会』 (Richard M. Stallman 著、長尾高弘 訳) [アスキー] p.29訳注 に従い、 proprietary software を「私有ソフトウェア」とした) Linus Torvalds: ぼくは個人的にライセンスの選択は本当に、本当に重要だと思ってる。 ぼくにとってコードをリリースする著作者のライセンス選択は、コードに限らず 何でもそうだけど、ほぼ神聖なんだ。それは、もし誰かが何か標準になりそうな 本当に面白いものを思いついたら、それがどのように使われるかを選択するのは その人次第なんだ。選択する理由も含めてね。明らかに、そもそもの著作権が 存在する理由としてより大きな善の問題があるべきなんだ。 とはいえ、それは個人的選択だから、個人や企業が一旦その事柄について選択を 行ったら、彼らがどうしてそうしたか、そうしなかったかといった議論を始める 理由などあまりないと思うし、「おい、こっちのライセンスの方が他の ライセンスよりいいぜ」などと言う理由だってあまりないと思う。 それは単にそれ以上関係が無いと思う。 Jim Zemlin: 少しあなたを困らせる質問をしますね。個人の選択という考えと、 ライセンスについての質問です。カーネルの観点からすると、それは多くの 人々の間で為されたひとつの個人的選択ということでいいんですよね? Linus Torvalds: そうだね、ある意味それはたった一人の個人的選択として 始まったんだ。すなわち Linus Torvalds: Jim Zemlin:「ぼくだ」「あなただ」 そして一旦プロジェクトを抱えると、それは誰かが新しいプロジェクトを 始めるのとは違うんだ。一旦プロジェクトを持ったら、その選択はおおかた 変化する。最初の選択は「どのライセンスを選ぶか?」というものだ。一旦 その点を通過すれば、次の選択はこうなるんだ。「ぼくはプロジェクトの一員で ありたいのか? そのうえでぼくはこのライセンスが選ばれたことについて 考えることに参加したいのか?」 そしてもうライセンスを選択しないのであれば、次は参加するプロジェクトを 選択するんだ。それは依然として個人的な選択ではあるけれど、しかし全く 異なる個人的選択なんだ。 Jim Zemlin: するとその観点からは、広範なカーネルコミュニティ、すなわち ライセンスの選択を変更するときに対象となる参加者達への義務があるので しょうか、それとも……。 Linus Torvalds: 単なる義務じゃなくて、法的要求なんだ。ぼくにはもう 自分自身でライセンスを変更することができない。なぜならぼくはこの 15年間に渡ってぼくの最初の選択である GPL バージョン2を受け入れてくれた 人達のコードを受け入れてきたから、ぼくはそういった人達の選択に倫理的に 縛られているだけじゃなく、実際は法的にも縛られているんだ。 ぼくには「おい、今からライセンスを別のライセンスに変えるぞ」なんて 言えないよ。多くの人が開発に参加しぼくにパッチを送ってくれて、彼らは 未だ実際にそれらのパッチや修正物の著作権者なんだ。もしぼく達が現実に GPL バージョン3に変えたくなっても、それは他のライセンスに変更することと 何ら違いはないんだ。理論上は、人々が「おい、ぼく達はBSDライセンスに 変えたいんだ」と決めることも、またはぼく達が別のライセンスに変えたいと 思うことも可能だ。 でも現実には、そうなった場合に著作権者全員が完全に同意しなきゃならない し、もし同意しない人がいれば、その人達のコードを書き直す必要があるんだ。 だから現実にそうなることはないと思うよ。GPL バージョン3への移行はまだ 可能性があるけど、それは単に最初バージョン2以降から始めた人の方が見つけ やすいというだけのことだ。彼らはいつも暗黙のうちにバージョン3を受け 入れてしまうんだ。 もしくはこう言う人もいるかもね、「おい、ぼくはバージョン2を受け入れた。 バージョン3はそう大きな変更がないから、ぼくはそれも受け入れるぞ」 Jim Zemlin: あなたは、法や道徳的意味のリーダーとしての役割を演じている ように感じますか? それは言わば自分の個人的な判断を人を導く助けとしてる ということも含みますが。 Linus Torvalds: 確かにそうだね。そしてそれがGPLバージョン3のリリース前の 全てのドラフトに対し思い切って意見を言った理由の一つなんだ。カーネル コミュニティのリーダーとしてぼくの立場からの言葉を期待している人達に、 ぼくがドラフトに満足していないことを伝えたかっただけじゃなく、その理由 まで説明したかったんだ。多分みんなに問題を理解させたかったんだろうね。 組み込み系の人達がバージョン3の Tivo-ization の条項に本当にうんざり していることを。 (*訳注 Tivo-ization: コンピュータを持つ製品等で、内部のプログラムが 書き換えられると動作しなくなるような機能を組み込むことでプログラムの 修正を事実上不可能にすること。 これによりソースが公開されていても 誰もプログラムを修正することができなくなる。GPLv3 ではこういった 抜け道を排除するための条項がある。) そして彼らもコミュニティの一部で、またコミュニティという言葉を使った けど、バージョン番号が増えたからといって自動的によりよいライセンスである ことを意味するとは限らない、というだけのことじゃないんだ。 (PartIIへ続く)