納得のいかない Torvalds 氏、Icaza 氏の主張に言い返す 72
ストーリー by reo
クックロビン音頭 部門より
クックロビン音頭 部門より
danceman 曰く、
/.J 記事でも話題になった GNOME プロジェクトの Miguel de Icaza 氏のブログ記事に対して Linus Torvalds 氏がお怒りの模様 (ITWire.com の記事、本家 /. 記事より) 。
Torvalds 氏がお怒りなのは Icaza 氏の記事の「リーナスは下位層であるカーネルの人だが、何年も前に彼がデバイスドライバのバイナリ互換性を捨てたとき、我々のコミュニティの空気を決定づけた。カーネルの人たちにはそれについて正当な理由があるだろうし、Linux 業界に自分たちのルールに従うよう強制したかもしれないが、デスクトップの人たちはカーネルの人たちのような力がなかった。それでも我々はその姿勢を貫いた。」(yomoyomo 氏による訳) という部分。
Sriram Ramkrishna 氏の Google+ のコメント欄で Torvalds 曰く「GNOME 開発者達が、私の決めた『姿勢』のせいで彼らを悩ます問題が引き起こされたって主張しているようだけど、笑っちゃうね。GNOME の開発者達がカーネルの本当のルールを理解してくれていることを願うよ、『外部インターフェイスは決して壊さない』ってことをね。『改善するためにそうしなきゃならない』というのは言い訳にならない」「彼らは人のせいにするんだ。自分達以外の人なら誰それ構わずにね」とのこと。
そりゃ怒るだろ (スコア:5, すばらしい洞察)
そもそもサウンド云々に関して言うなら。
俺もかれこれ10年以上使ってるけど、サウンド関連でつまづいたのはSoundBlasterだけ。
これはそもそもドライバ自体が取り込まれたのがわりと最近(7~8年くらい前だっけ)だから致し方ない。
むしろその他のサウンドカード、あるいはサウンドチップはOSSでも普通に認識された。
確かに2.6以前はALSAを自分で入れる必要があったり、OSSがわりとクソだったりもした。
だけど現行ALSA(1.0~)でさえ、OSSのエミュレートは勿論、古いALSAのAPIも完備してる。
むしろEsounDだ、PalseAudioだ、Jackだ、aRTsだ何だと、未だに散々グダグダやってるのが、こないだボヤいてた開発者連中。
自分らで好き勝手風呂敷広げるだけ広げて放置プレイしてるんだからマジどうしようもない。
奴等の頭には、ALSAのエミュレートや古いALSAの互換APIみたいな至れり尽くせりは存在しない。
作るだけ作って飽きたら放置。しかも何から何まで全てが非互換。
そりゃハルパゴスさんでなくたって「ば~~~~~~かじゃねぇの?」って言うわ。
そりゃFlashだってアホなラッパーアプリ群スルーして直にALSA呼ぶわ。
むしろAdobeやOracle見習ってALSAを直で使っとけ。
ひとつに決められもしねえアプリばっか量産すんな。
Re:そりゃ怒るだろ (スコア:2)
>ALSAのエミュレートや古いALSAの互換APIみたいな至れり尽くせりは存在しない。
ご存知なのかもしれませんがPulseAudioはアプリケーションのAlsaに対する出力をフックして
PulseAudio経由で出力できますよ。PulseAudioを全面採用したUbuntuではデフォルトの設定が
そうなっているので、設定を変えない限りAlsaに出力しているつもりでもPulseAudioがフックして
ます。aplayのようなプレーヤーを使ってdefaultデバイスに出力するとPulseAudioのCPU消費が
上昇することで確認できますね。Flashも同じで、言い換えるとUbuntuのデフォルトの設定では
Alsaに対して直接に出力されることはありません。
PulseAudioはCPU負荷が異様に高いのが難点だと思ってますが、仕組み自体はそこそこうまく
機能していて、たとえばサンプリングレートが異なるデータをAlsaに対して再生しても、PulseAudio
がフックしてレート変換を行い、他のアプリのサウンドとミックスして出力するので、オーディオが
破綻しないというのを上手く実現してます。
Alsa mixerなんかをうまく設定してやることで、似たようなことは実現できなくもないけれども
設定が面倒だったりもしますからね。
おっしゃるように、LinuxではEsounDなど多数のサウンドレイヤーがあり、そのAPIが統一されない
ことからAlsaに対して出力するアプリケーションが多数を占めます。PulseAudioの横取り方式は
苦肉の策でもあって、あまり綺麗なやり方ではないかもしれません。
ただ、サウンドに関してはWindowsでもゆらぎがあるところで、DirectSoundがWindows 7で廃止された
といった動きがあるところなので、Linuxに限らず鬼門かな、という感じでしょう。
Re:そりゃ怒るだろ (スコア:1)
au by Linus (スコア:0)
Hello, this is Linus Torvalds and I pronounce Linux as 'Linux'.
Re: (スコア:0)
なつかしい!これでLinuxの読み方について社内の論争に決着がついてたなー。
Re: (スコア:0)
Debian で、3.0kernelに入れ替えたら音が出なくなったんだが、alsa以外uninstallしてみるか…。
# あと、consoleがおかしくてsuspend-resume後操作不能になるとか、いらん苦労はいろいろしている。
偏向がみえみえ (スコア:2)
> 納得のいかない...
なんだこのバイアスのかかったタイトル。
ユーザーにとってはどっちもどっち (スコア:2)
Linusさんの意見に同調する人が多いようだけど、ユーザーの立場からすればどちらも余り変わらない
って話はあります。
カーネルモジュールはバイナリは無論のこと、ソースレベルでも後方互換性が保証されていないので、
メンテナがいなくなったデバイスとか、ツリーに入ってないようなデバイスモのジュールはユーザーが
ソースをいじるとかして新たなカーネルに対応させる必要がある。一般のユーザーにとっては、いつ何時
お気に入りのハードが使えなくなるかわからない状況。
Windowsが、一部のデバドラに関してはXP以降のバイナリがWindows 7でも使えるのとは対照的ですね。
カーネルランドにはLinusさんという帝王がいて、ユーザーランドは群雄割拠の状態として、ユーザー国の
ある領主が「我が国の朝令暮改の方針は大国カーネル国に習ったものである」と言い訳をしたのに
対して、カーネル国の帝王が「ユーザー国の国民に手出ししたことはない我が国のせいにするな!」
とか、例えがいまいちだけど、そんな感じ。
Re:ユーザーにとってはどっちもどっち (スコア:2)
よくあるのは、ツリーに入れられていないデバイスで手間がかかることですね。たとえばRealtekは
自前でLinux向けのドライバのソースを公開してくれている割りと偉い優良会社ですが、その一部
しかバニラのツリーに入れられてないんですね。
Realtekは頑張ってカーネルのバージョンに追随してくれているけど対応は遅れるので、カーネルの
バージョンが上がるとコンパイルできなくなったりするので、エラーメッセージを見てエラー出してる
関数をググってカーネルのML見てどう変えられたか調べて書き換えて……という一連の作業が
必要になる。
Windowsを礼賛してるつもりはないですよ。Windowsはプロプラでソース非公開だからバイナリ互換を
無理にでも保たなければならない。その歪みがありますからね。
Linuxではソースがあれば対応が可能なのだから、まだマシなのだというのは確かです。
でも、対応できない人は対応できないのでユーザーからすれば、Windowsの方がマシというケースは
あるわけですよね。Linusさんにしても、GNOMEにしても開発者目線でしか語れないという点では
どっちもどっちかなと。
最近 (スコア:1)
Linus氏って怒ってばっかりいるような気がする。
# エアコンの壊れた車に乗って、渋滞にはまってしまわないように祈らなくては...
Re:最近 (スコア:1)
> Linus氏って怒ってばっかりいるような気がする。
わりと同感なんだけど、この件に関してはLinusが正しいよ。
デバイスドライバのバイナリ互換性を壊さないように頑張って維持してるのに、
誤解から「デバイスドライバのバイナリ互換性を捨てた」なんて書かれたら、
そりゃ怒るでしょ。
Re:最近 (スコア:1)
Re: (スコア:0)
これだけの規模と期間を維持しながらよく投げ出してないなと思うよ。
ちょっと人間性に問題のあるやつだったら、文字通り「とっくに終わってる」
と思う。
Re:最近 (スコア:2)
今回みたいに、時々、ブチ切れる事でストレス解消するのが、長続きする秘訣じゃないかな?
Re:最近 (スコア:1)
逆に、ほんの少しだけ人間性に問題があるから上手くやれてる気がする。
真面目なだけじゃ、ノイジーな外圧に負けてグダグダになりそう。
Re: (スコア:0)
まあ、普通に考えて代わりのいない人材だわな。
並大抵のことじゃない。
Re: (スコア:0)
普通の言動のときは記事になってないだけじゃないのか・・・
くっそ、わけがわからねぇ。 (スコア:1)
ミゲル「デスクトップが変わるたびにアプリが動かなくなるのは古いデバドラを切り捨てるカーネル開発者と同じ文化なんだよ」
ライナス「デバドラ変えてもAPIは共通して提供してんだろ何言ってんの?」
で合ってる?
問題はデスクトップ環境を変えるとアプリの互換性が無くなることなのか?
ドライバは関係ないよな?
あとGTK3出たのと関係あるのかなこの話は。
Re:くっそ、わけがわからねぇ。 (スコア:4, 参考になる)
> ミゲル「デスクトップが変わるたびにアプリが動かなくなるのは古いデバドラを切り捨てるカーネル開発者と同じ文化なんだよ」
> ライナス「デバドラ変えてもAPIは共通して提供してんだろ何言ってんの?」
>
> で合ってる?
だいたい合ってる。
正確にはAPI(ソース互換性)というよりはABI(バイナリ互換性)の維持の方を指していると思うけど。
Miguel は勘違いしてる。
> ドライバは関係ないよな?
関係ない。 Miguel の根拠のない言いがかり。
Re: (スコア:0)
一番の勘違いのポイントは、自分達が最善の方針を決定を出来なかったことを他人のせいにしてるとこだよな。
なんのためのOSSかっての。
そのくせ今のやり方がうまく行かないのはLinusのような強制力が無かったからってw
やれやれ ┐(´∀`)┌
Re:くっそ、わけがわからねぇ。 (スコア:1)
なんというか、GTKは互換性をあまり重視してないと思う。いや、GTKも本道はしっかりしてるんだけれど、GTKアプリ、これが良くない。GNOMEって一口にいっても
かなりの数のプロジェクト集積なわけで、イラっと来ることがたまにある。
GTKとQt(他多数)の実装が完全に独立しているのは結構な事だと思うが、車輪の再発明が多いのも事実。もう1個上のレイヤでデスクトップ共通のAPIを決めてくれた方がいろんな人にとって便利になると思うんだけどね。
Re:くっそ、わけがわからねぇ。 (スコア:3)
>GTKとQt(他多数)の実装が完全に独立しているのは結構な事だと思うが、車輪の再発明が多いのも事実。もう1個上のレイヤでデスクトップ共通のAPI
共通化は http://www.freedesktop.org/wiki/ [freedesktop.org] で行われていますよ.
まさにもう一個上のレイヤを整備していて,
たとえばプロセス間通信のライブラリ dbus とか描画ライブラリの cairo を提供しています.
http://cgit.freedesktop.org/ [freedesktop.org] にパッケージの一覧がありますが,
Linux/BSD を使っている人なら見たことあるパッケージが沢山あると思います.
Re: (スコア:0)
APIなんかに頼るのが間違いで、プロセス間メッセージにしよう、ってのがdbusなんじゃないの?
Re:くっそ、わけがわからねぇ。 (スコア:2)
> プロセス間メッセージ
使用するメッセージの種類や用法について
API と同様に互換性問題が発生する。
Re: (スコア:0)
それ自身が非互換な再実装の一例
みんな覚えてるか? (スコア:1)
GNOMEってさGNUプロジェクトなんだよ。
誤解のうえ (スコア:1)
たとえ他(ここでは下位層)の互換性がなくても、(より上位である)アプリで互換性なくしていい理由にはならんだろ
維持しにくいにしても、もうちょっとどうにかしてから文句いやいいのに...
きっとGTKに依存するアプリよりMonoで動く.NETアプリのほうが流用きくんじゃなかろうか、と思ってしまうな。
M-FalconSky (暑いか寒い)
linuxって意外とバイナリ互換性高い (スコア:0)
デバイスドライバのバイナリ互換性はどうかしらないけど、通常のプログラムのバイナリ互換性はかなり高い。もちろんちゃんと互換性を意識してないとダメだけど。
10年前に作られた某社のバイナリの課金プログラムが CentOS 6.3 でもバッチリ動く。動作させるには互換ライブラリを入れる必要があった。
Re:linuxって意外とバイナリ互換性高い (スコア:1)
ABI は問題ないなくても、その上で動く動的リンクのライブラリ管理に問題があったりします。
これは kernel じゃなくてディストリビューションの問題と言うことなんだけど、同じライブラリの世代番号のまま中身が違ってたりするものだから、リンクエラーや動作の違いが生じたりする理由です。
バイナリを静的リンクすれば、そういう問題に影響されないのですが、こんどは図体がでかくなっちゃうしね。 いろいろなディストリビューションで動作する共通のバイナリを作るのはなかなか大変だった…と言う苦労をしたのはもう10年も前の話なのですが、今でもあまり変ってなさげですね。
の
Re:linuxって意外とバイナリ互換性高い (スコア:1)
動的リンクライブラリ(so/DLL、以後DLL)は「上手に使えば」凄く良いものですが上手に使うのが凄く難しい気がします…基本的にキライ
完全に固まった(枯れた)ものを整理して使うには良いですが絶え間なく変わっていくものに使うとバージョン管理地獄か実は中身が非互換地獄か、DLL HELLが待っているわけで
「完成するまでDLLにするな、DLLにしたら触るな」と言いたいのですが、そうするといつまでたってもDLLにできないとか
Re:linuxって意外とバイナリ互換性高い (スコア:2)
だから動いたところでアプリ~OSまでまるごとVMの上で動かせばいいのに…
Re:linuxって意外とバイナリ互換性高い (スコア:2)
で、VM の実行環境のほうではどうすんの?
Re: (スコア:0)
わかった。
アプリを起動したら開発者のマシンで実行されて結果が返ってくるというのはどうだ?
Re:linuxって意外とバイナリ互換性高い (スコア:1)
Re: (スコア:0)
プログラムに必要なライブラリも一緒のディレクトリに入れておけばいい。
LD_LIBRARY_PATH=./ ./foo
クローズドソースなプログラムは大抵これで済む。オープンソースならプロジェクトが生きている間なら自前でビルドできる。
Re: (スコア:0)
下手に静的リンクしたり配布物に添付された.soを使われるとライブラリにバグやセキュリティホールが見つかったときに差し替えが難しい。
Re: (スコア:0)
それともあるのかな?
まぁ、Windowsらしくわかりづらいし、あまり美しくはない解決策ではあるけれども。
Re:linuxって意外とバイナリ互換性高い (スコア:2)
Re: (スコア:0)
>LinuxにもWin Side-by-Sideみたいなのがあればいいのにね。
勘弁してくれ。あれはdll hellがmanifest hellになっただけだ。MSですらVS2010からCRTは昔のDLLに戻したというのに。
もちつけ (スコア:0)
待て待て.きっと,このMiguelは過去からタイムスリップしてきたMiguelなんだよ.
サウンドドライバ?あぁ,ありゃ大変だよ.Linuxで音を鳴らすなんて考えない方が良いよ.
え,バイナリの互換性?だからさ,a.outからELFに移行したのは,ちゃんとした理由があったんだってば.しょうがないじゃん.
#…という時代を知っている年寄りがどの程度いることやら.
##ちなみにオレはそういう喧騒を横目に見ていたFreeBSDユーザだったなぁ.ちなみに今はCygwinユーザ.
Re: (スコア:0)
Re: (スコア:0)
俺は過去からタイムスリップしてきたMiguelと同じ世代なんだが、今はLinusと同じ下層の連中が揃ってシコシコとデバドラを書いてるのか?
今の時代はPuppy LinuxのLive CD動かすと、どのマシンでも起動したとたんにワンワン吠えるのが不思議でならない
タイムスリップする前はLinuxで音を出すのは大変で、情報公開しないXXのサウンドボードは4Frontではサポートされないとか面倒くさくってたまらなかったのだが
独り言 (スコア:0)
Windows 8 の 新しい UI をC言語で簡単に記述できる API を作るのが吉と思ふ。
Re: (スコア:0)
誰がそんな苦行を好んでやるんだ
Re: (スコア:0)
そんなレトロ脳の御仁はメトロなんか使わず素直にWin1.0を使うのが吉と思ふ。
だれかグラフィックAPIの決定版作って... (スコア:0)
GTK以前に
X Window System の層もういらんだろ。
誰か、彼岸に送ってやってくれ。
でもこのグタグタじゃGTKの線はないんだろうな。
むしろAndroidみたいに仮想マシンレイヤーかWebがグラフィックAPI層になるのか?
Re:だれかグラフィックAPIの決定版作って... (スコア:2)
C的な移植性を維持するならOpenGL ESくらいですかねぇ...
M-FalconSky (暑いか寒い)
サードパーティ開発者のエコシステム (スコア:0)
まあ「誰が悪い」「どうしてこうなった」はいろいろあるとは思うけど、この言説が一番大事なことだと思うけどな。
> デスクトップ分野で Linux をターゲットとしようとするサードパーティの開発者のエコシステムを殺した。
なんだかんだで結果的に「育たなかった」ということなんだろ。
さいわいトレンドは移り変わるんで、デスクトップの次でなんとか… …ということもありえるんじゃなかろうか。
私はもろもろの事情でまだまだデスクトップ分野に留まる。ミゲルよ、これを言って慰めになるかどうかはわからないが、
Windowsの方もデスクトップ分野については雲行きが少し怪しい…かも。 わははっ
Re:サードパーティ開発者のエコシステム (スコア:3)
Re:サードパーティ開発者のエコシステム (スコア:2)
FHSやらautoconfって過去の遺物なんでしたっけ?
ディストリビューションを意識する必要性ってなんか有ったかな?