tpdn blog
2019-09-21

政治的問題のためRuby GemsとGitHubからChef関連の諸々が消えた件について

政治的問題のためRuby Gemsに登録されたChef関連のgemやGitHub上のソースコードを作者が削除した


現在Chef界隈が混乱している。どうやら政治的問題のためにRuby Gemsに登録されたgemやGitHub上のソースコードが消されたらしい。なかなか興味深い出来事で、なおかつ日本語圏に情報が出ていないので適当に記録しておく。

  • 2019-09-26 事態が動いたので「さらにその後」を追加。類似事例をさらに追加。表現を少し修整。

用語

  • Ruby:プログラミング言語の1種。日本においては超広範囲で使用されている超メジャーな言語。
  • RubyGems:Rubyにおけるパッケージシステム。他人のRubyプログラムやライブラリを簡単に取り込むことができる。
  • Chef: 構成管理ツールの1種。Rubyが使われている。同名の会社(Chef Software Inc.)によって開発されている。
  • Chef Sugar:Seth Vargo氏が作ったChefの拡張。今回の件で消されたものの1つ。(これ含めて3つほど消されてる)
  • Seth Vargo氏:Googleのエンジニア。Learning Chefを書いた人。元Chef Softwareの従業員。

何が起こったか

こんな感じである。要は非人道的であるとされる政府機関(アメリカの Immigration and Customs Enforcement)のコンピューター回りを請け負ってる業者とChef Softwareが契約を結んだので抗議のためにSeth Vargo氏が色々消したとのこと。

仕事をしているときに、Chef実行時にコケたという話がチャットに流れてきてそれで気づいた。政治的問題の影響を受けるなんて思ってもいなかった。なんじゃこりゃ。

https://techcrunch.com/2019/09/20/chef-ceo-says-hell-continue-to-work-with-ice-in-spite-of-protests/

※ICEの日本語訳はいろいろあるが、このツイートではAFPで採用されているものを適当にコピった気がする。Wikipediaではこうなっている https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%A1%E3%83%AA%E3%82%AB%E5%90%88%E8%A1%86%E5%9B%BD%E7%A7%BB%E6%B0%91%E3%83%BB%E9%96%A2%E7%A8%8E%E5%9F%B7%E8%A1%8C%E5%B1%80

Seth Vargo氏の主張 適当日本語訳

https://github.com/sethvargo/chef-sugar/blob/master/README.md

2019-09-17に、Chefは基本的人権の拒否、檻での子どもの拘留といった非人道的行為で知られるICEと契約を結んだことが判明しました。
これに応じてChefエコシステムからコードを削除しました。
私にはソースコードが悪に使われるのを防ぐ道徳的および倫理的な義務があります。

何ができる?
Chefに連絡して、この契約を承認しないと伝えることができます。
もしChefに課金している顧客であれば、営業担当者に伝えることができます。

クソが!
ワークフローの中断についてお詫びします。
Chefが契約をキャンセルするのであれば、私は喜んで古いリポジトリとgemバージョンを復元するでしょう。

その後どうなったか

Chef Softwareに雇用されていた期間にgemを作成していたとのこと。そのため、作成されたgemの所有権はChef Softwareにあるという主張が通る。

これによりRubyGemsに登録されているgemと名前空間が復旧。ソースコードはFork(Apache License 2.0なので問題ない)

https://blog.rubygems.org/2019/09/20/chef-ownership.html

https://blog.chef.io/2019/09/20/an-update-to-the-chef-community-regarding-current-events/

Chefのブログによると

  • 元Chefの従業員がいくつかのRuby Gemsを削除した結果、顧客に影響が出た。
  • 顧客のダウンタイムを最小限に抑え、サービスをもとに戻すよう努める。
  • 多くの方々がChefがICEと関係を持たないことを希望しているのは理解している。
  • 家族を引き離し子供を拘留する政策は間違いである。

・・・って感じである。 https://blog.chef.io/2019/09/19/chefs-position-on-customer-engagement-in-the-public-and-private-sectors/

あと、CTOの個人的なメッセージが以下で公開されている。なかなか深いメッセージだ。

https://blog.chef.io/2019/09/20/a-personal-message-from-the-cto/

さらにその後

なんとChefが態度を急変。いままでのことについて謝罪することに。

