Ubuntuの開発とパッケージングについて学びながら、私にははっきりしない部分が1つあります。したがって、機能がフリーズする前にアクティブな開発(例:Raring)の最中であり、Ubuntu用にパッケージ化されたプログラムの改善に取り組みたいとしましょう-例:グアケ。バグを修正したり、新しい機能を追加したりしたいのですが、これを行うには2つの方法があります。
これら2つのアプローチのどちらが優れていますか?それは状況(例えば、貢献の種類-バグ修正または新機能;開発段階)に依存しますか?もしそうなら、どのように?経験豊富な人がこのトピックについてさらにガイドラインやアドバイスを提供できれば素晴らしいと思います。
GitHubエコシステムで作業しているときは、常に非常に明確に見えます-すべてが最新の開発バージョンを中心としており、すべてのプルリクエストが送信されます(少なくとも、プロジェクトXの古いバージョン0.7のコンテンツを送信する人にぶつかることはありません)。 Launchpadでは、パッケージとアップストリームブランチの間のこの不一致は、私を混乱させます。最新のUbuntu開発ビルドを実行し、そこで利用可能なソースを掘り下げる方がよいかどうかはわかりません(apt-get source <package>
)または、最新のトランクコードを安定したUbuntuに取り込み、変更を加えて、メンテナにこの変更をパッケージに転送してもらうことができるかどうかを確認する必要があります(再同期、ビルドが他のUbuntuライブラリに対して機能するかどうかの確認など)。 )
古いパッケージガイドと新しいパッケージガイドの両方を読みましたが、それでもこれらの質問について戸惑いました。
アップストリームブランチがLaunchpadでホストされている場合でも、Ubuntuをアップストリームから概念的に分離する必要があります。 Ubuntuのパッケージの大部分は、アップストリームブランチが完全に別の場所(GitHubまたはSourceForgeなど)でホストされています。 LaunchpadでホストされているアップストリームプロジェクトはUbuntuと密接な関係があるかもしれませんが、基本的に他のアップストリームプロジェクトと同じように扱う必要があります。
Ubuntuは、通常、出荷する他のすべてのソフトウェアと統合するために必要な場合にのみ変更を加えるアップストリームソフトウェアを再配布します。 ほとんどの場合、最良のオプションはアップストリームのバグを修正することです。そうすれば、修正はほとんどの人に届きます。これにより、ローカルの変更を維持する必要がなくなるため、Ubuntuの負担も軽減されます。
したがって、理想的には、プロセスは最初のオプションのように見えます。アップストリームでバグを修正し、アップストリームで新しいリリースを作成し、Ubuntuをそのバージョンに更新します。お気づきのように、物事は常にそのように機能するとは限りません。
Ubuntuとアップストリームプロジェクトのリリーススケジュールが一致していない場合があります。次のUbuntuリリースで見たいバグを見つけて修正したが、Ubuntuは3か月でリリースされ、アップストリームは次のリリースがいつになるかわからないとします。このような状況では、バグをアップストリームで修正し、Ubuntu固有のパッチとしてUbuntuのリリースにバックポートするのが最善の方法です。これは、Ubuntuの安定したリリースで修正を行う場合にも当てはまり、新しいアップストリームリリースを含めることができない可能性があります。
Ubuntuがアップストリームに変更を加えることがあります。バグがこれらの変更にある場合、修正はUbuntuに直接行く必要があります。これには、パッケージングなどの問題が含まれます。
すでにアップストリームで受け入れられていない限り、Ubuntuで新機能が受け入れられる可能性はほとんどありません。大規模なプロジェクトのために、特定の問題を修正するパッチをアップストリームに適用する前に受け入れることがよくありますが、通常、デザインや機能の点でアップストリームから逸脱することは好きではありません。
私は基本的にそれが依存すると言っていることを知っています、しかしそれはそうです!