オープンソースのパッケージを移植する際の一般的な経験則は、システム上でビルドして実行するために行った変更点を記録しておくことです。通常、これは同じパッケージの将来の移植のための労力を減らすという利点もあります。
私は多くのソフトウェアパッケージを VOS や OpenVOS に移植してきましたが、通常は自分の変更点をメンテナに送るようにしています。しかし、いつもではありません。その理由はここにあります。
1.いくつかの変更はOpenVOS環境に特有のものです。OpenVOS にのみ適用される制限を回避するために変更を加えたとしても、この変更を上流に送ることにはほとんど意味がありません。メンテナは一般的にそのようなパッチを拒否します。例として、17.0以前のバージョンのOpenVOSではファイル名の長さに制限があるかもしれません。
2.いくつかの変更点は、オープンソースパッケージの後のリリースですでに採用されているかもしれません。変更を送る前に、誰かに先を越されていないかどうかをチェックして確認することは、常に良いアイデアです。オリジナルのソースコードをダウンロードしてからしばらく経っている場合は特にそうです。陳腐な変更でみんなの時間を無駄にしても意味がありません。
3.変更点は実際には別の製品にあります。例えば、私は最近 MySQL 5.1.48 を OpenVOS リリース 17.1 に移植し終えました。ビルドスクリプトに様々な変更を加えることで、OpenVOS 17.1の新しいダイナミックリンク機能を使用できるようにしました。しかし、これらの変更を MySQL チームに送っても意味がありません。なぜなら、変更は実際には別のチームによってメンテナンスされている autoconf パッケージにあるからです。MySQL パッケージは autoconf のユーザに過ぎず、任意のプラットフォームで何をするのかを制御することはできません。
4.パッケージのコピーを掴んでから今日までの間に時間が経ちすぎています。ここでの問題は、オープンソースのパッケージは移動する対象であるということです。パッケージの中には非常に安定していて更新頻度が低いものもあれば、常に変化しているものもあります。 私は MySQL 5.1.48 の移植に 9 ヶ月を費やしましたが、それはパートタイムの努力であり、一度移植しても社内のテストとリリースのプロセスと同期しなければならなかったからです。 そのため、私がいくつかのパッチを MySQL チームに送り返す準備ができた頃には、彼らはバージョン 5.5 (一般利用可能サイクル) とバージョン 5.6 (開発サイクル) に移行していました。 私がしなければならなかった変更の多くは、もはやクリーンに適用されません。パッチを完全に現在のバージョンに更新する作業をすることもできますが、それは大変な作業であり、少なくとも私の考えでは、それを必要とする労力に見合うものではありませんでした。私にとっての教訓は、私のバージョンが安定したらすぐに変更を上流に送るべきだったということです。これは明らかに判断材料の一つですね。
特定の、よく書かれた、よくデバッグされたパッチを送っても、メンテナに無視されたり、リジェクトされたりすることもあります。これはイライラさせられることもありますが、それを気にしてはいけません。多くのオープンソースパッケージはボランティアによってメンテナンスされているので、一般的ではないプラットフォーム用のパッチを扱う時間は限られています。
MySQL 5.1.48 の OpenVOS 移植版の場合、私の調査によると、現在の開発リリースにはまだ存在していることがわかっている MySQL パッケージの明確に定義された独立した問題について、5 つの特定のバグレポートを公開することにしました。 また、私はバグレポートを公開して、私たちの変更点をすべてフィードバックすることができるようにしました。これらのそれぞれのケースで、私はバグレポートを閉じるのに適切だと思われる変更を示すソースコードパッチを提供しました。私は、MySQL チームが私が要求した 5 つの具体的な変更を統合してくれることを期待しています。これらは OpenVOS だけでなく、他のプラットフォームにも影響を与える可能性のある問題を表しています。私が MySQL に送ったパッチを見たい方は、http://bugs.mysql.com にアクセスし、詳細検索をクリックして、バグ 44300, 44832, 60907, 60908, 60910, 60911, 60912, および 60913 を検索してください。
MySQL 5.1.48のOpenVOS移植版は、Stratusが「MySQL for OpenVOS, Release 2.0」と呼ぶ予定で、OpenVOS Release 17.1のリリースと同時に近日中に一般公開される予定です。