AI辅助更新依赖项保证正常运作

初创公司Infield通过持续监控和汇总的升级数据,为开源组件的安全管理提供逐步指导

译自AI-Assisted Dependency Updates without Breaking Things,作者 Susan Hall 是 The New Stack 的赞助商编辑。她的工作是帮助赞助商为他们提供的内容获得尽可能广泛的读者群。她自The New Stack创立之初就为该网站撰稿,也为其他网站撰稿......

大家都想要保持软件的更新,但担心改变一件事会打破另一件事,所以那些项目就会堆积起来。然后就是压倒性的 backlog,情况只会越来越糟。

这是纽约初创公司Infield正在利用 AI 和数据来解决的问题。

"我们希望帮助软件工程团队保持所有开源依赖的更新,我们正在通过为他们提供所需的所有信息来避免在升级时破坏生产环境来做到这一点,因为开发人员让所有这些升级悬而未决的头号原因是他们担心会出问题......我会通过做这个升级来破坏生产环境......但如果我就这样放着不管,它不会坏掉,"联合创始人兼首席执行官Steve Pike说。

Infield 的解决方案涉及对开源组件的建议更新进行持续监控,以及提供逐步指南来达到理想状态的工具,这可能涉及以特定顺序更新各种子组件以避免问题。

复杂的网络互联

根据应用程序安全供应商Synopsys的数据,平均软件应用程序包含500 多个开源组件。虽然大公司可能有专门的团队来保持组件更新,但大多数公司没有,维护软件需要工程师从核心产品和新功能的工作中抽身出来。

Infield 最近宣布的 300 万美元种子轮投资方 Foundation Capital这样说:

"现在任何软件解决方案中开源软件占据了70-90%,每个组件都需要定期更新以提高安全性、性能和可靠性。然而,85%的代码库中包含的组件比实际版本落后4年以上。此外,许多依赖项依赖于额外的包,形成传递或链式依赖。如果不仔细管理,更新一个依赖项有时会打破整个链。这个复杂的互联网络的技术术语是'依赖地狱'。"

Infield 将其视为一个数据问题。

"我们知道这些升级以前已经做过,但当人们去做的时候,他们实际上是第一次做。" Steve Pike 说,并补充说,公司在隔离中都在重造轮子。

"他们是个小宇宙,然后他们就再也不去考虑它了。所以我们正在收集所有关于开源依赖项及其升级的非结构化信息。"

这可能是一个变更日志,维护者关于代码本身变更的笔记,或者 GitHub 或互联网其他地方的其他社区生成的内容,以及来自 Infield 用户经验的数据。他们经常回滚吗?安全进行此升级是否需要对代码进行更改?Infield 还维护自己的未记录不兼容性数据库。

"因此,所有关于这些升级的数据,我们都在存储、结构化,然后在您开始升级时主动向您提供。" Steve Pike 说。

Tech 行业发展迅速,别错过任何一个精彩节目。订阅我们的 YouTube 频道,观看我们的所有播客、访谈、演示等内容。 立即订阅

采取数据中心视角

联合创始人 Steve 和Allison Pike在 SevenFifty 相遇,这是一家通过整合来自 1000 多家酒精饮料批发商的数据,为餐厅制作产品和价格数据集的科技创业公司。Steve 撰写了最初的代码并成为 CTO,而 Allison 担任 COO,销售数据产品并与数据工程师合作。从那以后,他们创建了 Syndetic,将其描述为"数据集的 Shopify",并通过 Y Combinator。但新冠疫情影响导致封锁。

正如 Allison Pike 所说,"我们从未能享受大多数 YC 公司可以享受的演示日。我们被困在山景城。"

但这对夫妻团队筹集了足够的资金来维持 Syndetic 的运营,而 Steve 开始接受咨询工作,主要为技术债务公司保持软件更新。从这种经历中产生了以数据为中心来维护开源依赖的观点。

他们的第三位联合创始人Andrew Lenehan之前是 AppNexus(现在属于微软)的产品经理,并共同创立了 Roster,后来成为 Punchcard,这是一种用于营收团队的数据探索工具。

