オープンソースライブラリのバグが疑われる場合の対処方法


8

プロジェクトでは、いくつかのオープンソースライブラリを使用しています。それらの一部で問題が見つかることがあります(ライブラリのバグである可能性が高いですが、特にドキュメントが完全に100%完成していない場合は特に、私たちの側での使い方が間違っている可能性があります)。ライブラリは非常に複雑なことが多いため、問題の原因を特定するためにライブラリをデバッグすることは、かなり難しい場合があります。他にどのようなオプションがあり、どのようにそれらを正確に進めるかをまとめるのを手伝ってくれませんか?

最近、WindowsでTCMalloc(Googleスケーラブルメモリアロケータ)を使用しているときに奇妙な問題が発生したので、この特定のライブラリに適用される回答を歓迎しますが、より一般的な回答も適しています。

1)プロジェクトの管理者/所有者に支援を求めます。これはどのように行うことができますか?

2)問題を特定して修正するために誰かを雇う。これを行う方法?特定のライブラリで十分な専門知識を持つ人を見つけるにはどうすればよいですか?

...他のオプションはありますか?


1
オプション(1)を強くお勧めします。すべてのオープンソースプロジェクトサイトに欠陥を報告する場所があるか、メーリングリストを通じて開発者に連絡してみてください。プロジェクトがまだ生きているかどうかを考えれば、より早く答えを得ることができるはずです。

1
@NinjaCoder:不十分なドキュメントで死んだプロジェクトを使用するのは悪い決断かもしれません。プロジェクトを選択するときは、プロジェクトの活動を考慮する必要があります。
Matthieu M.

@Matthieu-私はあなたに完全に同意します。

プロジェクトの特定の人ではなく、プロジェクトに質問してください。IE、フォーラムのコメントまたは同等のものを作成します。コードのデバッグについて本当に心配する必要はありません(開発を進めたくない場合を除く)。開発者がバグを再現するための手段を提供する必要があるだけです。開発者は、開発ページからの投稿を含む定期的なメール更新を受け取ります。問題のプロファイリングをうまく行うと、開発者があなたを見つけます。また、次のリリースに含まれる可能性が高いため、すぐに修正されることを期待しないでください。
エヴァンプレイス2011年

回答:


15

私は通常、以下を順番に試します:

1)メーリングリストまたはフォーラムをチェックして、私のバグが新しいか、すでにトラッカーにあるか、または新しいバージョン/ SVN /その他で修正されているかを確認します

2)バグが不明な場合は、メーリングリストで質問してください。これは、バグではなく機能、またはRTFMであると言われたときです;)

3)バグが実際にバグであり、それが新しい場合は、誰かがバグを修正するまで待つか(追加情報の提供、テストまたはデバッグで支援できます)、または自分で修正してパッチを送信します。

緊急にバグを修正する必要がある場合は、ステップ2と3を一緒に実行することをお勧めします(バグを報告してパッチを提案します)。それ以外の場合、他の誰かが修正する価値があると他人が判断するかどうかに応じて、バグがタイムリーに修正される場合とそうでない場合があります。私は一度も試したことはありませんが、開発者や他のコミュニティのメンバーに「賄賂を渡して」バグに取り組むことができると思います。


メーリングリストをチェックするための+1。そのことを忘れていました。
Matt Ellen

また、ステップ#2では、短いテストケースが実際に役立ちます。(このアプローチは、オープンソース以外のライブラリ/コンポーネント/ ...にも同様に適用されます。バグ
Richard

@マット:ありがとう。公平を期すために、すべてのプロジェクトの背後にアクティブなメーリングリストやフォーラムがあるわけではありません。幸い、私が最もハッキングしたプロジェクト(多すぎない)はSDLとOgreで、非常にアクティブなコミュニティがあります。
ggambett、2011年

5
忘れました...誰かにバグを見てもらいたい場合は、バグを正確に再現するために必要な条件を提示してください。「あなたのコードが壊れた」と声を上げて言ったユーザーは無視されますが、バグを引き起こした原因の適切なプロファイルを提供する責任のあるユーザーは、通常、最も迅速にヘルプを受け取ります(アクティブなメンテナがいる限り)。ユーザーに直接影響するバグの修正は、通常、最優先事項です。ちょうど、開発者の時間が貴重であることを割引しないでください(そして、彼らはすでにプロジェクトの独自の開発に費やされている可能性があります)。
エヴァンプレイス2011年

5

OSSの素晴らしい点は、ソースコードを入手できることです。

そのため、自分で修正するか、誰かに雇って修正してもらうことができます。

重要なことは、コミュニティに還元し、修正を確認することです!


4

私が見つけた最も賢明な方法は、ライブラリに問題があり、自分で問題を見つけるスキルがない場合は、メンテナに連絡することです。彼らはコードを知っており、それが何であるか、またはライブラリを正しく使用する方法の方向性を指摘するバグについて調べることに感謝します。

たとえば、SVG Webを使用するサイトを開発しているときに解決できない問題がありました。私にはアクションスクリプトのスキルがないため、問題について質問するスレッドを開始し、最小限のテストケースでバグをログに記録するように指示されたので、それを行いました。問題はブラウザにあることが判明したので、コードを少し調整する必要がありました。

自分で修正できるほど賢い場合は、学んだことを忘れずに返してください。


2

バグを再現する方法がわかっている場合は、ユニットテストを記述してバグを公開することをお勧めします。(多くの場合、オープンソースプロジェクトにはすでに大規模なテストスイートがあります)。

失敗する単体テストは、「バグ」をプロジェクト管理者に伝える良い方法です。それがバグではなく、単にそれを誤って使用しているあなたなら、メンテナはこれが設計によるものであり、多くの場合その理由を指摘します。


1
残念ながら、私がこれまでに行った唯一の再現では、数GBのデータ、アプリケーション、および実行に数時間を必要とします。最初のステップとして、何とかしてこれを減らすようにします。問題を調査している可能性のあるメンテナーや外部の誰にとっても再現が重要であることを理解しているからです。
スマ

1

クリーンなテストケースを作成し、メーリングリストに送信します。

IMEは、テストケースの作成中に独自のコードでエラーを見つけることがよくあります。


1

まだ言及されていないからといって、「スマートな方法で質問する方法」を読んでください。質問をしたり、開発コミュニティからの助けを求めたりする方法について、非常に貴重なアドバイスがたくさんあります。コミュニティの仕組みを理解し、ルールに従って行動することを確認してください。敬意を表する場合は、必要な詳細情報(およびバグの可能性がある場合は再現レシピ)をすべて提供してインテリジェントな質問をすると、妥当な応答が得られる可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.