5

私たちのチームは、サイズがはるかに大きいプロジェクトに移行しており、その多くは、その中でいくつかのオープンソースプロジェクトを使用しています。

ライブラリと依存関係を比較的モジュール化して、新しいリリースがリリースされたときに簡単にアップグレードできるようにするためのアドバイスやベストプラクティスはありますか?

言い換えれば、オープンソースプロジェクトのフォークであるプログラムを作成するとします。両方のプロジェクトが成長するにつれて、コアの更新を維持および共有するための最も簡単な方法は何ですか?

私が求めていることについてのアドバイスをお願いします...「代わりにこれを行うべきです」または「なぜあなたは」という必要はありません。ありがとう。

4

2 に答える 2

6

オープンソースプロジェクトのクローンを使用する場合、最大の問題の1つは、アップストリームソースに応じて同期/パッチを適用することです。新機能については気にしないかもしれませんが、重大なバグ修正を適用する必要があります。

私の提案は、そのような内部プロジェクトを共有ライブラリに注意深くラップすることです。そうすれば、ABIが変更によって壊れない場合は、多かれ少なかれ痛みを伴わずにそれらの部分だけをアップグレードできます。

もう1つ、オープンソースプロジェクトでバグを見つけて修正した場合は、修正を自分自身に留めないでください。パッチをアップストリームにプッシュします。これにより、プロジェクトが改善され、新しいバージョンとマージする日数が節約されます。

于 2010-04-04T22:44:48.940 に答える
4

優先順に

  1. サードパーティのライブラリにはできるだけ変更を加えないでください。コード内でそれらの制限を回避してみてください。変更を文書化してから、パッチを送信します。
  2. それらの制限を回避できない場合は、パッチとして変更を送信してください(これは、一部のプロジェクトの氷河期のペースでは理想的かもしれません)。
  3. これらのいずれも実行できない場合は、一元化された場所で変更した内容を文書化して、新しいバージョンの統合を行っている貧しい人が、何を行っているのか、また、加えられた変更がまだ必要かどうかを把握できるようにします。 。

1と2が非常に好まれますが(ただし、それぞれ高速と非常に低速)、3番目のオプションは、コードベースが依存関係のコードベースから逸脱しているため、頭痛とバグにつながるだけです。私のコードでは、ヘッダーファイルを熟読する必要がない限り、サードパーティのコードをIDEにロードしていません。これにより、自分のものではないものを変更したいという誘惑がなくなります。

モジュール性に関しては、これは、比較的安定したサードパーティのライブラリを使用していることを前提としています。プログラムは、公開されているインターフェイスにのみ適用してください。ソースがあるからといって、コード全体でそれを使用する必要があるわけではありません。これにより、更新を基本的にドラッグアンドドロップできるようになります。さて、これは完全に理想的ですが、私が取り組んでいるコードで私が目指していることです。

于 2010-04-04T22:45:37.720 に答える