最近、オープンソースソフトウェア(OSS)の開発者が一方的にその成果を利用する企業などから支援や報酬が得られないことへの反発が高まっています。オープンソースソフトウェアの開発インセンティブの問題やライセンスの問題は過去にも研究所でカバーされている話題ですが、ずっとくすぶり続けているテーマで最近噴出の勢いが強まっている感じです。
オープンソースソフトウェア開発者の被搾取感や負担感という問題は、ビットコインもOSSであり、ビットコイン周辺の多くのライブラリやツールもOSSであるため私達にとっても全く他人事ではありません。今日は今週話題となったfaker.js/color.jsの事件に触れ、ビットコインおよびビットコイン周辺のソフトウェアで類似の事件が起こった場合を想定します。
FAKER.JS/COLOR.JS事件
この記事を書くきっかけとなったのは、faker.jsおよびcolors.jsという2つのNodeJSライブラリの作者が意図的にこれらのライブラリに無限ループを含めたアップデートを公開し、その影響で多数のプログラムが動かなくなったという今週発生した事件です。2つ合わせて毎週2500万回ダウンロードされるほど広く利用されているライブラリに起こり話題となりました。
サボタージュの動機はあまりにも広く使われるようになったこのソフトウェアの維持に対して対価が払われていないことへの鬱憤とされています。詳しい経緯は不明ですが、本人も公開当初はこんなに広く使われると思わず、報酬や感謝を伴わない責任だけが大きくなっていくなかで、支援を要求しても応えてもらえず、負担感に耐えられなくなったのではないかと想像してしまいます。
確かに大規模なシステムの要となってしまっている、個人が開発したようなちょっとしたOSSはたくさん存在しています。xkcdにもその様子を皮肉った1コマ漫画があります:
https://xkcd.com/2347/
さて、今回の問題で被害を受けたのはバージョンを指定せずに(=自動的に最新版を利用する)これらのライブラリを使用するソフトウェアです。したがってユーザーはバージョンを指定していれば勝手にアップデートされることなく影響も受けませんでした。他人の書いたコードを無監査で実行しないために依存関係にあるライブラリのバージョン指定は重要ですが、残念ながらOSSをわざわざ監査して使っている人はかなり少数派という現実があります。(その割にバグやアップデートなどで開発者が責められる…)
また、開発者の方はライセンスを適切に設定・変更することで自分の意図したのと異なる使われ方をしないようにすることができます。今回のケースでは大企業の商用利用のみ有償とするライセンスなどが考えられます。もちろん、ライセンス違反を発見したり違反金をもらうための人的・法的コストが大きいので泣き寝入りになる可能性はかなりありますが…。
ビットコインに関係する類似事件を想定する
ビットコインの世界もこの事件とは無関係ではありません。むしろ多くの業界より更に現実的なリスクがあるとさえ感じます。ビットコイン自体と周辺ソフトに関して、類似事件が起こる可能性や対策を想定することにしましょう。
まずビットコイン自体もオープンソースソフトウェアであり、開発者たちは基本的に無給で新機能の開発やメンテナンスをしています。中にはグラントを通して特定の開発者を支援している企業や、GitHubなどを経由して個人的に寄付しているユーザーもいますが、大半のユーザーや事業者などはフリーライダーで開発者を搾取している側だという見方もできます。