如果用一个词来概括开源的好处,那就是选择。我们经常赞扬 800 多个 Linux 发行版、无数的桌面、应用程序、框架等等。选择,似乎是一件好事。
有趣的是,选择也是一种情感化的东西。
我记得当 Unity 桌面发布时,一封又一封愤怒的邮件声称功能被删除,选择的能力被剥夺。虽然我们社区中比较冷静的成员提醒这些批评者还有许多其他桌面选择,但许多批评者仍然哀叹他们的选择受到限制。
我对此一直有两种想法。一方面,我尊重和重视有主见的设计。我喜欢看到一些项目不仅表明他们将成为什么,而且表明他们不会成为什么。例如,我喜欢 Elementary 团队在定义清晰、有主见的方向方面所做的工作。
另一方面,不符合您需求的软件可能变得无趣、无关紧要,甚至令人沮丧。通常比不能满足您需求更糟糕的是,得到一些大部分满足您需求的东西,但却遗漏了一些舒适的功能。通常,选择可以弥合这一差距。
或者,选择的另一面可能是提供过多的选项,以期服务所有用户。可悲的是,这些项目可能会让用户感到不知所措,并且在提供选择的同时,也会在使用软件时产生认知迷雾。
但是,还有另一种方法,我越来越喜欢它。
一个简单的核心
不久前,我开始使用 Atom 编辑器。
Atom 开箱即用地提供了一个相当简单的核心编辑器。它提供了大多数用户可能需要的大部分核心功能和设置,但缺少一些用户可能需要的更高级或更具体的功能。这就是包系统发挥作用的地方。
Atom 提供了一个强大的框架,几乎允许更改和扩展 Atom 的任何部分。然后,此功能在包系统中公开,以便可以轻松创建、共享、安装、更新和配置这些自定义项。有用于快捷键绑定、代码审查、颜色选择、用户界面更改、GitHub 集成等的包。
这意味着 Atom 可以根据不同用户的特定需求进行调整;您只需打开您想要的部件即可。想要一个功能最少的简洁 Atom?没问题。想要一个功能齐全的 IDE 风格的 Atom?没问题。想要根据您正在处理的代码或项目类型获得完全不同的 Atom 体验?没问题。
Atom 并不是唯一这样做的软件。另一个很好的例子是 GNOME Shell,我 不久前写过一篇关于它的文章。GNOME Shell 具有集成的扩展系统,允许您根据自己的精确喜好调整桌面。
一种强大的方法
简单、简洁的核心和强大而简单的扩展/插件系统的概念在许多方面都很出色,有些显而易见,有些则不那么明显。
一个显而易见的好处是用户手中的选择。我们都不同,我们都有不同的想法、偏好、烦恼和怪癖。一个更可插拔的平台提供了一个服务更多人并交付满足各种需求的软件的机会。它还为配置文件或视图的概念打开了可能性,您可以在其中为不同的用例加载插件集合,并使切换变得简单。例如,想象一下,与 Vala 相比,编写 Python 时 Atom 体验完全不同。或者,想象一下,为不同的桌面、Web 平台、企业或其他地方编写代码时,Atom 体验有所不同。
这种方法还开启了插件经济。本质上,这意味着您不必拥有每个人都必须使用的功能的单一实现。如果您不喜欢 Atom 中的代码审查包,您可以构建自己的包,或者 Fork 并改进现有的包。一个良好实现的插件系统将为最流行和最有能力的实现浮出水面提供机会。这确保了工具保持新鲜——更新和更好的功能实现可能会胜过那些停滞不前的功能。这大大减少了惰性的产生,并为每个人创造了创新并让他们的工作浮出水面的机会。
插件经济也为多样性创造了机会。将核心功能纳入主要项目对于许多人来说在技术上和社交上都是一项艰苦的工作。插件经济为任何人提供了一个机会来创建出色的功能,通过平台的插件系统公开它们,并让他们的工作受欢迎程度上升。这为那些通常无法将功能融入核心产品的贡献者提供了一个展示出色、周到工作的机会。
当然,框架方法也存在挑战。首先,保持核心简单并抵制包含流行插件或功能的诱惑(从而破坏项目可扩展性的目的)非常重要。
其次,框架方法对入门体验和培训提出了挑战:在文档和指南中可以并且应该假定哪些插件?
第三,平台中可发现且能够使用各种指标将最佳软件包推向顶峰的插件/软件包管理系统至关重要。
最后,框架方法取决于拥有一个真正可破解但安全的平台。这是一个复杂的架构考虑因素。
未来
虽然框架方法可能难以实现,但我认为机会是巨大的。回到 UNIX 的旧时代,平台被定义为一组可以以有趣的方式组合在一起的工具。这使得 UNIX 成为一个非常强大的系统——不同的工具可以连接并服务于几乎无限数量的用例。
如果我们能够构建更可插拔的开源文化,那么我们进一步扩展范围并服务更多用户的潜力是巨大的。它还为人们提供了一个令人难以置信的社区入门途径,让他们可以通过插件而不是对核心代码进行重大贡献来试水。这可以使更多人参与开源,建立成功的信心,并使我们更广泛的社区多样化。
我喜欢 Atom 和 GNOME Shell 中对此的周到实现,我希望看到其他项目也使用类似的方法。你怎么看?您是否也认为这将是一种更好的做事方式?
2 条评论