

現在Chef界隈が混乱している。
どうやら政治的問題のためにRuby Gemsに登録されたGemやGitHub上のソースコードが消されたらしい。
なかなか興味深い出来事で、なおかつ日本語圏に情報が出ていないので適当に記録しておく。
こんな感じである。要は非人道的であるとされる政府機関(アメリカの 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)とChefが契約結んだ
— キムテポドン (@KIM_TPDN) September 20, 2019
・ICEは非人道的である
・コードをChefエコシステム通してそこで使われるのは嫌だ
・だから作者がコード消した https://t.co/lSBAfvWjxF
…という感じになってる。
workflow中断されたので気づいた。
※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
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のブログによると
・・・って感じである。 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/
こういうことに巻き込まれてしまった我々にとっては、自分たちの製品を開発運用を継続することのほうが政治的問題よりも重要である。
となると優先すべきことは「自身の管理下にない他人のリポジトリが消えてもサービスの開発運用を継続できる手段を何か考えておくこと」だろうか。今回のようにChef Softwareがいろいろお世話してくれるとは限らないし。
この辺はすぐに思いつく対応なのかなと思っている。まあそれなりにコストがかかるかもしれない。
退職者が退職後に雇用期間中に作成追加したものを消去されても業務が継続できるかどうかについて考える必要がある。
現に今回の騒動でコードを削除した人間は元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
マイルドにダメージを与える抗議活動の例としては面白いね。これ日本でもできるのでは。うまいことやれば普通のソフトウェアエンジニアが全員活動家になるぞ。
— キムテポドン (@KIM_TPDN) September 20, 2019
我々のようなソフトウェアエンジニアは多かれ少なかれ何かを作成している。
今回の件は、「何らかの政治的な問題が発生したときにソフトウェアエンジニアは行動を起こすことが可能である」ということを意味している。
何らかの政治的問題が生じたとき、我々(日本のソフトウェアエンジニア)も真似できるのかもしれない。そこそこ有名なブツを持ってないとだめだけど。
実際、何も接点のない日本人である私に対してこんな問題があるぞということが伝わっている。
デモ行進とかやるよりも効率が良い。ソフトウェアエンジニアに対してピンポイントで主張を伝えられるのだから。
政治的な目的ではないが、npmからkikとその他諸々が消された件と似ている。
https://cpplover.blogspot.com/2016/03/npmkik.html
lernaというOSSにおいて「ICEと関係を持った奴に使わせないMITライセンス( MIT WITH abolish-ice-exception License?)」がメンテナーによって提案され、それをマージした事件が過去にあったとのこと。
そんなライセンスはもはやフリーなライセンスじゃねえだろと突っ込みたくなる。
もちろんこれは後にリバートされていて、大暴走したメンテナーはクビになっている。