发布于 2026-01-06 4 阅读
0

如何选择和维护一个安全的开源项目

如何选择和维护一个安全的开源项目

软件开发界有一个相当进步的群体,他们认为,如果人们不再重复开发别人已经开发好并免费提供的东西,大多数人会更快乐,工作效率也会更高。他们被称为开源社区。他们希望你使用他们的作品。

我画了一幅关于使用他人物品的漫画,以车轮为例。

除了无需您费心维护之外,开源工具和软件还有一些显著的优势。尤其对于成熟的项目而言,很可能已经有人帮您解决了所有最棘手的 bug。由于用户可以轻松查看和修改源代码,程序也更有可能随着时间的推移得到不断的改进、完善和安全保障。众多开发者共同贡献,会带来他们各自独特的专业知识和经验。这使得最终的产品比单个开发者开发的产品更加强大、功能更加完善。

当然,开源项目的创建者背景各异,因此并非所有开源项目都一样,其安全性也未必相同。许多因素都会影响一个项目是否适合您的使用场景。以下是一些选择开源项目时可以作为良好起点的通用考虑因素。

如何选择一个开源项目

一个好的软件项目最基本的要求是:可靠、易于理解,并且拥有最新的组件和安全性。有一些指标可以帮助你判断一个开源项目是否满足这些标准。

谁在用它

从整体来看,开源项目的现有用户数量或许能反映其质量。例如,如果一个项目有100个用户,那么在你发现它之前,很可能已经有人尝试使用过至少100次了。因此,按照“谁知道山洞里有什么,谁先去”的古老智慧,这个项目很可能没问题。

你可以通过查看现有统计数据来了解项目的用户群体。根据你使用的平台,这些数据可能包括下载量、评论数、问题或工单数、评论、贡献数、分支数或“星标”数等等。

对GitHub等平台上的社交统计数据要持保留态度。它们可以帮助你判断一个项目的受欢迎程度,但就像餐厅点评应用只能帮你决定是否去Foo's Grill & Bar吃饭一样。Foo's Grill & Bar的位置、开业时间以及人们想吃牛排时附近是否有人光顾,都决定了它拥有26条评论可能是一个好兆头,也可能是一个坏兆头。虽然你不会指望一个针对非常小众的应用场景或技术的项目拥有数百名用户,但在这种情况下,拥有一些活跃用户同样能给人以信心。

外部验证也很有用。例如,Linux 操作系统发行版(发行版)中包含的软件包必须符合严格的标准并经过审查。选择发行版默认软件仓库中包含的软件意味着它更安全。

或许,判断一个项目质量好坏的最佳指标之一,就是看它的开发团队是否在使用自己的项目。留意那些显示项目创建者和维护者正在使用自己开发的项目的议题、讨论或博客文章。这种做法通常被称为“吃自己的狗粮”或“狗粮测试”,它表明该项目很可能得到了开发者的良好维护。

谁在建造它

优秀开源软件的最大敌人通常是缺乏关注。开源项目的参与者决定着一个库是昙花一现还是成为备受推崇的长期实用工具。多位尽职尽责的维护者,即使是利用业余时间做出贡献,也能大大提高项目持续发展和吸引用户关注的成功率。

受关注的项目通常会得到贡献者和用户社群的支持,反过来,社群也会不断发展壮大。新的贡献者会受到积极欢迎,项目会提供清晰的指南解释如何提供帮助,项目维护者也会随时提供帮助,解答人们遇到的各种问题。一些社群甚至设有聊天室或论坛,供人们在贡献之外进行交流。活跃的社群有助于维持项目的兴趣、相关性和质量。

除了自然发展之外,项目还可以通过赞助机构得以持续运作。政府和拥有经济利益的公司也是开源项目的赞助者,而那些被公共部门使用或获得资金支持的项目更有动力保持其相关性和实用性。

它有多鲜活?

开源项目的活跃程度和频率或许是衡量其安全性重视程度的最佳指标。查看版本发布、提交历史、变更日志或文档修订情况,即可判断项目是否活跃。由于项目规模和范围各不相同,以下是一些需要关注的通用要点。

