以前、マイクロソフトが、LinuxカーネルをHyperVでサポートするパッチに、定数として0xB16B00B5を使っていたことが、物議をかもした。これは、BIG BOOBS(デカパイ)と読める。
Linux開発者の中でフェミニズムの第一人者として知られているMatthew Garrettなどは、特に強く抗議した。
ソースコード中で、定数としてユニークな数値が必要であるが、数値自体はどうでもよい場合、かといって、0とか1などといった簡単でよく使われる数値は避けたい場合、プログラマーは大抵、面白い数値を考えだすものだ。hex speakで解釈したり、ASCIIで解釈すると単語になるような数値だ。
「プログラマーというのは、いまだに高い割合で男が占めており、そのために強い男性社会の特徴が現れ、けしからん。このような男性社会的な定数を選択したことは、その顕著たるものである」というのが、フェミニズムプログラマーの主張だ。
マイクロソフトはこの批判に応じて、ソースコード中の定数を記述するリテラルを、16進数リテラルから、10進数リテラルの2976579765に変更した。
さて、そのMatthew Garrettであるが、同じ問題をVMwareをLinuxカーネルでサポートために提供されたソースコードにも発見したらしい。
mjg59 | VMware are as bad as Microsoft
git.kernel.org - linux/kernel/git/torvalds/linux.git/blob - drivers/net/vmxnet3/vmxnet3_defs.h
VMwareは有名なエミュレーターであるが、LinuxカーネルをVMware上で動作するように対応するため提供されたソースコード中に、
#define VMXNET3_REV1_MAGIC 0xbabefee1
なる行がある。0xbabefee1は、明らかにbabe feel(感じるネーチャン)と読める。
それにしても、HyperVといいVMwareといい、どちらも仮想化ソフトウェアである。仮想化ソフトウェアの開発者が特別に卑猥なhex speakを好むと言うよりも、ある特定のハードウェアをエミュレートするより、直接OSにドライバーを提供したほうが都合がよく、しかしmainlineで取り入れられるためにはGPLv2であることを要求するLinuxの存在があり、市場規模からしてもLinuxは無視できないためにソースコードを提供し、たまたま表に現れているだけなのだろう。
MicrosoftやVMwareのような、基本的に不自由なソフトウェアを開発する、堅そうな大企業にあっても、そのような文化が失われないのは興味深いことだ。おそらく、プログラマーとしての能力は、ユーモアの有無に左右されず、他の職業のようにユーモア欠落症に陥ることがなく、また、プログラマー文化としても、ユーモアを大いに推奨しているために、このようなことが起こるのではないか。
しかし、これまでのLinuxカーネルやGNUにおいて、こういった話は聞いたことがない。MicrosoftやVMwareのような、基本的に不自由なソフトウェアを開発している企業が、にわかに自由なソフトウェアに貢献しだすと発覚する。思うに、不自由なソフトウェアを開発する企業では、ソースコードを検証する人間が限られているために、このようなことが起こるのではないか。自分と直接関係ないソースコードを読む人間はすくない。しかし、社内のみの公開と、全世界への公開では、全世界への公開のほうが、全く関係のない人間によって読まれる可能性が上がるために、発覚するのではないか。
男の書いたコードに男っぽい内容があったって良いと思うんだがな、Hex Speakネタは面白いし
ReplyDelete世の中はもう少し寛容になるべきだと思う