MoeKoeMusic-Pluginsデザイン理念
ルール: マークダウン構造を保護する。 URLやコードを翻訳しない。 翻訳された内容のみを返す。 MoeKoe Music 插件エコシステムを最初に作成した時、オンラインプラグイン市場という機能はまだありませんでした 後にコミュニティの提案により、このプラグイン市場が誕生しました 公式/コミュニティプラグインリポジトリを追加して製品機能を拡張 プラグインはコミュニティで開発されるので、プラグイン市場はどう管理すべきか? 最も直接的な方法は、すべてのプラグインソースコードを一つの大リポジトリにまとめることです。しかし、この案は考えれば考えるほど不自然に感じられました。それぞれのプラグインには、それぞれの作者、それぞれのリリースリズム、それぞれのビルド方法があります。これらをすべて公式リポジトリにまとめると、メンテナンスコストが高くなるだけでなく、責任範囲も曖昧になります。 したがって、このリポジトリは最終的には「プラグインソースコードリポジトリ」として設計されず、代わりに「プラグイン登録とインデックスリポジトリ」となりました。それは以下の数点を行います: プラグインの上架、更新、下架、および報告の申請を受け取る 基本的な検証と静的認識を自動的に行う 人工的に承認されたプラグインのスナップショットを記録する クライアントが読み込める plugins.json を維持する READMEにプラグインリストを更新する、人々が読みやすくする 追跡可能な登記簿:誰が提出したか、どのバージョンが承認されたか、ダウンロード先はどこか、ネットワークやファイルの権限はどうか、すべて明確なデータにまとめられます。 市場インデックス、ソースコードリポジトリではなく リポジトリのルートディレクトリで最も重要なファイルは plugins.json です。これがプラグイン市場が実際に消費するデータソースです。 { "id": "custom-app-background", "name": "カスタム背景画像", "description": "MoeKoe Musicにカスタム背景画像機能を提供し、透明度調節をサポート。", "iconUrl": "...", "version": "1.0.0", "minversion": "1.6.1", "...":"....", "buildRequired": false, "networkAccess": false, "fileAccess": false, "binaryContent": false, "snapshot": { "iconUrl": "...", "repository": "MoeKoeMusic/custom-app-background-plugin", "commitSha": "dbf72d38c8cf6b1d1cefdf8ce15798d565678995", "downloadUrl": "hxx.zip", "release": null } } 私は市場が「プラグインリポジトリの「現在の最新コード」を常に記録するようにしないことを望んでいます。なぜなら、作者が今日提出したコードと、承認当日に見たコードが同じものではなかったかもしれないからです。プラグイン市場が本当に認めるべきは、承認されたバージョンです。 したがって、このプロジェクトには以下の核心原則があります: 上架されるのは、動き回るリポジトリのアドレスではなく、既にロックされたスナップショットです。 コンパイル不要のプラグインの場合、スナップショットはデフォルトブランチの当時のcommitにロックされます。コンパイルが必要なプラグインの場合、スナップショットは対応するReleaseタグと发行附件にロックされます。これにより、実際に問題が発生した場合でも、当時どのバージョンが承認されたかを振り返ることができます。 アクションが先に動く、人間が最後に決定する ユーザーがIssueを提出する際には、以下の選択を行う必要があります: 「新規上架」または「プラグインの更新」 GitHubリポジトリのアドレス インストール前にコンパイルが必要かどうか Actionが自動検証を行い、結果をIssueのコメントに書き込むと同時に、check-passedまたはcheck-failedタグをIssueに付ける。 ...