用开源代码如何建立网站
如果有一个词经常使对话充斥着开源的好处,那是选择 。 我们经常庆祝800多个Linux发行版 ,无数的台式机,应用程序,框架等等。 选择似乎是一件好事。
有趣的是,选择也是一种情绪化的东西。
我记得当Unity桌面启动时,以及一封又一封愤怒的邮件中,一封电子邮件声称功能被剥夺了,选择能力也被剥夺了。 尽管我们社区中比较冷静的成员使这类批评家想起了台式机还有许多其他选择,但许多批评家仍然对他们的选择受到限制不屑一顾。
我一直对此有两种看法。 一方面,我尊重并珍惜固执己见的设计。 我希望看到把自己的股份的不只是他们将在何种地面工程,也是他们不会什么。 举例来说,我喜欢基础小组在定义清晰明了的方向方面所做的工作。
另一方面,不能满足您需求的软件可能变得无趣,无关紧要甚至令人沮丧。 通常,比不执行您想要的事情更糟糕的是得到可以执行大部分您想要的事情,但是却留下了一些生物安慰。 通常,选择可以弥合这种差距。
或者,选择的马戏团镜子可能会提供太多选项,希望能为所有用户提供服务。 令人遗憾的是,这些项目可能会使用户不知所措,并且在提供选择的同时也会在使用该软件时带来认知模糊。
尽管还有另一种方法,但我越来越喜欢它。
一个简单的核心
不久前,我开始使用Atom编辑器。
Atom提供了一个非常简单的核心编辑器。 它提供了大多数用户可能想要的大多数核心功能和设置,但缺少了某些用户可能想要的许多更高级或特定的功能。 这就是包装系统独有的地方。
Atom提供了一个强大的框架,该框架几乎允许更改和扩展Atom的任何部分。 然后,此功能将在软件包系统中公开,因此可以轻松创建,共享,安装,更新和配置这些自定义项。 有用于键绑定,代码审查,颜色选择,用户界面更改,GitHub集成等的软件包。
这意味着Atom可以根据不同用户的特定需求进行调整; 您只需要打开所需的部件即可。 想要功能最少的时尚Atom? 没问题。 需要功能齐全的IDE风格的Atom吗? 没问题。 想要完全不同的Atom体验,取决于您正在处理的代码或项目类型? 没问题。
Atom不是执行此操作的唯一软件。 另一个很好的例子是GNOME Shell ,我不久前写了它 。 GNOME Shell具有集成的扩展系统,可让您根据自己的喜好调整桌面。
强大的方法
简单,时尚的内核和功能强大但简单的扩展/插件系统的概念之所以出色,是因为许多不同的原因,有些显而易见,而另一些则不然。
一个明显的好处是用户可以选择。 我们都是不同的,我们都有不同的想法,喜好,烦恼和怪癖。 更具可插拔性的平台提供了服务更多人并交付满足各种需求的软件的机会。 它还为配置文件或视图的概念打开了可能,您可以在其中加载用于不同用例的插件集合,并使切换变得简单。 例如,想象一下与Python相比,编写Python时完全不同的Atom体验。 或者,在为不同的台式机,Web平台,企业或其他地方编写时,想象一下不同的Atom体验。
这种方法还打开了插件经济 。 本质上,这意味着您不必拥有每个人都必须使用的一项功能的实现。 如果您不喜欢Atom中的代码审查程序包,则可以构建自己的程序包,或对现有程序包进行改进。 一个完善的插件系统将为最流行和功能最强大的实现提供一个浮出水面的机会。 这样可以确保该工具保持最新状态-功能的更新和更好的实现可能胜过坚定。 这显着减少了嗜睡,并为每个人创造了一个创新机会,使他们的工作浮出水面。
插件经济也为多元化提供了机会。 对于许多人来说,将核心功能纳入重大项目在技术上和社会上都是艰巨的工作。 插件经济可以为任何人提供创建出色功能,通过平台的插件系统公开这些功能以及使其工作越来越流行的机会。 这为通常无法将功能纳入核心产品的贡献者提供了展示出色,周到的工作的机会。
当然,框架方法也存在挑战。 首先,保持核心简单并抵制包含流行的插件或功能的诱惑(从而破坏项目可扩展性的目的)非常重要。
其次,框架方法在入职体验和培训方面提出了挑战:您可以并且应该在文档和指南中使用哪些插件?
第三,平台中的插件/程序包管理系统是可发现的,并且能够使用各种指标将最佳程序包置于顶部。
最后,框架方法依赖于拥有一个真正可黑客入侵的平台,但这种平台是安全的。 这是一个复杂的体系结构考虑。
未来
尽管交付框架方法可能具有挑战性,但我认为机会是巨大的。 在UNIX的早期,该平台被定义为一组可以以有趣的方式组合在一起的工具。 这使UNIX成为功能非常强大的系统-不同的工具可以连接并服务于几乎无限的用例。
如果我们能够建立一种更具可插拔性的开源文化,那么我们有可能深入到更广阔的领域并为更多的用户提供服务。 它还为人们提供了一个令人难以置信的入口匝道,人们可以将脚趾插入带有插件的项目中,而不是对核心代码做出巨大贡献。 这可以使更多的人参与开放源代码,建立成功的信心,并使我们更广泛的社区多样化。
我喜欢在Atom和GNOME Shell中进行深思熟虑的实现,并且我希望看到在其他项目中使用类似的方法。 你怎么看? 您是否认为这也是做事的更好方法?
翻译自: https://opensource.com/life/16/2/culture-pluggable-open-source
用开源代码如何建立网站