Obsidianプラグインの未来
(obsidian.md)- Obsidian Community が、プラグイン・テーマ向けの新しいディレクトリ兼開発者ダッシュボードとして公開され、提出、管理、発見、利用の流れを統合
- 2020年の Obsidian API 公開以降、コミュニティプラグイン・テーマは 4,000件以上 作られ、プラグインのダウンロード数は 1億2,000万回 を超える
- 新しいディレクトリは、閲覧・検索・フィルタリング・並べ替えを提供し、プロジェクトページに スクリーンショット、詳細情報、安全性スコアカードを表示
- 自動レビュー がすべてのバージョンに適用され、開発者ポリシー準拠、コード品質、既知の脆弱性とマルウェアの可能性を検査
- 既存プロジェクトは新システムへ移行され、最新基準を満たさないプラグイン・テーマは一時的な例外の後、公式ディレクトリから段階的に除外される予定
Obsidian Community公開
- Obsidian Community は、Obsidian プラグインとテーマのための新しい ディレクトリ 兼 開発者ダッシュボード として公開
- 2020年の Obsidian API 公開以降、コミュニティプラグインとテーマは 4,000件以上 作られ、Obsidian プラグインの累計ダウンロード数は 1億2,000万回 を超える
- 目標は、誰でもプラグインとテーマをより 簡単かつ安全に 作成・配布・発見・利用できるようにすること
- 今回の公開は、Community サイト、開発者ダッシュボード、自動レビュー、プラグインの安全性、チーム向けツールをまとめて導入する、より大きな計画の始まり
Communityサイトと開発者ダッシュボード
- 新しい Communityサイト は、プラグインとテーマの探索のために 閲覧、検索、フィルタリング、並べ替え を提供
- Integrations、Bases、Charts など数十のカテゴリと、さらに多くのカテゴリ からプラグインを探せる
- プロジェクトは、名前、ダウンロード数、人気、リリース日、更新日で並べ替え可能
- 各プロジェクト詳細ページには スクリーンショット、詳細情報、安全性スコアカード が含まれる
- 有料プラグインと公式統合には新しいラベルが表示される
- 作者はプロフィールページに 支援オプション、Webサイトのリンク、ソーシャルメディアのリンクを追加できる
- Obsidian Community サイトは、作者がプロジェクトを 提出、管理、状態追跡 できる新しい開発者ダッシュボードを提供
- 既存の GitHub 経由で追加されたすべてのプラグイン、テーマ、保留中の提出物は新サイトへ自動移行される
- 既存プロジェクトの所有権を主張するには、Communityサイトにログイン して GitHub アカウントを連携する必要がある
- GitHub アカウントを連携すると、既存プロジェクトの管理、新規プロジェクトの提出、プロフィールページの編集が可能になる
自動レビューと安全性
- すべてのコミュニティプロジェクトに 自動レビュー が導入される
- 新しい自動レビューシステムは、初回提出だけでなく すべてのバージョン をセキュリティとコード品質の基準でスキャンする
- これまでは少人数のチームが初回提出物を手動で確認し、Developer Policies への準拠を確認していたが、Obsidian の人気拡大により提出速度に追いつくのが難しくなり、その後のバージョンはレビューされていなかった
- コーディングエージェントがプラグイン作成を加速させる中、レビュー待ちのキューはさらに長くなり、Obsidian CLI のようなツールでプラグイン作成もより容易になっている
- プラグインやテーマが提出されると、自動レビューシステムが 開発者ポリシー準拠、ソースコードのベストプラクティス準拠、既知の脆弱性の不在を確認する
- 自動テストは継続的に改善できるため、Obsidian エコシステム全体の品質と安全性をより包括的に高める基盤となる
- 手動レビューは継続される。新システムにより、人気プラグイン、注目プラグイン、コミュニティが報告した問題のように、より深い確認が必要なプラグインへ注力できる
- 既存のプラグインとテーマは新システムで再レビューされ、最新ガイドラインを満たしていない古いプラグインやテーマが見つかっている
- 最新基準を満たさなかった既存プロジェクトには一時的な例外が与えられるが、新しいレビュー手順を通過できないすべてのプラグインとテーマは、最終的に公式ディレクトリから段階的に除外される予定
- 新システムはここ数日で 2,300件以上 の保留中提出物を処理しており、プラグインレビューを待っていた開発者は Communityサイトにログイン して現在の状態を確認できる
-
自動スキャン
- すべてのバージョンは、コード品質とセキュリティ脆弱性の検査を自動で受ける
- プラグインに潜在的に悪意ある追加要素があるかを検出する マルウェアスキャン も含まれる
- 開発者は開発者ダッシュボードで、各プロジェクトごとの詳細な提案、警告、失敗フラグを確認できる
-
スコアカード
- ユーザーと開発者は、すべてのプロジェクトのスコアカードで自動検査の状態を確認できる
- スコアカードは、公開情報、プライバシーラベル、アーティファクト証明、手動レビュー結果、アプリ機能の採用状況を統合しながら、今後も改善される予定
-
アクセス範囲の公開
- 今後数か月で、プラグインと作者に関する 透明性 がさらに高まる予定
- プラグインは、ネットワーク、ファイルシステム、クリップボード、その他の機能のうち何にアクセスするかを申告するようになる
- ユーザーはプラグインをインストールする前に、こうした公開情報を確認できるようになる
-
検証済み作者
- 追加の検証ステップを通過し、良好な状態を維持している信頼できる開発者にはラベルが追加される
- ユーザーはセキュリティ上の問題をいつでも Obsidian チームに直接報告できる
チームとアプリレベルの変更
- Obsidian を利用するチームは、すでにユーザー向けの安全制御を展開できる
- 今後数か月で、チームは許可するコミュニティプラグインをより簡単に管理できるようになり、メンバー向けに 非公開プラグイン を配布できるようになる予定
- 公式 Obsidian プラグインを配布するチームは、Community ディレクトリの Official バッジを申請できる
- プラグインに資格がある場合は連絡できる
- Community ディレクトリと自動レビューシステムの改善に加え、Obsidian アプリと API にも 発見性 と安全性を高める変更が予定されている
- コミュニティエコシステムは Obsidian の楽しく強力な要素の一つであり、その継続的な成長に必要な基盤を提供していく方針
- 新しい Obsidian Community でフィードバックを受け付ける予定
ユーザーと開発者向けの主な変更
-
ユーザーへの影響
- 新しい Community サイトでプラグインとテーマを探索できる
- レビュー時間が大幅に短縮され、アーリーアクセスのプラグインを手動インストールする必要が減る可能性がある
-
新しいプラグインまたはテーマの提出
- Community サイトにログインして、新しい開発者ダッシュボードにアクセスする
- GitHub アカウントを連携し、提出するリポジトリを選択して、ダッシュボードの手順を完了する
- 提出と同時にプロジェクトレビューが始まり、通常は数分以内にレビュー結果を確認できる
- プロジェクトが通過すれば、24時間以内にアプリ内で検索・ダウンロード可能になる
-
既存プラグインとテーマの所有権主張
- Community サイトにログインして、新しい開発者ダッシュボードにアクセスする
- GitHub アカウントを連携すると、プラグインの所有権を主張し、タイトル、説明、スクリーンショットを更新できる
-
開発者ダッシュボードなしで更新できるか
- GitHub 経由で新バージョンを引き続きリリースできる
- 新しいリリースは自動レビューされ、レビューを通過できなければ開発者ダッシュボードで詳細を確認する必要がある
-
自動レビューに失敗したプラグインとテーマ
- 新しいプラグインとテーマは、ディレクトリに追加されて検索可能になる前に自動レビューを通過しなければならない
- 各新バージョンはスキャンされ、レビューを通過できなければ24時間以内に検索結果から削除される
- 既存で承認済みのプラグインとテーマは、自動レビューに失敗しても当面は引き続き利用できる
- 古いプラグインにも最終的には新基準への適合が求められる予定だが、期限はまだ定まっておらず、コミュニティ開発者とともに移行を決めていく予定
-
リリース提出なしで自動レビューを実行
- eslint plugin で Obsidian プラグインを公式開発者ガイドラインに沿ってローカル検査できる
- 開発者ダッシュボードで任意のブランチ、タグ、コミットに対するプレビュースキャンを実行できる
-
共同メンテナーと組織リポジトリ
- 現在の Obsidian Community では、GitHub リポジトリの所有者だけが該当プロジェクトを編集できる
- 組織リポジトリは、組織メンバーシップが公開されていれば所有権の主張と編集が可能
- 近い将来、複数コラボレーター対応が追加される予定
-
非公開ソースプラグイン
- 現時点では新しい非公開ソースプラグインはディレクトリに受け付けていない
- 既存の非公開ソースプラグインは、追加告知があるまで引き続き利用できる
- 今後、新しいレビューシステムを非公開ソースプラグイン向けに調整する方法を検討する予定
-
アカウントとGitHub要件
- 新しい開発者ダッシュボードにアクセスするには Obsidian アカウント が必要
- 現在は GitHub の利用が必要で、今後は他のソフトウェアホスティングプラットフォームの追加も検討される予定
- GitHub ログインではユーザー名と公開リポジトリ一覧が共有され、この情報はリポジトリ所有権の確認にのみ使用される
-
Paid と Optional payments ラベル
- Obsidian Community はストアではなく、組み込みの決済ソリューションを提供しない
- 開発者は、ライセンスキー、API キー、ログインゲートなどの外部決済メカニズムを引き続き利用できる
- 開発者はプラグインを3つのカテゴリのいずれかに正確に分類しなければならない
- Free は、いかなる形の支払いもなく、有料サービスとも一切結びついていないプラグインを意味し、寄付リンクや支援リンクは許可される
- Optional payments は、ユーザーが追加機能を有効にするため任意で支払える場合、またはプラグインが有料サービスに接続される場合を意味する
- プラグインが有料サービスや API に接続するなら、そのサービスに無料ティアがあっても Optional payments と表示しなければならない
- Paid は、無料トライアルを提供していても、主要機能を利用するにはユーザーが必ず支払わなければならない場合を意味する
- このラベルは、プラグイン開発者が支払いを徴収しているかどうかではなく、ユーザーがどのような支払いを想定すべきかを示す
-
スコアカードの誤りと問い合わせ
- スコアカードは新機能のため誤りがある可能性があり、偽陽性や偽陰性が発生することがある
- 不正確な内容を見つけた場合は、Obsidian Discordサーバー の #plugin-dev チャンネルに連絡する必要がある
- 質問や懸念がある場合は、Obsidian Discordサーバー の
#plugin-devチャンネルに連絡できる
1件のコメント
Hacker Newsの意見
ブログ記事、FAQ、ロードマップの次の段階まで、できるだけ漏れなく書こうとしましたが、見落とした部分もあると思うので質問歓迎です
7人しかいないチームで、数千人のプラグイン開発者と数百万人のユーザーに対応しなければならず、相反する優先順位のバランスを取るのは非常に難しいことでした
新システムは導入しやすく、後方互換性を維持し、既存のワークフローを完全に壊さないまま従来方式より大きく改善され、さらにプラグインの安全性と発見しやすさを段階的に高められる必要がありました
まだ進行中の取り組みとして見てもらえるとうれしいですし、アイデアや不満も聞きながら継続的に改善していきます
躊躇した理由の一つは膨大な時間投資だけでなく、人々がそのレビュー手順に依存するようになった後で、難読化された悪意あるコードが通過してしまった場合、その後の攻撃の責任がプロジェクトに及ぶのではないかと恐れていたためです
この点をどう考えているのか気になります
私には、Debian/Ubuntuのようにリポジトリ内のすべてを厳格にレビューする方式と、レビュー保証をまったくしないPyPI/npm方式の違いのように感じられます
例は https://community.obsidian.md/plugins/zotlit で見られます
たとえばAI要約プラグインが、最初はユーザー提供のOpenAIキーで
url="api.openai.com"+pathにアクセスするとすれば、ごく一般的な形でしょうし、コミュニティがここから作っていくものにも期待していますただ、アップデート後にユーザーがOpenAI互換APIの任意エンドポイントを選べるようになった場合、その柔軟性を悪用してスキャンを回避するネットワーク流出経路を作り、悪意あるエンドポイントをひそかに初期入力した更新ではないと、どうやって保証できるのでしょうか?
Obsidianを試したとき、データテーブル機能が標準搭載ではなく、フルアクセス権を持つプラグインだと知ってすぐ削除しました
それにしてもチームが7人しかいないとは驚きです
開発者コミュニティの不満は徐々に大きくなり、チームも負荷で疲弊していました
なのでチームに祝福を送りたいです。巨大なスケーラビリティのボトルネックが解消されたわけで、これをどう作り上げて拡張していくのかを見るのはかなり面白いです
ソフトウェア会社が「XYZの未来」みたいなタイトルを書くと、普通はXYZを大きく制限するか終了準備をしているのだろうと受け取りがちです
プラグインのセキュリティ問題を解く最善の、あるいは唯一の方法は、明示的なAPIと権限システムを備えたサンドボックスだと思います
とはいえ、インターネットと通信できないなら大きな問題には見えない気もします
さらに見ると、JavaScriptとElectronの構造上、Obsidianプラグインはグローバルスコープで実行されるJavaScriptの塊であり、ユーザー権限が許す範囲でファイルシステム全体を読み書きし、HTTPリクエストも送れるようですが、その理解で合っていますか?
ただ、このエコシステムで実際にどれほどうまく機能するのかは気になります。経験上、包括的なスキャンは偽陽性、つまりCVEはあるが実際の利用文脈には当てはまらないケースをかなり生みやすいです
そのため、スキャン結果を正しく解釈するには知識が必要で、保守担当者に相当な負担がかかる可能性があります
権限だけでは特定の悪意ある挙動を防げないため、全部必要です
Communityサイトのスコアカードをいくつか見るだけでも、一部の警告は権限システムやサンドボックス化では防げないことがすぐ分かります
ブログ記事にはリリース方式の詳細があり、プラグインAPIの変更が必要なので段階的に進める予定です
セキュリティと権限付与は単純に難しく、プラットフォームを設計していると、ある時点で柔軟性のためにそのリスクを受け入れる価値があるか自問する必要があります
完全に安全なシステムを設計するのは見込みのない話です
いつか自分のプロジェクトにも似た仕組みを実装する方法を学ぶ必要がありそうです
データ流出は静かに起こります
エラーやリンター警告の一覧がたくさんあって、私は何をすればいいのでしょう?
ユーザー側の理想的な導線が気になります。スコアカードは開発者側には良さそうです
こうした種類のコミュニティ貢献を管理するのは難しいですが、大きな前進に見えます
こうした自動レビューにAIが果たせる役割もあるのか気になります。かなり有望なユースケースに見えます
Obsidianがプロプライエタリソフトウェアでなければ自分で変えていたでしょう
誰かが互換クローンを作る時期に来ているのでは
.obsidian/pluginsフォルダにコピーできるフォルダにすぎません.obsidian/plugins/ディレクトリに貼り付けるだけです