QA@IT

Rubyの機能について改善要望をしたい場合は?

4008 PV

Rubyの機能について改善要望をしたい場合(例えば、Object#blank?がほしいとか)について、次のような質問があります。

  1. 要望を出すための公式なまたは標準となっている手続きがあれば知りたい。
  2. そのような手続きがあるとして、要望を出すための最低限のマナーを知りたい。具体的には、初〜中級者による不完全な、つまり単なる願望、過去の経緯に対する無知、実装コードを伴わない要望などは、歓迎されないのかを知りたい。
  3. 過去にあった要望とそれに対する評価(拒絶の理由)を効率的に一覧する方法があれば知りたい。

以上、よろしくお願いします。

回答

  1. バグレポートガイドライン( http://bugs.ruby-lang.org/projects/ruby/wiki/HowToReportJa )があります。 「改善要望」はバグ報告に限らず仕様変更や機能追加の場合もあるでしょうが、概ねバグレポートに準じると思って差し支えありません。 この場合はチケット登録時にトラッカーとして「Feature」を選んで下さい。
  2. マナーはよくわかりませんが、愚かさにはその度合いに対応した反応(無視を含む)が返されるでしょう。 実装は必ずしも要求されませんが、ユースケースの提示がないFeatureリクエストはほぼ無条件にrejectされる傾向はあります。
  3. 効率的かどうかはともかくとして、チケット一覧( http://bugs.ruby-lang.org/projects/ruby-trunk/issues )を適切な条件で絞り込み検索するといいのではないかと思います。 ステータス「完了」、トラッカー「Feature」あたりでしょうか。

なお、田中哲さんの書かれた「matzを説得する方法 How to persuade matz - http://www.a-k-r.org/pub/howto-persuade-matz-rubykaigi2008.pdf 」というスライドがあります。
これは一度目を通しておくべきでしょう。

編集 履歴 (1)
  • linkに一通り目を通しました。大変参考になりました、ありがとうございます。
    > 愚かさにはその度合いに対応した反応...
    なるほど、なるほど。傷つかないためには過去のリクエストから学ぶのが先のようですね..
    -

他の方の回答もご参考にしていただくとして、それ以外で気をつける点を。

  • 最近のRubyは新機能に関して禁欲的な傾向があります。どうしてもRuby本体に入っていないと困る、という機能でなければ、たとえばRailsに入れてもらう、という戦略のほうが目標達成は容易かもしれません(9割の人はRailsを使うでしょうからRailsに入ってしまえばほぼOKではないでしょうか)。あるいは、自作のGemとして公開するというのも考えられます。

  • しかし中にはどうしても本体で対応すべきと思われる機能もあるでしょう。Rubyに追加される新機能ではその どうしても本体で対応すべき理由 が重要です。その理由に妥当性があると判断されれば入る可能性が高くなりますので、この部分はとくにブラッシュアップさせてください。

  • マナーは、他の技術系のフォーラムなどとくらべて特に変わったところはないとおもいますので、技術系メーリングリストで質問するときのパターン・ランゲージなどを参考にしてもらえばよいと思います。

編集 履歴 (0)
  • 何となく雰囲気は分かりました。改善要望に対する門戸は必ずしも広くはない、ということですね。linkに目を通しました。これは参考になりました。ありがとうございます。 -
  1. POLSをrationaleとする提案は準自動的にrejectされます。
編集 履歴 (0)
  • ごめんなさい、意味が取れませんでした。 -
  • "これは(俺にとって)Principle of Least Surpriseに反している" から変更すべき、という提案のことですね。 -
  • 意味がわかりました^^; 補足ありがとうございます。 -

Ruby Issue Tracking Systemのwikiに「How to request features in Ruby」というfeatureリクエストの手順を説明するものが上がっていました。ここに現時点での原文と拙訳を載せておきます。

HowToRequestFeatures - Ruby - Ruby Issue Tracking System


How to request features in Ruby

Steps to follow

  1. Insure it's a meaningful improvement
    • Was this improvement ever proposed or discussed? (Search in Google or Redmine)
    • Is there already a way to achieve a similar result?
    • Would it benefit many people? Can you find cases in existing code where it would be useful?
  2. Think about it
    • What's a good name?
    • What exact arguments does it accept?
    • What does it return?
    • Any risk of incompatibility?
  3. Write it up
    • State how the current situation can be improved
    • Make a concise but complete proposal
    • Address objections you can foresee
  4. Create a Feature Request on http://bugs.redmine.com and follow through. Open one issue per feature request!

Rubyでのfeatureリクエストのやり方

以下の手順に従うこと

  1. 意味ある改善か再確認する
    • その改善は過去に提案または議論されていませんか?(GoogleするかRedmineを検索して)
    • 同様の目的を達成できる方法は既にありませんか?
    • みんなの利益になりますか?既存コードで使ったら有益になる事例を見つけられますか?
  2. 考慮する点
    • 良い名前は?
    • それが取る的確な引数は?
    • それが返す値は?
    • 互換性をなくすリスクは?
  3. 書き始める
    • 現状をどのように改善しうるかを述べる
    • 簡潔かつ不足のない提案にする
    • 予測しうる反論を見越して説明する
  4. http://bugs.redmine.com でfeatureリクエストを作って、watchする。featureリクエストごとに1つのissueを開くこと!
編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。