そして、来年に期限が切れるICEとの契約を更新しない決定をした。(現在締結済みの契約については継続)

さらにこの団体関連の2019年の全収益を、ICEの行動の影響を受ける人々を支援している慈善団体に寄付するとのこと。

事実上、この抗議行動に対してChefは折れたのである。この抗議行動は抗議する側が勝利したといえる。

https://blog.chef.io/an-important-update-from-chef/

https://techcrunch.com/2019/09/23/programmer-who-took-down-open-source-pieces-over-chef-ice-contract-responds/

思ったこと

企業で働くソフトウェアエンジニアとして

こういうことに巻き込まれてしまった我々にとっては、自分たちの製品を開発運用を継続することのほうが政治的問題よりも重要である。

となると優先すべきことは「自身の管理下にない他人のリポジトリが消えてもサービスの開発運用を継続できる手段を何か考えておくこと」だろうか。今回のようにChef Softwareがいろいろお世話してくれるとは限らないし。

  • 組織で持っているリポジトリにForkを行いそれを使用する。
  • 依存するもののソースコードを丸ごと取り込む。いわゆるVendoringを行う。

この辺はすぐに思いつく対応なのかなと思っている。まあそれなりにコストがかかるかもしれない。

退職者対策(?)

退職者が退職後に雇用期間中に作成追加したものを消去されても業務が継続できるかどうかについて考える必要がある。 現に今回の騒動でコードを削除した人間は元Chef社員である。

例えばRubyの場合、Gemfileがこうなっていたとする。

gem 'aaa_foo'
gem 'bbb_bar', :github => 'certain_company_zzzzzz/bbb_bar' # 会社のGithubアカウント
gem 'ccc_baz', :github => 'employee_abcde/rails' # 従業員abcdeのGithubアカウント
gem 'employee_abcdes_my_special_tool_xyzzzzzzz' # 従業員abcdeが作ったgem

もし従業員abcdeが何らかの良くない原因で退職して従業員abcdeのgemとかソースが消去(あるいは改変)された場合どうなる? 今回の件みたいにgemの所有権が個人ではなく会社組織に存在するということを主張して復旧まで持っていける?まあ実際にはそこまでしないかな。

ソースコードやパッケージの所有権

こんな風にして所有権主張して復旧できるのかーっと思った。でもこれ悪用できる余地ないのかどうか気になるところ。

他の抗議行動の可能性

ICEのことなんて気にする必要はない。確かに日本に住んでいる人間にとってはそうだろう。 でも、こんな政治的問題だとどうだろう?今のご時世、現実に何かが起こってもおかしくない。

  • 香港の問題
  • 日本と韓国の関係

まあそもそも日本だとここまで明確に分かりやすい形で政府機関の契約が公開されているのか謎な気はする。 もちろんアメリカだとクッソわかりやすい形で公開されてる。だからこそこんな行動を行う人が現れる。 https://www.usaspending.gov/#/award/85073015

ソフトウェアエンジニアができる抗議行動の一つとして

我々のようなソフトウェアエンジニアは多かれ少なかれ何かを作成している。

今回の件は、「何らかの政治的な問題が発生したときにソフトウェアエンジニアは行動を起こすことが可能である」ということを意味している。

何らかの政治的問題が生じたとき、我々(日本のソフトウェアエンジニア)も真似できるのかもしれない。そこそこ有名なブツを持ってないとだめだけど。

実際、何も接点のない日本人である私に対してこんな問題があるぞということが伝わっている。 デモ行進とかやるよりも効率が良い。ソフトウェアエンジニアに対してピンポイントで主張を伝えられるのだから。

類似事例

npmからkikとその他諸々が消された件

政治的な目的ではないが、npmからkikとその他諸々が消された件と似ている。

https://cpplover.blogspot.com/2016/03/npmkik.html

lerna

lernaというOSSにおいて「ICEと関係を持った奴に使わせないMITライセンス( MIT WITH abolish-ice-exception License?)」がメンテナーによって提案され、それをマージした事件が過去にあったとのこと。

そんなライセンスはもはやフリーなライセンスじゃねえだろと突っ込みたくなる。 もちろんこれは後にリバートされていて、大暴走したメンテナーはクビになっている。

https://github.com/lerna/lerna/pull/1616