オープンソースパッケージを移植する際の一般的な指針は、自身のシステムでビルドおよび実行可能にするために行った変更を追跡し、その変更がコミュニティ全体にとって有益であると判断した場合は、パッケージのメンテナに提出することです。通常、これは将来同じパッケージを移植する際の労力を軽減する利点も伴います。
私は多くのソフトウェアパッケージをVOSおよびOpenVOSに移植してきましたが、通常は変更内容をメンテナに送るようにしています。ただし、常にそうしているわけではありません。その理由は以下の通りです。
1. 一部の変更はOpenVOS環境に固有です。OpenVOSにのみ適用される制限を回避するための変更を加えた場合、この変更をアップストリームに送信する意味はほとんどありません。メンテナは通常、そのようなパッチを拒否します。例としては、OpenVOS 17.0以前のバージョンがファイル名の長さに課していた制限が挙げられます。
2. オープンソースパッケージの後のリリースでは、既に変更が採用されている可能性があります。変更を送信する前に、誰かが先にその変更を行っていないか確認することをお勧めします。特に、元のソースコードをダウンロードしてから時間が経っている場合は注意が必要です。古い変更で皆の時間を無駄にするのは得策ではありません。
3. 変更は実際には別の製品で行われています。例えば、私は最近MySQL 5.1.48をOpenVOS Release 17.1へ移植する作業を完了しました。ビルドスクリプトに様々な変更を加えることで、OpenVOS 17.1の新しい動的リンク機能を利用できるようにしました。 しかし、これらの変更をMySQLチームに送る意味はありません。なぜなら、変更点は実際には別のチームが管理するautoconfパッケージにあるからです。MySQLパッケージはautoconfの単なる利用者であり、特定のプラットフォーム向けにautoconfがどのような動作をするかについて、彼らには一切の制御権がありません。
4. パッケージを入手してから今日まで、あまりにも長い時間が経過してしまった。問題は、オープンソースパッケージが常に変化する対象であることだ。安定して更新頻度の低いパッケージもあれば、絶えず変化を続けるものもある。MySQL 5.1.48の移植に9ヶ月を費やしたのは、これが副業としての取り組みだったこと、そして移植完了後も社内テストとリリースプロセスとの同期が必要だったためだ。 そのため、MySQLチームにパッチを送り戻す準備が整った頃には、彼らは一般提供サイクルではバージョン5.5へ、開発サイクルではバージョン5.6へと移行していました。私が行った変更の多くはもはや単純に適用できず、ソースファイルがリネームされたり新しいディレクトリに移動されたりしているケースもあります。 現在のバージョンにパッチを完全に更新する作業は可能ですが、それは膨大な労力を要し、少なくとも私の見解では、その労力に見合う価値はありません。この経験から学んだ教訓は、変更が自分のバージョンで安定したらすぐに上流に送るべきだったということです。これは明らかに判断が求められる部分です。
時には、特定のプラットフォーム向けに、適切に記述され、十分にデバッグされたパッチを送信するために必要な手順をすべて踏んでも、メンテナがそれを無視したり拒否したりすることがあります。それは苛立たしいかもしれませんが、あまり気に病む必要はありません。多くのオープンソースパッケージはボランティアによって維持されており、そのため、あまり一般的ではないプラットフォーム向けのパッチに対応する時間が限られているのです。
MySQL 5.1.48のOpenVOS移植版に関しては、調査により現行開発リリース版に依然として存在する、MySQLパッケージ内の明確に定義された独立した問題について、5件の具体的なバグレポートを提出することを選択しました。 また、当社の変更点を全て還元するため、バグ報告も作成しました。これはGNU一般公衆利用許諾契約書の条項に沿った措置です。各ケースにおいて、バグ報告をクローズするのに適切と判断した変更点を示すソースコードパッチを提供しました。MySQLチームが私が要求した5つの具体的な変更を統合してくれることを期待しています。これらはOpenVOSだけでなく、他のプラットフォームにも影響を及ぼし得る問題です。 MySQLに送信したパッチを確認したい場合は、http://bugs.mysql.com にアクセスし、「詳細検索」をクリック後、バグ番号 44300、44832、60907、60908、60910、60911、60912、60913 を検索してください。
Stratus社はMySQL 5.1.48のOpenVOS向け移植版を「MySQL for OpenVOS, Release 2.0」と命名し、OpenVOS Release 17.1の提供開始と同時に、まもなく一般提供を開始する予定です。
