カテゴリー
社会

ワードプレスのソースコードから8年間懸案の変数名「おしっこ」が除去

ブログツールとして世界中の多くのサーバで使われている WordPress のソースコードの、数限りなくある中のちょっとした修正は、変数名の”pee”と”tinkle”を書き換えるというものでした。


-442 function wpautop( $pee, $br = true ) {
+442 function wpautop( $text, $br = true ) {

wpautop()という関数は、ブログ記事のテキストに2行以上の改行があった時、それを<p>タグに置換する、という働きをします。

「WordPress(wp) が自動(auto)で p(タグ)をつける」といったあたりから命名された関数だろうと思いますが、WordPress の歴史は長いのでこの関数も昔から存在していたようです。

それで、この関数を書いた誰かは「オートでPする」の響きからの連想か、引数名に $pee(しっこ、幼児語)を使う言葉遊びをしてしまったようですね。

その後のどこかの時点の修正で $pees をループで一つずつ処理する際に、取り出す変数を $tickle (こちらも しっこ、幼児語)が使われています。

# tinkle というとリトルスターぐらいしか連想しませんが、そんな意味もあるんですね。

WordPress の公式バグ管理システムからは、8年前のチケットで初めてこの二つの変数名についての指摘がなされたことがわかります。

8年前は lead developer らから「単なるプログラマージョーク」「ユーモアを消すことはない」などと相手にされなかったようですが、3か月前にチケットが再オープンされ、今回は修正するということになったようです。

コードの差分を見るとわかるように、大量に修正箇所はありますが基本的に変数名と関数名の置換がほとんどです。$pee は #text に置き換えられていて、たしかに $pee よりはこれが何を保持しているのかわかります。

今回修正が通った際の core committers の反応は、「ワードプレスの成長に応じて、コード中のジョークやユーモアに対する耐性は減っていると思われる」「より多くの人をインクルーシブに受け入れることは重要」といったようなもの。

まとめると

  • 英語圏の人にしかわからないジョーク
  • 変数には変数の役割を表す名前を付けた方がコードを読む人の助けになる
  • 不快な人もいるならユーモアで済ませられない

といったあたりでしょうか。「個人としては気にしない/好きだが WordPress がこのことで避けられると困る」みたいな人もいるかもしれません。

時代の変化かもしれませんし、8年前の却下が妥当だったか、今回の修正が妥当だったかも人によって意見はわかれるかもしれません。ソースコードやコメントで遊ぶというのはプログラマーなら身に覚えのある人は多いと思いますが、完成品ではなくコード自体が広く配布される場合、遊んだ内容が誰かを不快にするものではないかという意識もあったほうがいいんでしょう。

WP Tavern via reddit/programming

カテゴリー
技術

Debian の perf を高速化するパッチと、そのGPL的な背景

Cargo の flamegraph ツールがDebian の perf のせいでとても遅いという話。

Cargo flamegraph sample

perf コマンドがプロファイルデータを解析する際に libbfd をリンクすればずっと高速になるのですが、Debian のポリシーでライセンスに違反するため libbfd をリンクすることはできないそうです。

[修正] コメントでの指摘を受け修正しました

perf のライセンスが GPL バージョン2、libbfd のライセンスが GPL バージョン3+ であり、これら二つのプロジェクトを合法的にリンクさせる方法がないそう。

Debian の Makefile では、わざわざ生成された perf コマンドが libbfd をリンクして「いない」ことをチェックするようになっているのですね。

そんな訳で、Debian の perf は dso 一つごとに addr2line コマンドをパイプで呼び出す(そして、毎回サブプロセスは終了する)方式となっています。

しかし、大量の perf 呼び出しを行う flamegraph を作ろうとした @leastfixedpoint さんは、いつまでも帰ってこない perf コマンドに業を煮やし、libbfd をリンクさせない範囲での高速化を考えました。

このパッチでは、addr2line を別プロセスとして起動させたままにしておき、dso をデータとして送り付け結果を受け取っても、addr2line プロセスを終了させないことで、とあるデータ量に対して68倍速く処理が終わるようにできたそうです。

対象のデータ量によっては気にならない程度の速度差なのかもしれませんが、同じようにここの処理速度で困ってる人もいるんじゃないでしょうかね。

via Hacker News

カテゴリー
ネットの事件

Linuxのソースコードコメントからf*ckを消してhugにしようと提案するパッチが議論を巻き起こす

ヤルコ・サッキネンさん(Jarkko Sakkinen)がリナックスDRM開発者メーリングリストに提案した33行のパッチは、コメント中の”fuck”を”hug”に置き換えるというだけのもの。提案の変更箇所は以下となり、変更内容はたとえばこんな感じです。


In order to comply with the CoC, replace **** with a hug.

Jarkko Sakkinen (15):
MIPS: replace **** with a hug
Documentation: replace **** with a hug
drm/nouveau: replace **** with a hug
m68k: replace **** with a hug
parisc: replace **** with a hug
cpufreq: replace **** with a hug
ide: replace **** with a hug
media: replace **** with a hug
mtd: replace **** with a hug
net/sunhme: replace **** with a hug
scsi: replace **** with a hug
inotify: replace **** with a hug
irq: replace **** with a hug
lib: replace **** with a hug
net: replace **** with a hug

Documentation/kernel-hacking/locking.rst | 2 +-
arch/m68k/include/asm/sun3ints.h | 2 +-
arch/mips/pci/ops-bridge.c | 24 +++++++++----------
arch/mips/sgi-ip22/ip22-setup.c | 2 +-
arch/parisc/kernel/sys_parisc.c | 2 +-
drivers/cpufreq/powernow-k7.c | 2 +-
.../gpu/drm/nouveau/nvkm/subdev/bios/init.c | 2 +-
.../nouveau/nvkm/subdev/pmu/fuc/macros.fuc | 2 +-
drivers/ide/cmd640.c | 2 +-
drivers/media/i2c/bt819.c | 8 ++++---
drivers/mtd/mtd_blkdevs.c | 2 +-
drivers/net/ethernet/sun/sunhme.c | 4 ++--
drivers/scsi/qlogicpti.h | 2 +-
fs/notify/inotify/inotify_user.c | 2 +-
kernel/irq/timings.c | 2 +-
lib/vsprintf.c | 2 +-
net/core/skbuff.c | 2 +-
17 files changed, 33 insertions(+), 31 deletions(-)

--
2.19.1

「抱きしめるな(don’t hug with this)」とか、「メモリコントローラーを困らせないよう(avoid hugging up the memory controller)」といった置換結果で、コメントが伝えたかったことが通じるのかどうか…

背景

リーナス・トーバルズ氏の謹慎と反省からの復帰もあり、他者への言葉遣いや態度について気を配ろう、という機運が盛り上がっている linux 界隈、インテルの技術者であるサッキネン氏は、アムステルダムからポートランドまでの10時間のフライト中にLinuxの新しい行動規範(Code of Conduct, CoC)を読み込む機会があり、そこからこの「言い換え」を思いついたそうです。

「罵倒・攻撃的・下品な言葉遣いを避ける(use of abusive, offensive or degrading
language)」というCoCの部分を提示していますが、なにしろ開発者のメーリングリストですので、検閲であるとか、まったくlinuxの機能を改善するものでもなんでもないとか、いろいろな反対意見が出てきました。

Code of Conduct には、それをどう解釈すべきかというガイド文書も有り、こちらには「CoCが作られるより前から存在するものには影響しない(Content that already exists predating the Code of Conduct will not be addressed now as a violation.)」という一文があることがメーリングリスト参加者から示され、今回の提案者は引き下がったようです。

行動規範 – The Linux Foundation (和訳)

via Phoronix