スパイスの仕組みの変更による開発者への影響
スパイスの仕組みの変更による開発者への影響を紹介します。ここで言う「開発者」とは、「スパイス」の開発者のことです。
スパイスの概要やユーザーへの影響などは、まず以下を参照してください。
今までのスパイス開発
今まで「スパイス」開発では、開発者は自由に制約なく開発を行うことができ、「Linux Mint」や「Cinnamon」の開発チームは彼らの開発プロセスに全く関与していませんでした。開発者は作りたい「スパイス」を開発でき、様々なファイルで構成された「スパイス」をZIPアーカイブでパッケージングし、「Cinammon Spices」にアップロードすることができました。
そしてユーザーは「スパイス」をダウンロードし、ユーザーはその「スパイス」を自分の環境で実行できます。
開発者は「スパイス」を直接ユーザーに届けることができ、遅延なくアップデートを提供することができました。
しかしこの方法には問題があります。
1.放置されたスパイス
もしある「スパイス」の開発者がいなくなったり、あるいは何かしらの理由でその「スパイス」の開発者が保守から離れたら、その「スパイス」は今後アップデートされることはありません。この時不具合の修正等「スパイス」をアップデートするには、その「スパイス」から派生した新たな「スパイス」を作り、別の人が保守を行うしかありません。
2.品質のばらつき
開発者は、他の開発者が開発している「スパイス」に対して行われた修正や改善された機能をすべて把握することは不可能です。もし他の開発者が行った修正が自分が開発している「スパイス」に対しても有用な修正だったとしても、すべてを把握できない以上それらの修正を見逃すことになるでしょう。
例えばある「スパイス」にクラッシュする不具合があり、自分が開発している「スパイス」にも同じ問題があった場合、開発者がそのことに気づかなければその「スパイス」の不具合は修正されないでしょう。
3.新機能や変更点の追従
「Cinnamon」にて新機能の実装や既存機能の変更があっても、もし開発者が「スパイス」の正しい実装方法を知らなかったとしたら、適切な方法で「スパイス」を実装することはできません。しかしそれは開発者の問題ではありません。
「Linux Mint」や「Cinnamon」の開発チームは、開発者がすべての新機能やAPIの変更点を知っているあるいは追従していると期待することはできません。
加えて開発者が新機能をどのように実装すればよいのか、マルチインスタンスやマルチパネルのサポートをどうやって行えばいいのか、開発者が常にその方法を把握しているという前提に立つことはできません。
開発者の中には、他の動作している「スパイス」から自身の「スパイス」へコードをコピーしたり、その「スパイス」を参考にすることで自身の「スパイス」を実装しているケースもあります。
それはそれで良いのですが、理想的な状況とは言えません。
理想は、開発チームと開発者の距離を近づけ、新機能や変更に追従できるよう開発チームが支援することです。
4.悪意あるスパイス
開発者が悪意ある「スパイス」をアップロードし、利用者にその「スパイス」を利用させることも可能です。開発者が信頼できるかどうか、アップロードされた「スパイス」の提供元が信頼できるかどうか、何が変更されたのか把握することが困難です。
また誰でもアカウントを取り、そのような「スパイス」をアップロードすることも可能です。
この状況を変えるため
このような問題を解決し状況を改善するため、「スパイス」の開発プロセスが変わります。今まで「スパイス」の開発では、開発者にあらゆる権限がありました。
新しい開発プロセスでは、開発者の権限に制約が加わります。
そのため開発者によっては残念に思う状況があるかもしれません。
しかしその一方で、「スパイス」のパッケージングや不具合の修正方法、新しい「Cinnamon」をサポートする方法など開発チームが開発者を支援します。
開発チームが中継ぎをする
「スパイス」を提供する開発者と「スパイス」を利用するユーザーの間に、「Linux Mint」や「Cinnamon」の開発チームが加わります。開発チームの役割は、以下の通りです。
1.コードレビューの実施
開発チームは悪意あるコードが含まれていないことを保証するため、「スパイス」のすべての変更に対しレビューを行います。2.実装の変更や修正
スパイスが適切にパッケージングされ、正しくインストールされるよう、必要に応じて修正を行います。例えばアーカイブのファイルの配置場所が正しいかどうか確認を行います。
3.第三者の協力の受け入れ
「スパイス」製作者以外の開発者がそのスパイスに対して不具合の修正が行えるように、開発チームは第三者の修正を受け入れ適用します。スパイスはGithubで開発する
すべての「スパイス」の開発は、Github上で行われます。変更はプルリクエスト経由で行う
「スパイス」の修正や変更は、Githubのプルリクエスト経由で行います。masterブランチへマージされた変更は、自動的に「Cinammon Spices」に同期されます。
作業の流れ
おおまかな開発作業の流れは、以下のようになります。1.スパイスの修正
開発者は、「スパイス」の実装や既存の「スパイス」の修正を行います。2.プルリクエスト
開発者は、「スパイス」の修正内容をプルリクエストします。3.マージ
問題なければ修正内容がmasterブランチにマージされます。4.スパイスの生成
Cinammon Spicesがmasterブランチをpullし、変更内容を検出します。変更があれば「スパイス」のコピーを生成し、「スパイス」をZIPアーカイブにし、「Cinnamon」で使用されるJSONインデックスを生成します。
5.ユーザーに提供
ユーザーは「システム設定」のアップデートからバージョンアップした「スパイス」を確認できるようになります。スパイス製作者との関係
今まではなんの制限もなく開発者が自由に「スパイス」を開発し、直接ユーザーに「スパイス」を提供できました。これからは開発者とユーザーの間に開発チームが加わり、さらに開発プロセスが変わります。
「スパイス」の製作者から見れば、ユーザーとの距離が少し開くことになります。
開発チームはこの新しい開発プロセスに従って欲しいと開発者達に期待しています。
開発チームは標準的な開発プロセスを定義し、上記の問題を解決しようと努めます。
スパイスは誰のもの?
開発プロセスが変わったとしても、あなたが開発した「スパイス」の製作者はあなたであるという事実に変わりありません。つまり誰もあなたにあなたの「スパイス」の機能追加や不具合修正等の変更を強制することはできません。
加えてあなたの承認なしに「スパイス」の機能の変更を行うことも許されないでしょう。
「スパイス」は製作者に属します。
スパイス製作者からのプルリクエスト
「スパイス」製作者から自身の「スパイス」へのプルリクエストが送られてきた場合、開発チームはセキュリティー及びデプロイのレビューのみ行います。つまり開発チームは、「スパイス」に悪意のあるコードが含まれていないかどうか、「スパイス」を構成するファイルが正しい場所に配置されているかどうかのみをチェックします。
スパイス製作者以外のプルリクエスト
スパイス製作者以外から送られてきた「スパイス」へのプルリクエストは、不具合の修正のみ受け入れられます。スパイスの機能変更や新機能の追加
「スパイス」の機能変更や新機能の追加は、製作者の承認なしに受け入れられることはありません。ルールはREADME.mdに記述される
「スパイス」の開発プロセスにおけるルールは、Github上の各リポジトリーの「README.md」に記述されます。特に以下の役割や定義、ルールは「README.md」に目を通すことになります。
- UUIDの役割
- 製作者の役割や関係
- チームメンバーシップ
- プルリクエストに関する手続き