Allison Pike 说,使用数据来改进升级管理只能说得通。

"这是AI的一个有趣应用,因为最近关于AI的很多文章,或者可以说是自ChatGPT推出以来,一直在讨论将AI应用于代码本身。变更日志真的很有趣,因为它是一个由人类编写的文档,也就是维护开源项目的维护者,但它是代码。所以它在GitHub仓库中,但它是一个由人编写的文本文档。所以你可以更详细地了解。"

所有这些信息都进入了一个大型语言模型(LLM),用于定义从A点到B点的更新策略的最佳策略,该公司称之为升级路径。根据该公司的说法,这可以为像保持Ruby on Rails的所有内容都是最新版本这样的大型项目节省几个月的时间。

首先,您将Infield Web应用连接到GitHub中的代码库,它会扫描您的代码以确定底层依赖项,然后该技术会推荐您的代码库安全升级所需的步骤。这可能涉及将子组件更新到中间版本,而不是最新版本,以避免下游中断。

"一旦你积累了100个待升级的候选项,你可以使用我们的数据来优先考虑它们,"Steve Pike说。"所以我们向你展示有关风险的信息------如果不升级此依赖项,你会面临什么风险?------以及工作量。进行升级会涉及多少工作?是否有重大更改或您项目中的其他包需要先升级,这些包正在阻止此升级?"

"因此,您可以运行过滤器将这两者相互对比,找到例如,我可以清除一打过时的依赖项而不触发任何破坏性更改。因此,只要我的测试通过,我可能可以在一个拉取请求中完成这些操作。但是还有其他高风险的事项,实际上存在重大的破坏性更改。因此,这需要更多的是一个项目。"

Allison Pike认为,像Snyk这样的现有解决方案往往专注于发现安全漏洞,或者像Dependabot一样,给用户留下一个任务列表,但缺乏为其特定系统定制的上下文信息。几年前,我曾写过一家欧洲公司Depfu,它利用自动化每次仅发送不超过七项任务,以避免用户感到不知所措。

全自动的依赖管理也有其批评者,包括顾问Gerald Benischke在这篇博文中反对它。Infield采用更加人为辅助的方法。

虽然Infield可以自动检测破坏性更改,依赖于每种语言或框架的检查器和包管理器,但它不自动执行实际的更新。如果需要代码更改,用户可以自行操作,或者依赖于Infield的托管服务来完成。最初面向Ruby on Rails,它最近增加了对JavaScript/TypeScript和Python的支持。TypeScript和JavaScript共享相同的包管理器。

本文在云云众生yylives.cc/)首发,欢迎大家访问。

相关推荐
达柳斯·绍达华·宁4 分钟前
CNN中的平移不变性和平移等变性
人工智能·神经网络·cnn
技术无疆1 小时前
【Python】Streamlit:为数据科学与机器学习打造的简易应用框架
开发语言·人工智能·python·深度学习·神经网络·机器学习·数据挖掘
xuehaishijue1 小时前
红外画面空中目标检测系统源码分享
人工智能·目标检测·计算机视觉
羊小猪~~1 小时前
机器学习/数据分析--用通俗语言讲解时间序列自回归(AR)模型,并用其预测天气,拟合度98%+
人工智能·python·机器学习·数据挖掘·数据分析·回归·时序数据库
浊酒南街1 小时前
吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.7-2.8
人工智能·深度学习·神经网络
DuoRuaiMiFa2 小时前
ChatGPT全新功能Canvas上线:开启智能编程与写作新篇章
人工智能·chatgpt
DisonTangor2 小时前
Windows 11将新增基于AI的搜索、生成式填充和其它AI功能
人工智能
soso19682 小时前
【AI自然语言处理应用】通过API调用通义晓蜜CCAI-对话分析AIO应用
人工智能·自然语言·ccai
网安-搬运工2 小时前
RAG再总结之如何使大模型更好使用外部数据:四个不同层级及查询-文档对齐策略
人工智能·自然语言处理·大模型·llm·大语言模型·ai大模型·rag