OSSで共有地の悲劇が起こることにどう対処するか
2022年1月、colors.js事件が起きた。このページは当時にTwitter上で日本語で行われた議論のまとめである オープンソースライブラリ「colors.js」の開発者が、これらを意図的に改ざんした。
彼は経済的困難を理由に「ただ働き」を拒否。
これがオープンソース開発者の待遇と責任についての議論を引き起こした。
stepney141: GitHub上のOSS、ミクロ経済学の学部初級教科書になんで公共財として載ってないのか不思議でならないくらい公共財してる stepney141: OSSはもともと、知識を公共財であると認識した上で「知識のフリーライダーを増やすことが知識の発展に繋がる」という思想だったわけだけど、知識を提供する側が悪意を持つ側に回ることを想定していなかったのではないか stepney141: オープンソースの定義を考えたブルース・ペレンスはこういうことを言っているわけだけど、現実には Babel の開発者が寄付を訴えたり、今回の colors.js/faker.js のように開発者が実力行使に出たりしているわけなんだよな "共産主義がうまくいっていない世の中で、オープンソースがごの一見共産主義的な戦略で成功している。それはなぜだろうか? それは、普通の(物質的な)商品と(デジタルなデータとして存在する)情報では、生産コストがまったく違うからである。ようは、経済原理が違うのである。コンピュータプログラムのように情報が材料の品物は、コピーして数量を増やすのにほとんど費用がかからない。電気代などわずかなものである。機器使用料もたいしたことはない。これに反して、食パンをひとつコピーするには、一ポンドの小麦粉が必要である。" --- 「オープンソースの定義」について stepney141: log4j2 の開発者も、脆弱性対応への批判に対して「こちとらタダで全部のタスク回しとんねんぞ」的な声明を出していた記憶があるが、やはりOSSという財は人類には早すぎるっぽい ただ、「OSSとコンピュータに強い補完性がある」という前提の妥当性が気になる
stepney141: 現実はこの論文の結論とかなりかけ離れた方向に動いていて、GitHub Sponsorsができた2019年辺りから、みんなが「OSSは開発者に対価がないとうまくいかないよね」と考えるようになった気がする >共産主義がうまくいっていない世の中で、オープンソースがごの一見共産主義的な戦略で成功している。それはなぜだろうか? それは、普通の(物質的な)商品と(デジタルなデータとして存在する)情報では、生産コストがまったく違うからである。ようは、経済原理が違うのである。コンピュータプログラムのように情報が材料の品物は、コピーして数量を増やすのにほとんど費用がかからない。... --- 「オープンソースの定義」について nishio: リリースされたソースコードは低コストにコピーできる財だが「ソースコードを最新の状況に適応させること(セキュリティパッチなど)」はむしろ希少な財だったということなのだろうなぁ anohana: ほんと、コードはナマモノで継続したケアが必要なんだよな。ケアの部分はあんまりスケールしない。 nishio: これって機械学習とかでもそうで、論文と一緒にサンプルコードが公開されたりして「それを試しに実行してみること」は容易なので「その知識は容易にコピーされる財」である反面「実務の状況で活用するために修正する知識」は論文にも書かれてない「市場調達困難な希少な財」なわけだ nishio: 社会の共有財に対して「支払わなくてもコピーして使えるから」と誰もが支払いをしなかった結果、希少な財を生み出していたOSSメンテナーが破壊されるの、いわゆる「共有地の悲劇」だな、どうしたらいいものやら voluntas: OSS 自体はコピーし放題だが枯渇しないが、OSS メンテナーが枯渇(疲弊)してしまうという視点はまさに、共有地の悲劇だ。さすが西尾だ。 voluntas: まぁつまるところ皆 OSS メンテナーを軽率に扱いすぎたって話なんじゃないのかなぁ。「誰かがなんとかしてくれるでしょ」がついに爆発したというか。 stepney141: OSSは自由財 (空気とか海水とか) のようなものと思われがちだけれど、現実にはそうではなく、人類が所得と時間を費やして生産しているものなんだということに思いを致さなければならないんでしょうね "「共有地の悲劇」だな、どうしたらいいものやら"に対するいろんな案
メンテナーが善意で負担しているコストを可視化する
nishio: ソースコードが大きくなればなるほど、それを状況に合わせて修正するコストは高くなり、新しい人がそれをできるようになるコストも高くなるから、どんどん「少数のメンテナーに負担を強いる」構図が加速するのか nishio: メンテナーが善意で負担しているコストを可視化する仕組みがあるといいのかな。企業が自社製品で使ってるOSSについてAPI経由でメンテナーの負担が見えて、負担の集中してるやばいものに関して前もって察知できるようになればいいのかな nishio: npmとかで「使われてる量」を取得してGithubのコミットログから「アクティブなメンテナの人数」を推定して分母にすると「メンテナが一人が狂った時の社会に与える損害の量」が推定できるか 保険料的な形で支払いを引き出す
nishio: 収益の上がっている企業ユーザにとって、自分が使っているOSSにトラブルが起こることには実損があるので、それを避けるための保険料的な形で支払いを引き出すことができないだろうか lempiji: 私も保険の仕組みは通ると思ったけど、依存先パッケージ申告したり保険料の推定するのはやはり難しそうなんだよな。force pushされたら1人狂っただけでアウトだし。あとやるとしたらGitHubが勝手にスキャンするのが無難だけど、これは競争原理が働きづらくて後々厳しそうかなーまで考えました メンテナンスを半自動化する、
takiuchi: 専門のメンテナを置かずに使用者がパッチを送ればいいんじゃないかな。PRを半自動でmergeしてブロックチェーンのようにパッチが一番多いブランチがmainになるとか takiuchi: 力を合わせて助けようみたいなのはプログラマーWayじゃないんだよな。もっと怠惰に自動的にうまくいく方法を考えたい 企業がビジネス化
kazuho: うん、というかサポート、メンテコストが大きいからこそ「OSS企業」のビジネスが成り立つんですよ。それがここ四半世紀の潮流 nishio: 「メンテコストが大きいからOSS企業が成り立つ」余地があるにも関わらず、なぜ話題のプロジェクトについてサポートするOSS企業が現れなかったのか nishio: …高コストな作業なのに無償で提供する「合理的でないプレイヤー」が存在することによって市場が破壊されているからだな…善意からダンピングをして競合を潰し、すべての仕事が自分に集中する構図を作った上で、その仕事の集中を嘆く人が…地獄への道は善意で舗装されているってやつか… ダンピングという言葉は人を傷つけるという指摘があったので下で修正しています
whitphx_ja: とはいえfaker.jsやcolors.jsが寄付でない有償のビジネスになるイメージが湧かないんだよなぁなぜかなぁ この規模の前例がない(要出典)から思いつけない自分の頭の限界か、
もしくはサポートコストはゼロでないにせよいざとなればなんとかなると舐められる程度のコストでしかなかったということかな
ゼロではないけど微々たるコストに金を払わせるようなシステムの不在(流動性の欠如)の問題か、本当にそこにはなんの潜在的収益性も無いのか
whitphx_ja: 私のAwesome Emacs Keymapだって、Emacsキーバインドに調教されているがVSCodeを使わざるを得ず苦しんでいる人の時間を少しは節約しているわけで、もし経済システムに真に流動性があれば、浮いた費用をその人の雇用主から適当に按分して支払われてもいいとは思うけど現実はそうなっていない。なぜか。 もしその浮いた費用を算定する理想的なシステムが登場しても金は払われないんだろうなぁという気持ち
ちなみに、そんな中で(おそらく経済合理性を超えて)寄付をしていただける方々も数多くいるわけで、本当に感謝しています
>faker.jsやcolors.jsが寄付でない有償のビジネスになるイメージが湧かないんだよなぁ
nishio: この後サポートする企業が出てくるのか、別の無償のプロジェクトが出てくるのか、ということか。というか既に代替する無償のプロジェクトが出てるわな nishio: こうなると(あえて共感をオフにして冷たい言い方をすれば)自分が提供しなくても他人が無償で提供するような作業を「自分がやらなきゃみんなが困る」と思い込んで率先してやっていただけ、ってことになっちゃうね nishio: よく調べたらメンテナーが一人しかいないのではなく複数人いたし、そのメンテナーの一人は今回の件を受けてスピーディに代替プロジェクトを立てれてるわけなんだよな。無償でメンテできない状況なら「できない」と言って休めばよかっただけのような。 hrjn: ANSI colorつけるくらい自前でもかけるやんってストロングなこと思ってたけど、実際color.js見ると痒い所に手が届く感じで地味便利そうだなって気持ちになった。 広告収入還元
nakawankuma: ダウンロード数等に応じて広告収入的なsomethingを得られるようにする+コミッターを複数化する(株式上場のような)なんかで誘導できる余地は有るかも。 ニコニコのクリエイター奨励プログラム
toshi_miura: ニコニコのクリエイター奨励プログラムみたいな感じで、githubの有償プログラムから再配布とかやってもらうとか、無理筋なんだろうか? ベーシックインカム
nishio: ここまでの議論を踏まえて考えると、実体験ベースで僕には「作ったものを無償で提供したい」という欲求があるよな、と思った。「相互扶助の理念のために!」みたいな大上段に構えたものではないように感じる。 nishio: で、その欲求に従って振る舞うことができるのは、それをマネタイズしなくても生きていけるインカムがあるからで、仮にインカムがなくなったら生産量は下がる。 市場に任せて適切なインカムが得られない場合、政府が介在して「OSS作者にベーシックインカム」という選択肢がある
nishio: この財源としてなるべく受益者に近い層から取ろうとするなら、ソフトウェアに追加の消費税を掛けるとかになるか。オープンソースに寄付やコントリビュートしてる企業には減額があってもいいのかも。そうすると企業に寄付やコントリビュートのインセンティブが生まれる。 関連 ふるさと納税的な案
OSS利用してる企業の社員はふるさと納税みたいな感じで好きなOSSに月○千円まで寄付できる。みたいなのがいいと思ってる。
JASRAC的なものを作る
MITライセンスではなく「年商何百万ドル以上の会社が使うなら金を出せ」
justinto_nation: あるいはもっとシンプルな話でMITとかそんな生ぬるいライセンスはみんな今すぐやめるべきで、プロプライエタリな奴らがよくやってる「年商何百万ドル以上の会社が使うなら金を出せ」って仕組みをもっとどんどん入れるべきと思うわけよ 環境依存バグの修正リクエストは「それにいくら払うか」を表明させ市場メカニズムで優先順位づけ
nishio: はてぶコメントで「競合性がないのでは」という指摘があったけどこれも面白い切り口だと思う。 セキュリティパッチは1の作業をして全員のニーズが満たされるから競合性がない。問題は「ユーザ環境依存のバグ」「ユーザごとのニーズ」の対応コスト、これがユーザの増加とともに増える。
nishio: そう考えると環境依存バグの修正リクエストは機能追加のリクエストと同様に「それにいくら払うか」を表明させることにするという手もあるな。0円でも作り手が面白いと思えば(金銭的でないインセンティブがあれば)やる。面白くないものは金額の高いものから処理。市場メカニズムで優先順位づけされる 「無料より優れたもの」(Better Than Free) ケヴィン・ケリー Kevin Kelly nishio.icon今回の議論にも関係する考察がまとまっている
「コピーが無料であれば、コピーできないものを売る必要がある」「無料より優れた八つの生成力」「即時性」「個人化」「解釈」(単なるビットの集まりにすぎないコードのコピーは無料である。そしてそれはサポートと指導があって初めてあなたにとって有益なものになる)「信憑性」「アクセスしやすいこと」「具体化」「後援」「見つけやすいこと」
nishio: 火災で家財を失って寄付を求めるTweetをした経緯とかを知ると同情はするけど、とはいえライブラリのユーザは別にそのプロジェクトのオーナーのファンというわけではないので、大部分のユーザは作者をフォローしてないしそのツイートに気付きすらしてないと思う。 nishio: 思ったほど寄付が集まらず、一方でイシューはどんどん積まれていったのだろう。OSSにバグレポートするときに「作者の家計は安定してるかな?」って考える人なんかいないから。で、生活に不安がある状態で無償労働に時間を取られて、ストレスで破壊行為に走ったと。 nishio: そばにいたなら「今君がそれのサポートをする必要はないよ、OSS活動は休んで自分の生活を安定させることに集中しなよ」と声をかけただろうけど、それをしてくれる人がいなかったか、聞き入れられる精神状態ではなかったか… nishio: ダンピングという言葉は強すぎるのでは、という意見があり、確かに強すぎるなと感じたので言い換えを考えています nishio: 分脈をきちんと補うと今回の特定の個人とは無関係の話で「企業があるタスクを有償で請け負う場合に、それに対して支払いをするような顧客が存在するようなタスクについて、しかしなぜか請け負う企業が現れないとするなら何が原因か?」という問い nishio: で、その回答が「企業の採算が成立しないレベルの安価な金額で請け負うプレイヤーが存在するせいかもしれない」ということ。 nishio: 元々の発言では今回のプロジェクトに関する特定個人を謗っているように見えるとの指摘があり、そうしたいわけではないので、特定のプロジェクトに関連づけない表現に訂正しました。 関連
hiroko_TB: なんでオープンソースなんてやろうと思うかといえば、それが世の中に存在してなくて、みんな困ってることなんだから、だったら自分がその負を解決して、さらには周りの困ってる人のためにも公開しよう、っていう話だと思うんですよね。最初から利益なんて考えてないと思いますよ。 hiroko_TB: 主眼は自分もみんなも困ってるのをどうにかしたいだし、自分自身も昔フリーソフトとかオープンソースに助けられたから、なんらかの恩返しをしたいっていう気持ちもあるとは思いますよ。だから、むしろ営利企業とかが利用するだけ利用するみたいなのが、例外なんだと思うんですよね。 hiroko_TB: だから、おそらくGoogleみたいな企業はevilにならないために、積極的にオープンソースでの公開もすすめて、これまでもこれからも借りてきたもの以上のものを返して、イノベーションのエコシステムを継続させようとしてると思うのですよね。 hiroko_TB: だから、こういう人間の善性みたいな話をすっ飛ばして、資本主義的に合理的かみたいな話になったり、そういった相互扶助はそもそもアテにすべきでないみたいなこと言われてしまうと、そもそもの段階で信じる神が違うとも思えるし、極めて冷たい考えの人だな、とも思えてしまうんですよね。 nishio: ダンピングの定義、厳密に理解してなかった "一般的には採算を無視した低価格で商品を投げ売りすることをいうが、厳密な意味では価格差別、すなわち国内市場と外国市場とで異なった価格で販売することをさす。" --- 日本大百科全書(ニッポニカ) 2022-01-12
https://gyazo.com/24fac832b1b9df74242d5b8a1b2e9d0b
- ソフトウェア自体は非競合性を持つ財である
-- ソフトウェアは排除性を持ちうる(e.g. Windows)が、オープンソースソフトウェアは排除性が存在しない
- ソフトウェアの開発・メンテナンスは開発者の時間と同等な財だろう
- したがって、開発・メンテナンスは競合性を持つ(e.g. 一つのバグを直す間は機能実装ができない)
- OSSの場合、開発・メンテナンスも実質的に非排除的な状況に陥っていることがあるだろう
- このとき、開発・メンテナンス = 開発者の時間は「共有地」(競合的で非排除的な財)となる
- すなわち、ソフトウェアの使用者には開発者の時間を使って利益を得る(ソフトウェアを改善してもらう)インセンティブが存在し、開発者側はそれを排除することができない
- この場合、開発者の時間は(パレート効率的な量に比べて)過剰に消費されることになる
- すなわち、ユーザーは開発者の時間にただ乗り(フリーライド)している
- OSSの開発・サポートが非排除性を持たないのはオープン開発モデルが要因ではないかと疑っている
-- 例えば、LuaやSQLiteはこの問題を持たなさそう
- 他のOSS企業もここら辺を上手く回避してるんじゃないかな(どうなんだろう)
__pandaman64__: "nishio: 社会の共有財に対して「支払わなくてもコピーして使えるから」と誰もが支払いをしなかった結果、希少な財を生み出していたOSSメンテナーが破壊されるの、いわゆる「共有地の悲劇」だな、どうしたらいいものやら" と大体同じことを言っているんだけど、ソフトウェア自体と開発者の時間を区別した方がクリアで面白いと思う >nishio: 社会の共有財に対して「支払わなくてもコピーして使えるから」と誰もが支払いをしなかった結果、希少な財を生み出していたOSSメンテナーが破壊されるの、いわゆる「共有地の悲劇」だな、どうしたらいいものやら
1. OSSが広く使われるようになる
(2. ユーザは開発者の時間をより消費するインセンティブが生まれる)
(3. 開発者はそれを排除できない)
4. 開発者の時間が過剰に消費されて消耗する
というメカニズムが隠れていると解釈できる
- それぞれの反例を考えてみると面白い
- 2の反例: catがどれだけ広くコピー・使用されても開発・メンテナンスは大変にならないだろう。なぜならほとんどのユーザは今あるcatを使えて満足しているから
-- catの使用自体は外部に影響を与えていないのに注意
-- なぜならばソフトウェア自体は非競合性を持つから
- 3の反例: 開発者が開発・メンテナンスの要求を排除できればいいだろう。例えば拒絶するとか金を要求するとか
-- とはいえ、非競合性を持つのは変わりなく、フリーライドのインセンティブは存在するので必要な額を集めるのは大変だろう
-- 悲しいね
nishio: >公共財は...非競合性あるいは非排除性の少なくとも一方を有する財...競合性とは、消費者たちによるその財の消費が増えるにつれ、追加的な費用なしでは、次第に財の便益が保たれない性質...排除性とは、対価を支払わず財を消費しようとする行為を実際に排除可能な性質を指す。公共財 - Wikipedia nishio: 排除性の概念が特に面白い。メンテナは無償で労働することを求められたとしてもNoと言えばいいだけ、対応する義務などない、なのになぜそうしないのか。これは金銭的でないインセンティブを含めて考えると無償労働をする方がメンテナにとって得だからだ。 nishio: たとえばこんな状況: 自分が長年メンテしているライブラリがある、これは類似のライブラリの中で一番使われている、一番であることは誇り。ここでセキュリティ問題が発生したとする。対処しなければユーザは自分のライブラリを使うことをやめて二番手のライブラリに以降するだろう。 nishio: この状況で、金銭的インセンティブだけを見れば「メンテナに無償労働をする義務はないから断れば良い、もしくは相応の金銭を請求すれば良い」となるが、なぜかメンテナがそれを選ばずに無償労働して愚痴る。なぜか、それはメンテナに別のインセンティブがあるからだ。この例の場合は誇りだ。 nishio: もっと一般化すると「ユーザに使い続けてほしい」「もっとユーザが増えてほしい」という欲求が作り手の側にあり、それを充足する手段としてソフトウェアを無償で提供したり無償でメンテナンスしたりしてるわけだ。それによって元々持っていた排除性をみずから手放している。 ruten: これはなあ、自分自身も無料のソフトを色々と出していて思うところがある。→ "OSSで共有地の悲劇が起こることにどう対処するか - 西尾泰和のScrapbox" ruten: 「プログラムなどを書いて機能を提供する」のって、世の中に対する「提案」なんだよなあと。世の中をよくする、便利にする、今よりもよいアイデアがあるという。そのアイデアを形にしたものがプログラムだったりする。 ruten: だから、プログラムの利用者が増えて、ユーザー規模が広がっていくのは、自分の「社会に対する問題解決のアプローチ」が正しかったという証明がなされるので、純粋に楽しい。 ruten: でも、メンテナンスって、そういった楽しみとは無関係で義務になってしまうんだよなあと。ただの作業というか。そしてメンテナンス的作業は、ユーザー数が増えて利用機会が増えると、どうしても発生してしまう。 ruten: そこで自分から切り離して「メンテナンスはご自由に」というのも1つの方法なんだけど、プログラムって、アイデアであり、世界に対する自身の思想であり、自分自身と一体化した部分もある。 ruten: 自身の思想と、その証明で得られた実績と、それで得られた名誉欲の充足なんかも手放すことになるので、難しいよなあと。感情の問題が絡む。 ruten: そもそも感情的欲求がなければ、プログラムを無償で書いて公開する行為は、多くの人がやらないのではないかと思う。純粋な恩返しの場合もあるだろうけど何らかの欲が絡みやすい。途中から絡むこともある。 ruten: プログラムの無償開発と提供、そこから得られる感情的報酬は、ある時点でバランスの逆転が起きる。メンテナンスの負荷が大きくなると、そうなる。なので、多くの開発が、途中からモチベーションが下がり、止まっていく。多くの場合、報酬の頂点が、多くの人に認められて受け入れられるところだから。 ruten: 何らかの経済的な収益化システムがあればよいのだろうけど、そうなると収益を最大化することが至上の人にシステムを利用される。なかなか難しい。 ruten: ただ、経済的恩恵は、何らかあった方が健全ではないかと思う。特に、巨大営利企業が無償利用することに関しては、感情的損害を与えることがあるんだろうなあと、今回の件では思った。 MITライセンスが悪である論
justinto_nation: このケースに於いては「生活が困窮したから気が触れた」みたいな話が好きじゃなくて、そもそもOSSの作者が気違いになる(頭がおかしいのが発覚する)なんて天災以外にも常に存在するリスクであるわけで justinto_nation: 結局はOSS(プロジェクト)の信頼度という所に対して、そのメンテやリリースが独裁的になっていないか?(民主的に行われているか?)という観点を持つしかないでしょ こうすることによって自動的に弱小規模のOSSは安心して死ねる/殺せるわけで
justinto_nation: あるいはもっとシンプルな話でMITとかそんな生ぬるいライセンスはみんな今すぐやめるべきで、プロプライエタリな奴らがよくやってる「年商何百万ドル以上の会社が使うなら金を出せ」って仕組みをもっとどんどん入れるべきと思うわけよ 確かにこいつをダンピングだと言っても過言ではない気はする
そうでもしないと世界はお前らの重要性に気付かないわけで、あるいは巨大企業がどんだけMIT(に限らず無料のもの)に甘えてるかの指標を誰か観測しないかなぁ……
ベーシックインカムは政府という「より高次の組織」に頼ればなんとかしてくれるという発想であり、その支出がどのようにして持続的な仕組みになるかについて何も考えてない、という指摘
確かにnishio.icon
政府という大きな組織に押し付けることで詳細が見えなくなって、お金がどこかから湧いてくるかのような錯覚を持ってしまうのだなぁ
支出に必要なお金は結局税金かインフレかの形で個々人から集めるのだから構図は変わっていない