我已经使用 Drupal,一个开源内容管理系统 (CMS),来管理我的网站超过四年了。虽然使用开源产品可能会有一些怪癖,但我无法想象用其他方式来做这件事。
人们在考虑是否使用开源产品时,可能会犹豫的原因包括,当您遇到问题时,不能像使用专有系统那样提交服务台工单,并期望在两个工作日内得到回复。大多数时候,开源项目背后没有像专有系统那样的单一公司或实体。相反,开源拥有社区。
当您内部构建自己的定制系统,或者您正在使用另一家公司的专有软件时,只有有限数量的开发人员(您的内部开发人员或该公司开发人员)在开发系统的功能。另一方面,当您使用开源项目时,作为项目社区的一部分,有更多的贡献者。例如,drupal.org 最近达到了 100 万个帐户。在撰写本文时,Drupal.org 统计的开发人员数量为 32,468 人,但是,许多用户在不提交补丁的情况下为社区做出贡献,因此贡献者的数量要大得多。
这个单一的事实是开源的最大优势。一旦出现网络趋势,客户注意到它并要求我将其添加到网站上,那么很可能 Drupal 社区中的其他人(或多人的组合)已经为该功能编写了一个模块。例如,当社交分享链接开始流行,并且客户希望将其包含在他们的网页上时,已经有各种 Drupal 模块提供了该功能。我测试了它们,选择了我喜欢的一个,并轻松地将该功能包含在网站上,而无需编写一行代码。
同样,创建集群地图一度成为网站上的新功能。当我们需要绘制北卡罗来纳州生物科技公司的地图时,我再次找到了两个稳定的模块,它们可以完成我们想要的大部分工作(作为免责声明,我确实不得不修补其中一个模块才能使其完全满足我们的需求,但这比我自己编写一个模块要好得多)。
当新的 HTML 5 标准出现时,Drupal 社区立即开始创建新的主题并改进现有主题,以输出 HTML 5 并利用这些改进。
简而言之,当出现一些与网络相关的新功能或改进时,Drupal 社区的积极参与者会立即行动。我所要做的就是四处搜索,找到几乎所有网络相关需求的解决方案。最常见的是,我所要做的就是下载一个提供我需要的功能的模块,或者更新一个现有的模块,因为社区贡献者不断扩展和改进它们。这就是开源社区的真正力量。
为社区做贡献
当然,不建议您袖手旁观,让其他人完成所有工作。如果我们都抱有这种态度,就不会有开源项目了。有很多方法可以参与帮助您使用的开源项目。我编写过补丁来删除错误或扩展模块的功能,我测试过其他人需要测试的补丁,甚至只是为在线文档做出了贡献,而在线文档也是社区生成的。即使您不编写代码,也可以进行测试他人编写的补丁和改进文档。
假设我以上述多种方式为 20 个模块做出了贡献。这听起来可能很多,但请考虑一下:在我的访问量最大的 Drupal 站点上,我使用了多达 97 个模块(除了核心模块)。因此,您可以看到如果我们每个人都贡献一点,我们都可以获得多少收益。
我在社区中的能力或活跃程度并不重要。从头开始编写我想要使用的每个网络功能将花费我无数时间:拥有评论功能、为登录用户定制帐户、社交媒体分享按钮、下拉菜单、集群地图、可定制的搜索界面、新闻通讯订阅等等。如果不能利用成千上万的开发人员来提高 Drupal 的安全性、功能和视觉外观,我靠自己能完成的事情就会少得多。
注意这些差异
成本
使用专有系统时,您需要付费才能使用该系统以及获得相关的技术支持,而当您选择使用开源软件系统时,您可以免费获得系统本身。您的成本来自于您是否选择聘请一位管理员和/或开发人员,他们可以为您定制系统,并且知道如何在开源社区中有效地工作。特别是如果您的需求需要大量的复杂性和定制,这很可能是一项必要的开支(而且可能不便宜)。
灵活性
与向您正在使用的系统的公司请求全新功能相比,在开源社区中拥有内部开发人员可能意味着您将更快、更可靠地获得您的定制。外部公司可能有很多客户,因此有很多请求,而您的请求可能会在队列中长时间等待。
决策是社区决策
有时您希望将系统或特定模块朝着某个方向发展,但社区或模块维护者可能不同意。大多数时候,大多数人的意见是正确的。但是,社区模式也可能存在问题。例如,模块可能会被其原始作者和维护者放弃,而不是像拥有专有产品的公司那样,以计划好的、周全的方式“此功能将被弃用”,让您有机会随着时间的推移停止使用该功能。由于各种原因,模块可能会被直接放弃。对于拥有许多用户的活跃模块来说,这种情况不太可能发生,因为社区中的其他人可能会介入并提供帮助,但我已经在不止一次的情况下在较小的模块中看到过这种情况。
此外,社区或模块维护者可能不同意您关于模块应如何发展或演变的看法。我见过一些模块问题,这些问题已经存在两年了,并且有近 100 名参与者进行了长时间的讨论,讨论的不是谁应该解决特定的技术错误,而是如何甚至是否应该解决它。有时不同的用户希望以不同的方式使用相同的功能,在这些情况下,模块维护者(志愿者职位)或资深的 Drupal 贡献者可能会有很大的影响力,而不管大多数人的立场如何。
然而,在 Drupal 中,即使社区对模块的发展方向与您想要的不同,您也可以编写自己的自定义模块供您单独使用,并且与社区贡献模块的存储库分开。
这些只是使用开源软件项目的一些细微之处。您必须学习社区如何运作,如何做出贡献,如何报告问题、测试解决方案并自己贡献解决方案,以及获得修复和改进的限制可能是什么。每个社区都有不同的活跃程度和不同数量的用户,这两者都会影响产品修复和改进的生成速度。
无论如何,您将免费使用大量代码,这些代码是成千上万,甚至可能是数千人的工作成果——您可能负担不起在您的工资单上拥有这么多的人。然而,通过开源项目,您可以获得所有好处。
3 条评论