FAQ: コードへの貢献

Django のコードに貢献し始めるにはどうすればいいですか?

聞いてくれてありがとうございます!この質問に答えている完全なドキュメントがあります。Contributing to Django をお読みください。

数週間前、チケットシステムでバグフィックスを送ったのですが、どうして私が送ったパッチは無視されてしまうのでしょうか?

心配しないでください。私たちはあなたを無視していません!

「チケットが無視されていること」と「チケットがまだ関心を集めていないこと」との間には違いがあることを理解することが重要です。Django のチケットシステムには数百もの未解決のチケットがあり、機能の点でエンドユーザに与える影響の度合いも様々です。そのため、Django の開発者はそれらをレビューして優先順位付けをする必要があります。

その上、Django の作業をしている人はみなボランティアです。そのため、Django のために働ける時間は限られていますし、その時々によりどの程度の時間が確保できるかが変化します。我々が忙しい場合には、十分な時間を Django のために費やすことができないかもしれません。

チケットが受け付けられる前に止まってしまわないように最良の方法はその分野のコードに詳しくない人でも簡単に問題を理解し、修正が確認できるような内容にすることです。

  • バグを再現するための明確な手順は書かれてますか?もし、依存関係(たとえばPillow)や contrib モジュールや、ある特定のデータベースなどが関係しているのであれば、それらに関する手順も詳しくない人にとっても十分分かりやすく書かれていますか?
  • チケットに複数のパッチが添付されている場合には、それらの一つ一つが何をしているかやどのパッチは無視してよくて、どのパッチは重要かが明確にされているでしょうか?
  • パッチにはユニットテストが含まれていますか?もし含まれていないのなら、なぜ含まれていないかの非常に明快な理由を書いてください。テストはその問題がどういうものか簡潔に表現し、かつ問題が本当に修正されたかを示すものです。

もしあなたのパッチが Django に取り込まれる可能性がない場合でも我々はそれを無視したりせず、ただチケットをクローズするだけです。もし、チケットがオープンのままだったとしても、それは我々があなたを無視しているわけではないです。単に対応するための時間がないのです。

いつ、どのようにしてチームに自分が気にかけているパッチのリマインドをするのでしょうか?

丁寧で、程よいタイミングでのメーリングリストへのメッセージが、リマインドの一つの方法です。程よいタイミングを見極めるためには、スケジュールを良く見る必要があります。リリースの締め切り前にメッセージを投稿すると、必要な注意が払われる可能性は低いです。

丁寧なIRCのリマインダーでも良いでしょう。繰り返しになりますが、可能ならタイミングを見計らってください。例えば、バグスプリントの期間はとても良いタイミングでしょう。

目に付きやすくするためのもう一つの方法は、いくつかの関連するチケットをまとめることです。誰かが腰を据えてバグのレビューに取り組む時、対象の領域にしばらく触れていないと、関連するコードの動作の詳細をはっきりと思い出すために少し時間がかかります。あなたが関連するグループのバグフィックスをまとめておけば、取り組むのに魅力的なターゲットにすることができ、複数のチケットに分散しているよりもコードをすぐに思い出せるようになります。<br data-mce-bogus="1">

個人的に誰かにメールを送ったり、すでにある同様の issue を繰り返し上げることは避けてください。この種の振る舞いをしてもあなたは注目されませんし、問題を解決するために必要な振る舞いでは決してありません。

何度かリマインドを送ったのですが、私のパッチは無視され続けています!

本当に、私たちはあなたを無視している訳ではないのです。もしあなたのパッチが Django に組み込まれないのなら、私たちはそのチケットをクローズします。そのチケット以外のチケット全てに対して、私たちは優先順位を付ける必要があり、あるチケットが別のチケットよりも優先して対応されることがあるのです。

バグ修正の優先順位を付ける一つの基準は、そのバグによって影響を受ける人々の数です。多くの人々に影響する可能性があるバグは通常、非常に特殊な状況下で発生するバグよりも高い優先度が付けられます。

より大きな問題の一つの症状としてバグが発生した場合に、しばらくバグが放置される場合もあります。多数の小さなパッチを実装、テスト、適用するのに時間をかけることも場合によっては可能ですが、正しい解決法は再構築することです。あるコンポーネントに対する再構築や修正が提案もしくは対応中である場合、そのコンポーネントが影響しているバグにはあまり注意が払われていないように見えるかもしれません。繰り返しになりますが、これは潤沢ではない開発リソースで何を優先するのかという問題というだけなのです。再構築に集中することで、私たちは一度に多くの小さなバグを潰すことができ、上手くいけば別の小さなバグが将来的に発生するのを防ぐことにもなります。

いずれにせよ、あなたが特定のバグに定期的に遭遇しても、必ずしも全ての Django ユーザーが同じバグに遭遇するとは限らないことを留意していてください。異なるユーザーが、異なる環境下で異なる部分にコードが影響を与えるいろいろな方法で Django を利用しています。相対的な優先度の評価に際して、通常私たちは個別のユーザーにとっての重症度だけでなく、コミュニティ全体の需要を考慮しようとしています。これはあなたが遭遇した問題を私たちが軽視するということでなく、利用できる有限な時間内において、私たちは 1 人よりも 10 人を幸せにした方が良いと考えているだけなのです。

私のチケットは完全に100%完璧だと確信しています、しかし自分で「チェックインの準備ができました」とマークすることはできますか?

申し訳ありませんが、ありません。チケットは常に他の視点で見る方が良いのです。もし、他の視点を得るのが難しい場合は、上記の質問を参照してください。