ものがたり(旧)

atsushieno.hatenablog.com に続く

htmlspecialchars: 問題を解決するにはどうすればよいか案

http://d.hatena.ne.jp/IwamotoTakashi/20091006/p1
http://www.tokumaru.org/d/20090930.html#p01

先にはてブでコメントしてから2つ目以降を読んだっていうのはまあ秘密だとして。わたしは日本の人がどんだけPHPに関わっているか把握していませんが、見ていてこんなことを思いました:

この問題は多分今のアプローチだと解決しないでしょう。というのは、今回岩本さんが書いたパッチは「仕様変更」を要求するものなので、bugtrackerで議論するだけでは結論が出せない/出しにくいもので、メーリングリストなどでちゃんと多くの人が見ているところで議論すべき内容なのです。開発者はほぼ例外なく開発MLを見ているでしょうが、バグレポートMLは(もしあれば)大量に流れてくるので、自分がメンテナンスしていない無関係なものは見ないという人も多いでしょう。わたしも無関係なものはほぼ見ません。

IRCも有望な解決方法のひとつです。特にbugtrackerやMLでは無駄にタイムラグが発生するので、IRCで話を聞けばすぐ解決できるような、やりとりが多重にわたる相談は、そっちでやるといいです(今回の件で言えば「既存のバグってどれよ?」「それは違う問題なんじゃないの?」的な。相手のハッカーもなまものなので、返事を待たずに質問をたたみかけられると面倒がって相手してくれなくなったりします)。ただ、timezoneの違いがあるので、難しいこともあるかもしれません。

2番目のエントリを見る限り、仕様そのものがクリティカルにやばいという性質のものではなさそうなので、まず現行仕様で最低限のfixとなるパッチを投げるのが筋です。特に、UTF-8のoverlongsの扱いに関する仕様変更を伴うようなパッチは、きちんと議論してからが良い(SJISなどはぶっちゃけ外人にとってはどうでもいいことなので、仕様変更しても気づかない可能性はあります)。裏技としては、日本語エンコーディングにしか影響しないようなコードに条件分岐してしまうという手もあります(!)。いずれにしろ、岩本さん本人はPHPハッカーというわけでもなさそうだし、PHPのMLに(ROMではない的な意味で)参加しているわけでもなさそうなので、この辺は普段からMLに投げている人、それがいないならせめて眺めている人がヘルプするといいんじゃないかと思います。相手にとって、どこの馬の骨とも知れぬ人がbugtrackerにやってきて仕様変更を求めてきた、なんていうシチュエーションは、むしろ安易に動くべきでない状態ですから。

あと、PHPのカルチャーがどんなものかは知りませんが、テストコードを出来ればそのままcommitできるようなかたちで追加してあげるといいと思います(テストコードはあるみたいですし)。この辺はcommitのノリを把握している人がやったほうが上手くできるかもしれません。SJISの扱いにしか影響しないようなものなら、求められない限りわざわざ出さなくてもいいかも。

http://d.hatena.ne.jp/matarillo/20091008/p2
http://akimoto.jp/blog/2009/10/08/bug-report-in-foreign-language/

のように、じっくり問題を説明してやるというのもひとつのアプローチですが、メンテナが面倒がって読まなくなったりしたら意味がないので(やつらは基本的に面倒くさがりです)、説明の長さ的には岩本さんのbugエントリくらいでもいいと思います。むしろ既存のレポートとかぶっているならそっち次第です。もっとも、メンテナも大量に飛んでくるレポートを飛ばし読みしていて、違う問題のレポートと同じ問題だと思っている可能性はあります。そこで「どれが同じなんだよ?」と厳しく追及しても面倒がって他のハックを優先されてしまうだけなので、「bug #xxxxのことかな? これは違うと思う」みたいに書くといいでしょう。bug #49785の書き方だとちょっと意地悪にも見えてしまいます*1

ちなみにはてブでは、コーディング規約に沿っていないからそもそも面倒がって見られていないんじゃないか(いやこんなこと当たり前に起こることだからね)みたいなことを書いて、岩本さんにもどうやら早速対応していただいたのだけど、状況によってはむしろコードの差分がわかりやすいことが重要だという場合もあるので(インデントなんて肉体労働で直せるけどコードリーディングはそうもいかない)、黄金則ではないです。その辺は空気を読んで投げるといいと思います。

akky氏も書いているけど、こういうのは、問題だ問題だって日本で騒いでいても解決しません。どうせグローバルなハッカーコミュニティなんて大した英語力は期待していないので(日本人に限らずへんてこな英語を使う人はたくさんいます)、岩本さんが今回やったように、日本人もどんどんコミュニティに参加すると良いと思います。「残念だ」とか書いたりPHPに難癖をつけて不毛な自己満足に溺れているようなことをしていても、ハッカーには鼻で笑われるだけです(あるいは表では丁寧に対応してくれるかもしれませんが、評価は割ときっちり下げられます)。少なくともわたしが彼らのような連中について海外の人から「xxxって日本人が来たけど、どんな奴よ?」って訊かれたら、きっちり教えてやります。

…てか、今html.cのcommit logを眺めていたんだけど、問題のbugエントリのコメント者も固定メンテナって感じではないのね。てか日本人(たぶん)いるじゃん! 彼らに頼んだ方が楽ですよきっと。もうやっていないのかもしれんけど。

*1:日本人だとそういう感覚は無いかもしれませんが、「xxxさんは」より"you"と書いた方が、対話をする意思が読み取られるので好感がもてます。Jani's comment does not make sense. だと対話をあきらめて第三者に主張しているようにもとられかねない。複数のコメント者がいても eno: do you mean ...? のように宛先を書いてyouを使ったりします。