7

越来越多的软件平台让外部开发人员通过可插拔架构(插件/扩展)贡献代码,这给我留下了深刻的印象。

我一直在研究哪些平台有最好的插件社区......

具有蓬勃发展的插件社区的优秀插件架构:

然后是插件社区不太活跃的平台:

(为了集中注意力,让我们搁置或忽略支持成熟软件应用程序的平台,如 Microsoft Windows、iPhone 和 Facebook。)

与另一个拥有更小或不活跃的开发者社区的平台相比,你认为如何为软件平台提供具有大量插件的成功插件架构?

只是为了让事情开始,这里有一个部分列表:

  • 该平台做了一些广泛有用的事情:让人们浏览网页、买卖东西、发布博客和留言板等。
  • 该平台是开源的(或者至少,源代码是免费的)。
  • 平台中的所有重要功能都可以通过钩子和过滤器完全插入。
  • 所有或大多数可插入功能都有很好的文档记录(或者有一个 wiki,因此开发人员可以为您记录它)。
  • 有一个论坛或电子邮件列表,开发人员可以在其中分享插件,分享技巧和窍门
  • 有一个论坛或电子邮件列表,不太成熟的用户可以在其中获得安装和配置插件的帮助。

平台开发人员可以做些什么来创建一个可插拔的架构,以鼓励许多外部开发人员创建插件?

4

4 回答 4

1

就我个人而言,我是否学习(并确实)为任何给定系统编写应用程序有 3 个主要贡献者:

该系统是否非常有用,以至于我想使用它来激发足够的动力来扩展它?

系统是否使用我熟悉的语言,或者易于学习的语言,而不是一些晦涩的或专有的或其他过于复杂的解决方案(请参阅 elisp)?

插件系统是否以清晰的语言记录得非常好,以便我可以开始编写插件的工作,而不是花费数小时(或数天)来破译系统?

如果这些都是真的,那么您不想为平台开发的唯一原因是其他人已经为您的所有想法编写了插件。:)

我认为拥有一个中央且众所周知的存储库来容纳用户贡献的插件(根据您的示例项目)也是非常有帮助/重要的。我讨厌不得不在网上搜索我正在尝试做的事情的个人、可能低质量甚至可能是恶意的附加组件。这应该是一个网站或 wiki,因为即使是论坛或邮件列表存档也可能很烦人且很耗时。

于 2009-05-19T01:48:37.453 回答
1

你没有抓住重点。

JVM 是一种可插拔架构。每个类文件都插入并扩展它。

Apache 是一个多层次的可插拔架构。有“模组”。一些模组运行其他解释器,它们本身就是可插拔的架构。PHP、mod_wsgi/Python 等都插入 Apache。

Python 是一种可插入的体系结构,其中包含 Python .pyc 文件和插入其中的目标文件(.DLL、.SO)。

每个语言框架实际上都是一个可插拔的架构。

于 2009-05-19T01:50:45.623 回答
1

平台是基础

软件平台的一种观点是作为其他软件执行另一项任务所依赖的基础。这可能是一个简单且相当明显的声明,但它是一个重要的声明。

基础应该很简单

平台必须有一个目的,并且平台开发人员在设计 API 时应该意识到这一点,以便清楚主要用例是什么,并且围绕它们的 API 应该尽可能直接地使用,以适应它们的设计方式但也关于他们周围的文档。

扩展点应该很明显

平台的可扩展性是为开发人员提供扩展或更改平台的机会。如果这是您想要鼓励的,那么您需要非常清楚这种可扩展性的性质和限制,并提供一组定义良好的接口来实现这一点。

这听起来似乎很明显,但是如果您希望社区围绕一个平台开发,那么该平台必须有用途,并且扩展它应该是一种直接的体验。

抱歉,如果这个接缝有点“建筑宇航员”,我确实认为我提出了一些有效的观点,我可能做得很糟糕,请随时指出这一点或添加它们

于 2009-05-19T02:03:51.430 回答
0

不要忘记Eclipse(有超过 1000 个注册的第 3 方“插件”(实际上它们是由 Eclipse 术语中更小的插件组成的))。它的成功部分可能来自于如何设计一个也可以被其他人扩展的插件有很好的经验法则。还有一个严格的 API 版本控制政策(当然也有它的缺点)。

于 2009-12-07T13:06:51.953 回答