生菜项目的起源
Source: Dev.to
背景
两年前,我和 Jason 开始了后来被称为 BLT Lettuce 项目 的工作,目标非常简单:让新手更容易在 OWASP 中找到入口。
我已经在 OWASP 里工作了十多年。每年,像时钟一样,我们都会看到一波学生加入 Google Summer of Code,还有许多只是出于好奇、想找个起点的人。他们都会用不同的方式提出同一个问题:
“我该从哪里开始?”
OWASP 是一个令人惊叹的项目生态系统,但对新人来说,可能会感到不知所措。代码仓库、文档、Slack 频道、邮件列表、项目页面——没有指引的话,这一切都很难导航。
在与 Jason 的一次对话中,我们意识到一件重要的事:当时与人们相遇的最佳地点正是他们已经在的地方——Slack。于是我们构思了一个简单的想法:一条欢迎信息。这个想法最终演变成了 Lettuce。
从想法到首次提交
概念很快从讨论转向代码。第一次提交于 2024年2月29日 落地,标志着初始原型的开始。2024年3月13日,Jason 通过 Slack 向我发送了项目的精炼摘要——帮助明确了 Lettuce 从此之后的愿景和方向。
我构建了初始原型,并在一些 GSoC 学生的帮助下对其进行完善并发布。它并不复杂,也不需要复杂。Lettuce 做了一件事做得非常好:帮助人们快速定位。
静默发布,真实影响
Lettuce 的首次公开亮相是自然发生的,2024 年 6 月 19 日晚上 8:03 在 Slack 上发布——没有公告活动,也没有营销推动。此后,它悄悄帮助了近 6,000 名新手以一种易于接受而非压倒性的方式首次接触 OWASP。没有任何喧闹。
成长的烦恼
在我们的 GSoC 旅程中,我们遇到了实际问题:
- 托管可靠性
- 服务器宕机
- 维护挑战
这些是每个早期项目都会遇到的问题。为了让用户的体验保持稳定,我们暂时将 Slack 功能迁移到了主 BLT 项目中,该项目已经运行可靠一段时间。最初的愿景始终是让 Lettuce 能够独立运行。
并行问题:项目新鲜度
当我在 OWASP 项目委员会的参与度加深时,另一个反复出现的问题变得不可忽视:陈旧项目——即被放弃的项目。我决定尝试通过构建一个 项目新鲜度原型 来解决它,部分灵感来源于 Simon Bennetts 在 OWASP 项目仪表盘上的工作。
结果是一个非常轻量级、基于项目列表的方法——并非用来评判项目,而是提供信号和可见性,让贡献者能够做出明智的决定。这项工作直接影响了我对入职、发现和指导的思考,并反馈到 Lettuce 的演进愿景中。
回归最初的愿景
我们目前正将 Lettuce 再次拆分为一个专用的、独立的项目。同时我们也在恢复原来的名称——因为它仍然非常贴切:
Lettuce → “Let us get started.”
更重要的是,我们正在回归 Jason 最初的设想:不仅仅是一个欢迎信息,而是一个结构化、层级化的指南,帮助用户了解 OWASP 项目生态系统。它为新手和 GSoC 贡献者提供了:
- 发现符合自己兴趣的项目
- 了解可以在哪里以及如何贡献
- 在不混乱的情况下浏览代码库
- 感到自信,而不是迷失
Beyond OWASP
我们从 Lettuce 学到的是,这个问题并非 OWASP 所独有。任何拥有众多仓库、众多项目并且不断有新贡献者加入的组织,都面临同样的挑战:大规模入职。这正是 Lettuce 接下来的方向——一种可复用的方法,其他 GSoC 组织和大型开源社区可以采用,通过 Slack(或类似平台)引导新人,同时展示健康活跃的项目和明确的贡献路径。
Why This Matters
Lettuce 从来不是为了打造炫目的东西。它旨在解决我们年复一年观察到的一个非常真实、非常人性的难题:人们想要贡献,却不知道从何开始。有时,最简单的想法——在他们所在的地点与他们相遇,并给出明确的第一步——最终帮助了成千上万的人。这就是 Lettuce 的故事。