Moviento 0deps:本地依赖与安全

在大多数项目中,软件开发人员会安装数百个外部库。现代框架依赖于数千个传递依赖(transitive dependencies)。这意味着您的应用程序正在运行由数百名陌生人编写的代码。

这种生态系统加速了开发进程,但也带来了巨大的供应链风险。

0deps 运动提出了一个简单的问题: 如果您的应用程序只运行您实际控制的代码会怎样?

每个依赖项都会增加新的攻击面。一个依赖项可能会:

  • 引入安全漏洞。
  • 成为供应链攻击的目标。
  • 被其创建者弃用。
  • 更改其公共 API。
  • 破坏向后兼容性。

在 0deps 模型中,您将所有必要的依赖项直接移入您的项目仓库。您不再在构建期间动态下载包。从您克隆仓库的那一刻起,运行应用程序所需的一切都保留在仓库中。

这种方法提供了:

  • 可复现的构建。
  • 减少对外部包注册表的依赖。
  • 集中式的安全审计。
  • 可预测的结果。

目标并不是让代码静态化。实现(Implementations)和算法必须不断演进,以修复漏洞并保持安全。目标是保持公共契约(public contract)的稳定。

每个库都会暴露特定的接口。例如:

  • authenticate()
  • createSession()
  • verifyPasskey()

这些函数构成了一个契约。即使您重写了底层代码,契约也保持不变。您可以更换库或更改协议,而不会破坏应用程序的其他部分。

当漏洞出现时,您通常面临两个问题:

  1. 修复漏洞。
  2. 检查更新是否会破坏您的应用。

在 0deps 架构中,第二个问题消失了。您只需更新接口背后的实现。公共 API 保持完全一致。您的应用程序无需更改代码即可继续运行。

通过将外部代码隔离在内部适配器(adapters)之后,您可以降低长期风险。如果某个库明天消失了,您只需更新适配器即可。

0deps 并不反对开源。它改变了您使用开源的方式。库变成了集成组件,而不是动态的外部链接。

这创造了可预测、具有韧性且易于维护的软件。实现不断演进,而契约始终如一。

Source: https://dev.to/fullagenticstack/movimiento-0deps-dependencias-locales-contratos-inmutables-y-seguridad-por-diseno-1a6o