维护安全性是一项持续性的工作,需要定期监控和更新,尤其对于包含第三方组件的项目而言更是如此。这些组件可能包括库,也可能是项目中任何依赖于外部资源的部分,例如支付网关集成。不活跃的项目更有可能存在代码过时或使用过时的组件版本。为了更准确地判断,您可以研究项目的第三方组件,并将它们的最新补丁或更新与项目的最新更新进行比较。

没有第三方组件的项目可能没有外部更新可供应用。在这种情况下,您可以查看项目近期的活动和发布说明,以判断项目维护者的投入程度。通常,活跃的项目应该在最近几个月内有更新,并且在过去一年内有重要的版本发布。这可以很好地表明项目是否使用了最新版本的语言或框架。

你还可以通过观察项目维护者本身来判断项目的活跃程度。活跃的维护者会迅速响应反馈或新问题,即使只是简单地回复一句“我们正在处理”。如果项目拥有社区,那么维护者也是社区的一份子。他们可能拥有专属网站或定期撰写博客。他们可能会提供直接且私密的联系方式,尤其是在提出安全问题时。

你能理解吗?

对于一个旨在供除创建者之外的任何人使用的项目来说,拥有文档是基本要求。优秀的开源项目都拥有易于理解、真实可靠且详尽的文档。

编写完善的文档是项目脱颖而出、展现维护者用心和奉献精神的关键之一。“入门指南”部分可以详细介绍运行项目所需的所有要求和初始设置。文档中清晰的主题列表能够帮助用户快速找到所需信息。明确的许可声明则能清晰地说明项目的使用方式和用途。这些都是服务于用户的优秀文档的典型特征。

遵循良好编码规范的项目,其代码的可读性通常与文档一样出色。易于阅读的代码更容易被理解。通常,它具有定义清晰、命名恰当的函数和变量、逻辑清晰的流程以及明确的用途。可读性高的代码更容易修复、维护和扩展。

兼容性如何?

有几个因素决定一个项目与您的目标是否契合。这些都是客观因素,可以通过查看项目的代码仓库文件来确定。这些因素包括:

  • 代码语言
  • 具体技术或框架
  • 许可证兼容性

兼容性并不一定意味着完全匹配。不同的编程语言可以相互协作,各种技术和框架也是如此。您应该仔细阅读项目的许可协议,以了解它是否允许您将其用于您的目标,或者它是否与您想要使用的许可协议兼容。

最终,即使一个项目满足所有这些标准,也未必完全符合你的使用场景。然而,开源软件的魅力之一就在于,你可以通过修改使其更适合自身需求而从中受益。如果这些修改让项目对所有人都有益,那么你可以通过贡献自己的工作成果来回馈项目,并将这份贡献传递下去。

对开源项目的妥善维护和培育

一旦你采用了一个开源项目,就需要稍加关注,以确保它能持续为你的目标带来益处。虽然维护者会负责上游项目文件,但你则需要对自己的副本负责。与所有软件一样,你的开源项目必须得到良好的维护,才能保持其安全性和实用性。

安装一个系统,以便在软件有更新可用时收到通知。及时更新软件,把每个补丁都当作安全关键补丁来对待;它们很可能确实如此。请记住,开源项目的创建者和维护者在大多数情况下都是出于好心。如果您使用的软件特别出色,其开发者可能会定期发布更新和安全补丁。您需要主动关注更新并及时安装。

与大多数软件开发工作一样,保持开源代码的模块化设计非常有用。您可以使用Git 子模块、分支或环境来隔离您的代码。这可以简化更新流程,并帮助您快速定位出现的任何错误。

所以,尽管开源项目可能不需要花钱,但买者自负,这意味着,“吉米,如果我们给你一只小狗,照顾它是你的责任。”

文章来源:https://dev.to/victoria/how-to-choose-and-care-for-a-secure-open-source-project-19kp