OpenBSDの革新に迫る!今注目の技術とは?
引用元:https://news.ycombinator.com/item?id=43143777
OpenBSD財団は約38万ドルを集めたかも。OpenSSHを作ったり、フォーチュン500の企業が使ってるから、毎年1、2百万ドルは入るべきだと思う。そろそろ企業も恩返しすべきだね。それと、ハードウェアベンダーもソースを公開すべきだ。特にNvidiaに注目。
財団が仕事をしてるわけじゃなく、開発者がやってるんだよ。あの予算では、財団は事務的なサポートに過ぎない。もちろん、多くの開発者が両方のフォーチュン500企業に雇われてるけど。オープンソースは、業界に埋め込まれた開発者が協力してコードを共有する実用的な仕組みで、これまでうまくいってるんだ。
ダミアン・ミラーがOpenSSHに多くの時間を費やしてるのはGoogleに雇われてるからだ。キーメンバーを雇うことが業界のOSSへのサポートなんだ。でも、これって確認バイアスじゃない?オープンソースライブラリが一人の暇な人に維持されて、そいつが暇がなくなったら困ることはよく聞く話だよ。
確かにお金をもらわない開発者もいるけど、そんなに危機的な状況じゃない気がする。OSSの開発者がまともな職についてるのを過小評価してない?もちろん、もっとお金をもらいたい個人はいるだろうけど。
XZのバックドアは、主な開発者が過労で燃え尽きたから起きたんだ。OSSの分野では同じようなことがよく起こるし、重要じゃないプロジェクトでそうなりがち。AFAIK、HeartbleedもOpenSSLで何年も気づかれなかったのは、誰もフルタイムでそれを見てなかったからだよ。
OpenBSD財団は約500万ドルを集め、その半分は使われた。昔ほど透明性はないと思う。Nvidiaのサポートについて言及したけど、他の人はより良いファイルシステムやWi-Fiを期待してる。
あなたが言った約500万ドルって、実際にはそんな金額を集めてないけど?最初の情報源が必要だよ。
あなたの2つ目の段落は、オープンソースがうまく機能しない理由を説明してるね。ほとんどのプログラミング仕事を間接的に奪ってるし、みんながlibjpeg使うからJPEGデコーダーを作るためにお金をもらうことはない。いいオープンソースソリューションがあれば、最終的には商用の提供物よりも競争に勝つよ。
「オープンソースがうまくいかない」ってどういうこと?組織的にも技術的にも成功してる方法だよ。それに、事務的なソフトウェアがなくなったら、プログラミングの仕事は増えるだろうし、実際にはプログラミングの職が不足してるわけではない。
確かに技術的には印象的なオープンソースプロジェクトはある。でもそれらは例外で、多くはただの趣味でやってる人の作品なんだ。つまらない作業が必要な技術的なパッケージは無視されがちだし、プログラミングの仕事は減ってる。
オープンソースはプログラミングの仕事を減らすと思うんだ。JPEGデコーダーのようなものはもう誰も作らないし、libjpegを使えばいいからね。理想は全ソフトがオープンソースで、プログラマーがみんなのために改善作業に専念できること。でも、どうやってその人たちを報酬で賄うかが問題だ。オープンソースは誰でも使える公共財だから、公的資金で支援すべきだという意見もあるけど、政府が資源の配分をうまくできるとは思えない。民間もあまりうまくやれてないし、広告を見せるためにリソースを注いでる状況が続いてる。
著作権の期間をもっと短くするのが解決策じゃない?最初はクローズドソースで開発コストを回収したら、著作権期間が切れたら自動的にオープンにするってのはどうかと思う。新しいリリースはまだクローズドでもいいし、収入は続くしさ。期間は5〜10年くらいに設定すればいいんじゃないかな。
クローズドソースでやりたいプロジェクトには通用しないんじゃない?ソースを公開しなければいいわけで、10年後にバイナリーをコピーしてもあまり意味がない気がする。オープンソースにしたい場合は、すでにそのライセンスを使えるしね。
それって代替手段を妨げるよね。長期的には悪影響が出ると思う。代替手段が別の調査や開発の道を開くから、どんどん同じようなものしか改善されないのは良くない。
あなたの言う2番目の段落は、オープンソースが機能しない理由を完璧に説明してるよ。アマチュアが無料でやるプロジェクトだと思ってるみたいだけど、実際はFOSSを作ってるのはIBMやIntel、Oracleといった企業で、彼らは決して無料では働いてないんだ。
彼らは開発コストを削減しながら、効率的にやってるんだよ。BSDがSonyやAppleからどれくらい恩恵を受けていると思う?ほんのわずかだと思う。clangはもともとGoogleやAppleが開発したコンパイラだから、自分たちのために法的拘束力のない状況で利用できるようにするために作られたんだ。
clangの開発資金がほぼ完全にGoogleとAppleによるものだったから、ボランティアから利益を得ようとするなら、彼らはかなり悪い判断をしたってことになるよ。
彼らはGCCやGPL、特に当時新しかったGPL3に対して、何も返さないことを狙っていたんだよ。それがclangが成熟してから、GCCを排除した理由だしね。最初はApple、次にGoogleが約1年後にやった。今ではAppleのclangはcppreferenceに独自のページがあるし、GoogleはCarbon/Rust/Goに注力している。
AppleがGPL3.0を避けることが目標だったのはわかる。逆に言えば、何も返さないことが目標なら、彼らは失敗したことになる。ただ、自分たちのプロプライエタリなソフトウェアを持つことも可能だったのに、わざわざボランティアに頼ったわけじゃないよ。ISOコンプライアンスに注目しすぎじゃない?ユーザーはコンパイラの他の機能にもっと関心があると思うよ。
重要なのは、clangの近代化にどれだけの努力を注いでいるかで、GitHubは誰が何を貢献したか把握するためにあるからね。また、clangは利益を得る側の一例に過ぎないよ。多くのPhD学生がLLMVやMLIRに貢献しているし。
トップの貢献者を見ると,ほとんどがホームレスのPhD学生じゃないのは予想通り。大手の人たちはAppleやGoogle,RedHat,SiFive,Sonyなどで働いてたりした人が多い。君は実際に調べたの?それとも自分の憶測を広めてるの?オープンソースプロジェクトがうまくいくのは多くの貢献者のおかげだと思ってる?私は違うと思うよ。実際,こういうPhD学生は商業企業の成果物を使って自分の研究を進めることが多いからね。 そんなPhD学生たちを強制してやらせてるわけじゃないから。 >誰も新しいカーネルを書くためにお金はもらってない,だってみんなLinuxを使えるから。君の言いたいことを否定するわけじゃないが,Zircon(Google Fuschiaのカーネル)を書くためにお金をもらってる人がたくさんいるってこと,知ってる? 残念ながら,進展は見られない。Android ThingsやTangoとは違う未来を見られるのかどうか,まだ分からないね。Nest Hubでの実績は知ってるけど。 彼らは役に立たないおもちゃを書くためにお金をもらってるだけで,役立つコードを書いてる人たちはお金をもらってないのか。 もし毎回すべてのコードをゼロから書かなきゃならなかったら,コンピュータサイエンスはほとんど進化してなくて,こんなにメジャーにもなってないよ。 コンピュータサイエンスは,ほとんどの人がコンピュータを持っていない時代に進化した。コンパイラやOS,データベース,ファイルシステム,コンピュータグラフィックスの概念は,60年代から90年代初頭にかけて進化したんだ。 その頃は,人々が有用なソフトウェアのソースを自由に共有してたのは確かだよ。その時はまだ“オープンソース”とかの派手な用語はなかった,ただの常識だったから。 コミュニティに自由に寛大に提供する時は,何も返ってこないことを期待せずにすべきだよ。期待が叶うこともあるけどね。 彼らはOpenBSDの期待を語ってるわけじゃない,無償の負担を利用してる企業の倫理についてなんだよ。 オープンソースソフトウェアってのは自由に使ったり、変えたり、再配布したり、売ったりできるものなんだが、それを受け取って何も返さないことに対する倫理的な負債があるみたいに言うのが変だと思う。自分の倫理観を大事にするのはいいけど、無償の贈り物をもらった人が悪いわけじゃないだろ。 法律的には使っても自由だけど、倫理的な義務は文化によって違うよね。ただし、裕福な人が共有資源を自由に使ってしまうのは一般的に倫理的に良くないとされる。 共有資源を減らすのはみんなにダメージを与えることだよね。友達の好意を受け入れて返さないのは、その人の時間やリソースを奪うことになる。無料サンプルを多く取ると、次の人は利用できなくなるし、オープンソースのGitHubリポジトリをダウンロードすることでMicrosoftのお金を無駄にしてるんだ。 たしかにMicrosoftは自分たちの戦略を考えてGitHubを買ったし、オープンソース市場をつかむのはビジネスモデルの一部なんだ。でも、友達の好意に対しては、特別に返さなくても、誰か他の人を助ければいいんだよ。 実際、多くの文化では、全てを受け取って返さないことが悪いとはされないよね。アメリカの現代文化では契約で強制される分だけ返すことが良いとされる傾向があるが、フリーライダーって表現にはマイナスイメージがある。 倫理は資本主義には属してないんだよ。中心になるのはお金で、倫理じゃない。 企業には倫理なんてない。利益を出すことが唯一の目的だから。 スーパーマーケットや家主、電気や水道会社にも同じくらいの寛大さがあればいいのにと思うよ。 もし営業に力を入れれば、簡単に数百万稼げるはずだけど、そうしないことが問題だ。 John Ioannidisが数週間前に亡くなったと聞いたけど、みんなあんまり気にしてないみたいだね。彼はMobile IPの基盤を作ったんだって。 教えてくれてありがとう。Johnを知ってたなら、俺の気持ちを受け取ってくれ。毎日彼が作ったものを使ってるから。 彼の死を知らなかった!教えてくれてありがとう。RIP John :( privdropやprivsepの設計だけじゃなく、最近のmimmutable(Linuxも一部実装中)もすごい。OpenBSDで多くのプログラムの静的アドレス空間は自動的に不変になる。 ARMの実行専用メモリは危険じゃない?LinuxやmacOSはそれをブロックしてるし、OpenBSDもそうすべきだと思う。 なんで?OpenBSDはユーザ空間の実行専用メモリが大事だと思ってるみたい。SMAPの恩恵で早期にバグを修正できたのに。 実行専用メモリはどうやって特権アクセスを無効にするんだ?オーバーヘッドが心配だし、ハードウェアが許可してくれないと厳しいよ。 同じテーマのすごいリソースがあるよ: https://isopenbsdsecu.re/mitigations/ これいいね。見た目はピエロの鼻みたいだけど、実際はオープンBSDのデザインに敬意を表してる。 OpenBSDは「独裁者によるデザイン」の良い例だから、考え抜かれてるんだよね。他のOSはチームの存在理由を正当化するために余計な機能が多すぎる。 macOSのどの機能のこと言ってるの? 名前をIOMasterPortからIOMainPortに変えるだけで、Appleの無茶苦茶さを思い知らされるよな。 この文書は全体的に辛辣だけどmallocの実装やatexitの強化みたいには優秀なとこもあるんだよな。OpenBSDポートの作業したことあるけど、好きなんだよね。でも、完璧じゃないってことも分かってる。 パフィーのピエロの鼻以外はリアルな評価だし、批判ばかりじゃないんだよな。 いくつかの対策にはポジティブな評価もあるよ。 確かに、pledgeは好き。でもOpenBSDがeBPFもやってほしいな。 限られたリソースなのかも。あの規模のプロジェクトで、LinuxやApple、Google、Microsoftのリソースに対抗するのは大変だと思う。高品質のコードとセキュリティを目指してるけど、ちょっと変わったアプローチが必要なのかもな。 これはちょっと心配だな。 古いFUDだな。OpenBSDのMozillaポートのメンテナは安定版に更新やバックポートをしてるし、Torブラウザもちゃんと更新されてるよ。 ランダムデータメモリは、変数を読み込み時にランダムなバイト値で初期化する機能で、OpenBSD 5.3で実装されたものだよ。この用途は何なの? いろいろ使われてるよ。たとえば、retguardは関数ごとのランダムクッキーにこれを使ってるし、ブートローダーもこのメカニズムでカーネルにデータを渡してるんだ。 まあ、たまにデフォルトの値のままでうまくいくこともあるから、初期化を忘れたら問題になるってことだね。 未初期化のローカル変数を使ったら、プログラムを利用した攻撃ができなくなるんじゃないかな。 pledgeやunveilがこのページにもっと目立って取り上げられてなくて驚いたな。 pledgeやunveilに関する記事を読んで感心したけど、OpenBSD以外で大きな影響を与えてる感じはしないな。OpenBSDのCSPRNGが他で実装されるのに20年かかったから、同じような時間をかけるかもね。 これはSECCOMPを使ったLinuxの代替で、事前コンパイルされたバイナリの制限にも使えるみたい。 私たちも影響を受けて、nanosユニキernelに実装したよ。素晴らしいアイデアだと思ったから。 これが現代のシステムのサンドボックスのやり方だよね。 日付順に並んでいるけど、もう少し説明があればいいのに。 何か分かってない気がするけど、pledge/unveilのアプローチは難解だと思う。なんでプログラムが許可するsyscallやファイルパスを設定するのを期待するの?自分で適切な権限を設定すると信じる理由は?それはプログラム外で設定されるべきで、Dockerみたいにファイルシステムボリュームをマッピングしたり、能力を追加するようにすべきだと思う。BSDに詳しくないし、好奇心で2回ぐらい使っただけだけど、何を見逃してる? 脅威のベクトルはプログラムを信じないことじゃないし、pledge/unveilはそれに適してない。動いてる最中にプログラムが侵害されることを心配してるんだ。プログラムはファイルにアクセスが必要な起動状態と、必要ない動作状態があるから、pledge/unveilはアクセスが不要になったことをOSに伝える仕組みだと思う。もう死ぬのかな。 なんでプログラムがallowed syscallsやファイルパスを設定するのを期待するの?複雑なプログラムが何を必要として、いつ権限を落としても安全か、管理者やオーナーはほとんど知らないから。データベースが特別なバックアップのためのスナップショットを取るとか、プログラマが必要なパーミッションを知ってることもあるから、起動前に一度だけ権限を設定できないのさ。 これもいいリソースだよ: https://why-openbsd.rocks/ ISO C11の_MyThread_local、実装された?オープンBSDにソフトウェア移植時の一番の面倒なことなんだ。ネイティブスレッドローカルストレージに未対応の主要なOSってのはこれが最初だったから。 システムclangは-femulated-tlsでサポートしてると思うよ。 それやってダメだった気がするけど、少なくとも2年前だったから、再試行するのもありかも。エミュレートされたTLSもどっちみちあまり良くないし。 この仕事を実際にサポートしたい人は、こちらへ: https://www.openbsdfoundation.org/donations.html https://www.openbsd.org/donations.html すごいね。これだけのセキュリティ機能が有効になった状態で、ユーザーランド開発者のデバッグ体験はどうなってるんだろう?特にメモリのランダム化のやつ。 私の一般的な経験では、珍しいクラッシュが頻繁なクラッシュになるのが良い。頻繁なクラッシュは修正しやすいからね。 デバッガをrootで起動してプロセスにアタッチすればいいんじゃない?それなら同じ感じになると思うよ。まあ、セキュリティ機能を無効にしたVMでデバッグするのもアリだよね。>特にメモリのランダム化に関してだけど、プログラムの実行間でメモリアドレスが再現可能って信じたことないな。ASLRの時代ではそれは危ない考えだと思うし、マルチスレッドだとmallocしたものにも影響しちゃうしね。 OpenBSDってノートパソコンで日常使用するのに向いてるかな?誰か経験ある人いる?大丈夫なの?もっとコメントを表示(1)
もっとコメントを表示(2)
EDIT: 一例として、>「RETGUARDは、関数ごとにランダムクッキーを使ってスタックの戻りアドレスをチェックするスタックプロテクターの代替だよ」って書いてあって、OpenBSD 6.4から実装されているらしい。もっとコメントを表示(3)