7

外部の開発者がプラグ可能なアーキテクチャ (プラグイン/拡張機能) を介してコードを提供できるソフトウェア プラットフォームの数が増えていることに、私は本当に感銘を受けました。

私はどのプラットフォームが最高のプラグイン コミュニティを持っているかを研究してきました...

盛んなプラグイン コミュニティを備えた優れたプラグイン アーキテクチャ:

次に、プラグイン コミュニティがあまり活発でないプラットフォームがあります。

(焦点を絞るために、Microsoft Windows、iPhone、Facebook などの本格的なソフトウェア アプリを可能にするプラットフォームを脇に置くか、無視しましょう。)

小規模または非アクティブな開発者コミュニティを持つ別のプラットフォームに対して、多くのプラグインを備えた成功したプラグイン アーキテクチャをソフトウェア プラットフォームに与えるものは何だと思いますか?

始めに、部分的なリストを次に示します。

  • このプラットフォームは、人々が Web を閲覧したり、物を売買したり、ブログやメッセージ ボードを公開したりなど、広く役立つことを行います。
  • プラットフォームはオープン ソースです (少なくとも、ソース コードは自由に利用できます)。
  • プラットフォームのすべての重要な機能は、フックとフィルターを介して完全にプラグイン可能です。
  • すべてまたはほとんどのプラグ可能な関数は、十分に文書化されています (または、開発者が文書化できる wiki があります)。
  • 開発者がプラグインを共有し、ヒントやコツを共有できるフォーラムまたはメーリング リストがあります。
  • あまり知識のないユーザーがプラグインのインストールと構成を支援できるフォーラムまたはメーリング リストがあります。

多くの外部開発者がプラグインを作成することを奨励するプラグ可能なアーキテクチャを作成するために、プラットフォーム開発者はどのようなことを行うことができますか?

4

4 に答える 4

1

個人的には、私が特定のシステム向けのアプリを作成することを学ぶ (および作成する) かどうかには、3 つの主要な要因があります。

このシステムは非常に有用であり、それを拡張するのに十分な動機を持って使用したいと思いますか?

システムは、あいまいな、独自の、または過度に複雑なソリューション (elisp を参照) とは対照的に、私が慣れ親しんだ言語を使用しているか、習得しやすい言語を使用していますか?

プラグイン システムは明確な言葉で非常によく文書化されているので、システムの解読に何時間も (または何日も) 費やすことなく、プラグインを作成する作業に取り掛かることができますか?

これらのことがすべて当てはまる場合、プラットフォーム用に開発したくない唯一の理由は、他の誰かがあなたのすべてのアイデアのプラグインを既に作成しているということです。:)

ユーザーが提供したプラグインを格納するための中央のよく知られているリポジトリを持つことも非常に役立つ/重要だと思います(サンプルプロジェクトに従って)。自分がやろうとしていることに対して、Web を精査して個別の、おそらく低品質の、または悪意のあるアドオンを見つけなければならないのは嫌です。フォーラムやメーリング リストのアーカイブでさえ、掘り下げるのが面倒で時間がかかるため、これは Web サイトまたは Wiki にする必要があります。

于 2009-05-19T01:48:37.453 に答える
1

あなたは要点を逃しています。

JVM はプラグ可能なアーキテクチャです。すべてのクラス ファイルがプラグインされ、拡張されます。

Apache は、いくつかのレベルでプラグイン可能なアーキテクチャです。「モッド」があります。一部の mod は、それ自体がプラグ可能なアーキテクチャである他のインタープリターを実行します。PHP、mod_wsgi/Python などはすべて Apache にプラグインされています。

Python は、プラグイン可能な Python .pyc ファイルとオブジェクト ファイル (.DLL、.SO) を備えたプラグ可能なアーキテクチャです。

すべての言語フレームワークは、事実上、プラグ可能なアーキテクチャです。

于 2009-05-19T01:50:45.623 に答える
1

プラットフォームは財団です

ソフトウェア プラットフォームの 1 つのビューは、他のソフトウェアが別のタスクを実行するために依存する基盤です。これは単純でかなり明白なステートメントのように見えるかもしれませんが、重要なステートメントです。

基本は簡単であるべき

プラットフォームには目的が必要であり、プラットフォーム開発者は API を設計する際にこれを認識する必要があります。これにより、主要なユース ケースが何であるかが明確になり、その周りの API は、設計方法に関してできるだけ簡単に使用できるようにする必要があります。だけでなく、それらに関するドキュメントに関しても。

拡張ポイントは明白であるべき

プラットフォームの拡張性とは、プラットフォームを拡張または変更する機会を開発者に提供することです。これを奨励したい場合は、この拡張性の性質と制限を明確にし、これを可能にする明確に定義された一連のインターフェイスを提供する必要があります。

これはすべて明白に聞こえるかもしれませんが、プラットフォームを中心にコミュニティを開発したい場合、そのプラットフォームには用途があり、それを拡張することは簡単な経験でなければなりません.

これが少し「建築的な宇宙飛行士」の継ぎ目である場合は申し訳ありませんが、私はいくつかの有効なポイントを作成したと思います.

于 2009-05-19T02:03:51.430 に答える
0

Eclipseを忘れないでください(1000を超えるサードパーティの「プラグイン」が登録されています(実際、Eclipseの用語ではさらに小さなプラグインで構成されています))。その成功の一部は、他の人も拡張可能なプラグインを設計する方法についての経験則があることから来るかもしれません。厳密なAPIバージョン管理ポリシーもあります(もちろん、これにも欠点があります)。

于 2009-12-07T13:06:51.953 に答える