在设计软件平台时,构成成功可插拔架构的关键要素是什么?

kan*_*kun 7 architecture collaboration plugins

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

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

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

然后有一些活动插件社区不太活跃的平台:

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

你会说一个软件平台是一个成功的插件架构,有很多插件,而另一个平台有一个较小或不活跃的开发者社区?

只是为了开始,这是一个部分列表:

  • 该平台具有广泛的用途:让人们浏览网页,买卖东西,发布博客和留言板等.
  • 该平台是开源的(或至少,源代码是免费提供的).
  • 平台中的所有重要功能都可通过挂钩和过滤器完全插入.
  • 所有或大多数可插入的功能都有详细记录(或者有一个wiki,因此开发人员可以为您记录).
  • 有一个论坛或电子邮件列表,开发人员可以共享插件,并分享提示和技巧
  • 有一个论坛或电子邮件列表,不太复杂的用户可以获得安装和配置插件的帮助.

平台开发人员可以做些什么来创建可插入的体系结构,鼓励许多外部开发人员创建插件?

jes*_*ess 1

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

该系统是否非常有用,以至于我想要充分使用它并有足够的动力去扩展它?

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

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

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

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