誰もが費用、利益、リスクを負担できる限り、それを行うことには何の問題もありません。
...修正は十分に単純なようです...自分でコードにパッチを当てる
あなたが仕事をするとき、完璧な(まさにあなたが望むものであるサードパーティのライブラリを持っている)が十分な敵(あなた自身でそれをパッチする)であり、時にはあなたはそのようなことをしなければなりません。ベンダーがそれに到達する前に問題を修正できるように、商用ライブラリのソースライセンスを購入したプロジェクトを数多く行ってきました。
...中傷者は、これは危険であり、厄介な複雑さをもたらすという点で、ほとんど常に悪い考えだと主張します。
他の人のコードの分析、問題の特定、修正の作成を処理する機能がない場合は、悪い考えです。コードが社内であろうと第三者であろうと、それは事実です。唯一の違いは、膝に着地する前に、それがキュービクルまたは建物の壁の上に投げられたかどうかです。
批判者が、このパッチを適用しないことのコストを考慮せずに、単にアイデアを片付けている場合、彼らは宿題をしていません。パッチが修正するバグの影響を受ける社内コードが多数ある場合は、修正して問題を回避し、すべてを再テストして、正しく動作することを確認する必要があります。その後、パッケージをバグ修正バージョンにアップグレードした場合、回避策を見つけて削除し、再度テストする必要があります。同様に、変更したケースを見逃したり、テストが不十分だったりするなどのリスクがあります。個人的に、そのソースでバグを修正する機会があれば、ハエたたきで残りのコードを追いかけ、すべてを手に入れることを望んでいます。
...コードの変更は私たちによって行われました...それはコードベースの一部でなければなりません...新しいプロジェクトとして導入し、その自動ビルドをビルドプロセスに組み込む必要があります。
パッチを作成している場合、パッチは独自のコードの一部であるため、プロセスの一部にする必要があります。これは、システムに100%コードを追加することと何も変わりません。サードパーティのディストリビューションを神聖なものとして扱い、ソースコードと同じようにモジュールに入れます。作成したパッチは、個別のファイルに保存され、ビルドプロセスの一部として適用されます。そうすることで、常にクリーンなソースからパッチを適用したソース、ビルドされた製品に移行し、何が起こっているかを正確に示すことができます。(一部の人々は、バージョン管理でそれを解凍、ハンドパッチ、再パック、保存します。それは悪いことです。)
...私たちはソース管理リポジトリからコードを私たちのものに引っ張っていて、コード変更の背後にある歴史を失います...
サードパーティのライブラリをサードパーティの依存関係として扱っている場合、最初からその履歴はなく、何も失うことはありません。サードパーティのリポジトリに引き続きアクセスできる場合は、必要に応じて相談できます。サードパーティのリリースは、変更せずに独自のシステムにチェックインするアモルファスBLOBのように扱う必要があります。使用しているリリースとそれ以降のリリースとの間の変更を確認する必要がある場合は、それを行うことができ、必要に応じて、必要な変更を組み込んだ古いバージョンへのパッチを作成します。
また、実行する必要のあるこのような小さなコードの変更には、非常に複雑すぎるもののように思えます。
ビルドプロセスが十分に洗練されている場合、これを追加することは、独自のコードを追加することより難しくありません。unpack / patch / buildプロセスが自動で行われるようになるまでには少し手間がかかりますが、一度完了すると、それは永遠に行われます。現在1つのバグがあるかもしれませんが、将来20になる可能性があります。存在する場合は、次の19の作業をはるかに少なくするため、すべてを今すぐサポートするための基礎を築いた方がはるかに幸せになります。