历时 5 年,这款开源全栈框架火爆问世,GitHub 狂揽 15K 星!网友:不支持 Vue,差评

B站影视 内地电影 2025-03-19 00:49 1

摘要:Wasp(Web 应用程序规范)是一个类似 Rails 的框架,用于 React、Node.js 和 Prisma。该开源框架,旨在通过 React、Node.js 和 Prisma 简化全栈 Web 应用程序的开发,它通过为 JavaScript 开发人员提

整理|冬梅、核子可乐

Wasp(Web 应用程序规范)是一个类似 Rails 的框架,用于 React、Node.js 和 Prisma。该开源框架,旨在通过 React、Node.js 和 Prisma 简化全栈 Web 应用程序的开发,它通过为 JavaScript 开发人员提供类似 Rails 的体验而受到关注。

该框架使用简单的配置文件(.wasp)来描述高级应用程序细节,结合在熟悉的框架如 React 和 Prisma 中编写独特逻辑的能力,使其成为开发人员快速原型设计和部署 Web 应用程序的优选项。

Wasp 最引人注目的一个方面是其编译器,使用 Haskell 构建,从.wasp 文件生成前端、后端和部署的完整源代码。这种“智能”方法使开发人员能够专注于编写业务逻辑而不是样板代码,具有内置的全栈身份验证、简单部署和全栈类型安全等功能。

而关于 Wasp 的故事要从 7 年前说起。

两次资金申请被拒,

创始团队曾几近崩溃

2020 年,Wasp 的两位创建者第一次在这个社区发布项目帖子时,他们还没想好自己到底要做什么,刚刚,这个项目在 GitHub 上斩获了 1.5 万 star,并且得到了众多个人创业者、初创公司和财富五百强企业的广泛应用。

该项目已经在 Discord 中汇聚了约四千名开发者,而如今的 Wasp 尚处于 Beta 测试阶段。

为什么要做这样一个项目?这要从 7 年前两位创始人遇到的难题说起。

Wasp 这两位创始人是:Matija Sosic 和 Martin Sosic,他们不仅是双胞胎兄弟,还是技术上的强力搭档。

Matija 拥有计算机科学硕士学位,也是一名软件工程师,拥有丰富的软件开发经验,他擅长干净代码、函数式编程和 Web 开发,热衷于组建团队打造实用产品。

Matija 的职业经历丰富:2020 年以前,曾在 Lifebit Biotech 担任工程团队负责人,带领团队解决技术难题,推动生物技术与软件开发融合项目的进展。2017 年,加入 Techstars Tech Associate(伦敦)团队,参与跨国项目,积累国际合作经验。他也曾担任 TalkBook 的首席执行官兼联合创始人,凭借敏锐市场洞察力,带领团队推出创新产品,促进公司业务增长。

Matija Sosic

Martin 则在算法和系统设计方面有着深厚的背景。他对开发产品、开源、函数式编程、Web 开发以及干净代码满怀热忱。曾作为算法竞赛选手,在逻辑与编程能力上崭露头角。他曾在谷歌、Palantir 等企业实习,并在 Lifebit.ai 的工程团队负责人。

Martin Sosic

2018 年,在为一家位于伦敦的初创公司开发用于在云端运行生物信息学分析的网络平台时,Matija 和 Martin 萌生了创建 Wasp 的初步想法。

当时,他们要使用最新最热门的堆栈从头开始创建全栈应用程序。于是他们选择了 React/Node.js;对于以前的项目,他们通常会在后端使用 PHP/Java/Node.js,在前端使用了 jQuery/Backbone/Angular。因为兄弟二人花了很多时间重新学习如何使用最新的堆栈,只是为了重新构建相同的功能(身份验证、CRUD、表单、异步作业等)。

所以当时两人就有这样的疑问:“为什么不使用与堆栈无关的高级语言(例如 SQL 对数据库所做的那样)抽象这些常见功能,以便永远不再重新实现它们?”

所以在构建 Wasp 之前,他们充分地调研了项目的可行性。

Matija 表示:“在之前的创业公司中,我们发现与用户交谈非常有帮助,所以我们决定在 Wasp 中再次这样做”。

于是兄弟二人在大约一个月的时间里,进行了 25 次问题调研,探讨“用户在 Web 应用开发中面临的最大挑战是什么?”汇总结果后,他们确定了以下四个问题最为重要,并决定在 v1 版本中重点关注它们:

快速启动一个新的 Web 应用程序并确保遵循最佳实践是很困难的。

在管理前端、后端和数据库的状态时存在大量重复 / 样板。

每个新应用程序都会重新实现许多常见功能。

开发人员因日益复杂的工具而不知所措,不想负责管理它。

他们还根据主题对得到的答案进行了聚类,以便能够更深入地研究并确定最受关注的领域:

受访者遇到的有关启动和设置新网络应用程序的问题。

在与其他开发人员确认并澄清了问题后,兄弟二人觉得终于应该开始编写代码了。

2019 年年初,兄弟二人在 GitHub 上创建了一个新的 repo,并开始设置工具并尝试这个概念。

在接下来的几个月里,他们将 Wasp 视为一个附带项目 / 实验,没有进行任何营销。但是,他们非常清楚外部反馈的重要性。因此,在构建了一个非常基本的代码生成功能后,他们还创建了一个项目页面,可以与其他人分享,以解释他们正在做的事情并征求反馈。

这是 Wasp 的第一个页面,虽然它没有很好地解释 Wasp 的作用。

那时,他们为 Wasp 想出了第一个“真正”的名字 - STIC:规范到实现编译器,因为 Wasp 的远大愿景是成为一种与堆栈无关的规范语言,让人们可以从中生成实际的代码,例如 React 和 Node.js 甚至其他一些堆栈。

他们分发 STIC 项目页面的首选方式是通过相关的 subReddits - r/webdev、r/coding、r/javascript、r/Haskell、r/ProgrammingLanguages 等。

这是他们发布的第一篇有关 Wasp 的 Reddit 帖子:

但他们很快了解到的一件重要的事情是,Reddit 不喜欢任何形式的宣传和推销。有时,即使兄弟俩认为当时他们只是在征求反馈,而非推销。继 Reddit 之后,他们又在 Hacker News 上发布了产品。

Martin 和 Matija 还跟进了他们之前采访过的人,询问他们在 Web 开发方面遇到的问题。兄弟二人向这些受访者展示了 STIC 项目页面并征求意见。从他们收集到的所有反馈中,两人发现了以下问题:

开发人员不熟悉“DSL”这个术语。我们几乎每天都会使用 DSL(例如 SQL、HCL(Terraform)、HTML),但它不是一个流行的术语。

开发人员害怕学习一门新的编程语言。虽然 Wasp 的目标从来不是取代 Java 或 Typescript,而是让 Wasp 与之协同工作,但兄弟二人未能很好地传达这一点。他们的信息让开发人员觉得,如果他们想使用 Wasp,他们必须放弃所有以前的知识,从头开始。

没有人可以尝试 Wasp + 除了项目页面之外没有任何文档。尽管 Wasp 的代码是公开的,但目前除了项目页面外,几乎没有其他文档。此外,他们尚未建立构建和分发系统,这意味着只有经验丰富的 Haskell 开发人员才能从源代码构建它。这种情况使得开发人员难以理解其高层愿景,因为他们缺乏足够的资源和支持。Web 框架和语言通常需要实际体验才能判断其优劣,但由于缺乏可尝试的版本,开发人员很难评估 Wasp 的实际效果。

在处理完这些反馈后,兄弟俩意识到下一步要让 Wasp 达到这样的状态:开发人员可以轻松试用它,而无需任何额外的知识或面对从源代码编译的麻烦。这意味着要稍微完善一下,添加一些关键功能,并编写我们的第一个文档,以便用户知道如何使用它。

他们当时的宗旨是专注于一件事,要么开发,要么社区。由于 Wasp 团队只有兄弟两人,所以很难同时做多件事。文档发布后,Wasp 已准备好轻松下载,他们将此版本称为“Alpha”,并再次切换到“社区”模式。

从 0 到 15k star:

加入 YC,一步步落地

像很多初创企业一样,Wasp 团队一心搞研发之际,也遇上了创业路上的第一道坎——资金短缺。

2020 年 5 月,在第一次资金申请被拒绝后,Wasp 团队第二次向知名创业孵化器Y Combinator(YC)提交了申请。然而,他们收到了 YC 合伙人 Harj Taggar 的回复,表示 YC 决定不资助 Wasp 这一批次的申请。Harj 在邮件中肯定了团队成员的编程能力,并指出他们致力于简化 Web 应用开发的目标是有价值的。然而,YC 认为 Wasp 所提出的领域——为 Web 应用开发创建领域特定语言(DSL)——是一个许多程序员都曾尝试解决的难题,因此决定不予以资助。

这一决定对 Wasp 团队来说无疑是一个打击。当时,他们已经在 Wasp 项目上投入了一年半的时间,其中最后 9 个月更是全职开发。为了追求这个梦想,团队的两兄弟辞去了之前的工作,全身心投入到项目中。到了这个阶段,他们在心理、生理和经济上都已感到精疲力竭。

尽管如此,Wasp 团队并没有放弃。与此同时,他们也更冷静地同时重新审视最初的决定——为什么要创建这样一款开源项目?

Matija 和 Martin 在回忆这段旅程时表示:“刚开始,Wasp 只是我们的一个念头——或者更确切地讲,是一个现实问题:‘为什么还没人做过?如果动手试试,我们会遇到哪些挑战?’在经历了十年之间持续开发 Web 应用程序,并使用各类主要技术栈(包括服务器端的 PHP、Java 和 Node.js,再到客户端这边的 Backbone、Angular 和 React)之后,我们对于‘框架疲劳’可谓深有体会。换言之,每种新技术栈都在重新发明轮子。”

于是他们开始思考这个问题,并把需要解决的问题记录下来。

他们再次坚定了 Wasp 项目立足的根源——要创建一套框架,通过提供更高级别的抽象来消除大量样板,同时保持足够的灵活度,避免其与特定技术栈和架构牢牢绑定。

既然目标已经十分明确,接下来就是一步一步坚定地走下去。与大多数成功故事一样,一个优秀项目的诞生往往并非线性推进。它的开端往往经经历漫长的“沉寂”,但偶尔也会出现希望。

Wasp 项目也不例外。在兄弟俩一往无前的努力之下,之后的事情开始步入正轨并迎来快速发展期。

在全职工作了大约九个月之后,两兄弟开始获得初步获得一定关注,也收到了来自 Reddit、Hacker News 和 Product Hunt 的积极反馈。

2020 年 12 月 6 日,兄弟二人在 PH(Product Hunt ) 上推出了 Wasp,它最终成为当日明星产品!这让 Wasp 的 star 数量和整体吸引力都有所提升。PH 的另一个好处是,Wasp 也出现在他们的每日新闻通讯中,据称该通讯拥有超过一百万订阅者。所有这些都给了他们很大的推动力和知名度。

但与此同时,他们也意识到这样一套全栈 Web 框架的落地可用对应着多少工作量,毕竟如此雄心勃勃的预期和要求绝非一朝一夕可以实现。寻求一定的外部支持仍是必要的。

2021 年,Y Combinator(YC)兄弟俩在第三次申请 YC 时成功入围。YC 一直在关注兄弟俩过去一年的进展,并在感受到社区的热情之后,最终决定支持他们的“疯狂”想法。

随后,项目迎来快速发展期,并在后面的几年内出现了两个重要拐点。

第一个重要拐点发生在 2023 年 7 月。当时他们发布了 MAGE,这是一款使用 Wasp 的 GPT SaaS 上手程序(大家可以理解成一次性的 Loveable/Bolt)。它是首批能够生成可运行全栈 Web 应用程序的大模型产品之一,并成功为 Wasp 博得了广泛关注。

第二个拐点则出现在 2023 年 12 月,当时推出的 OpenSaaS 是我们基于 Wasp 构建的开源 SaaS 上手程序,目前在 GitHub 也获得了近 10k star。

通过这两个拐点,Wasp 项目团队意识到,大多数开发者都迫切希望加快实现进程,而不愿把时间和心力浪费在挑选和择善而从 SaaS 中的各类不同功能上——包括身份验证、付款、管理仪表板、发送电子邮件、博客等等……

这正是该项目的意义所在——打造一套基于 React、Node.js、Prisma 和 Wasp,而且 100% 免费开源的高质量 SaaS 入门版本。OpenSaaS 顺利成为 Wasp 的“杀手级应用”,它吸引到开发者的关注,并在尝试之后感受到了这套框架的实用价值。

OpenSaaS 还与 Cursor 实现了完美搭配——在 Wasp 结构与高级原语支持下,许多开发者意识到 OpenSaaS 加 Cursor 这套理想组合,能帮助他们的 SaaS 项目在几天之内从创意转化为生产应用。

语言、DSL 还是框架——

Wasp 到底是什么?

从上面的例子可以看出,兄弟二人过去曾将 Wasp 称为一种语言,即 DSL 领域特定语言。结合这样的定位,他们最初只打造设计一个抽象层,确保其未来能够与任何语言、库和架构配合使用。

为此,他们需要引入自己的编译器。该编译器会首先分析开发者通过 Wasp 定义的应用程序规范(例如路由、异步作业、数据库操作等),将其与我们在 React 和 Node.js 中编写的“本机”代码相结合,最后生成一款 React/Node.js 应用程序。也就是说尽管功能有限、机制简单,但 Wasp 确实成为了由他们一手发明的语言。

但在一段时间的推进之后,兄弟二人发现这种定位思考是错误的。Wasp 的功能更多应该是 Web 框架,类似于 Laravel、Rails 或者 Next.js。它在底层使用编译器只是一种实现细节,是为了达成功能所必需的前提。例如,借助这种方法,用户可以轻松对整个应用程序的拓扑结构进行可视化,包括数据库、服务器乃至客户端组件:

虽然现在看来这没什么不大了,但却为其他一些有趣工具的功能实现打开了大门。

网友怎么看?

随着 Wasp 1.0 版本的发布,这一开源框架吸引了广泛的关注。由于 Wasp 常被与 Laravel 等成熟的开发框架相提并论,许多网友对其商业模式产生了浓厚的兴趣和疑问。Laravel 通过提供高级工具、托管服务和生态系统支持成功实现了商业化,而 Wasp 作为一个新兴的开源项目,目前仍专注于框架的完善和开发者社区的构建。

因此许多网友提出质疑,现阶段 Wasp 的团队成员的收入来源在哪里?有网友直接提问:

“你如何从这样的项目中赚钱?YC 的资金足以让你们两个继续下去吗?在此之前,你们自己很富有吗?”

对此,Matija 表示:“第一年,我们用个人储蓄来资助它,但之后我们在 YC 之后立即筹集了一轮 150 万美元的融资,这使我们能够扩大团队规模(目前我们有 8 人)并全职专注于它。”

由于 wasp 目前仅支持 React,有网友对他们不支持 Vue 表示遗憾。该网友评论道:

“太糟糕了。我认为 Vue 比 React 的缺陷少得多!”

但也有网友出来辩论称:“从商业角度来看,创始团队的决定是正确的,虽然我更喜欢 Vue,但我也会为这个项目选择 React。”

Matija 也在评论区回复了该网友:“Wasp 的愿景是支持不同的 UI 框架 / 库,但目前我们专注于 React。至少到 1.0 版为止是这样的。”

未来规划

那么接下来该做什么?经过近 7 年的开发和从广大受众处获得的反馈,Martin 兄弟二人对于 Wasp 1.0 的功能定位和最终形态有了非常清晰的认知。他们最终的目标是在 JS 上实现 Laravel 之于 PHP、Rails 之于 Ruby 的效果——构建一款思路明确的全栈、功能完备的框架,确保它能随意部署并随着业务成长而扩展。

兄弟二人表示:“我们清楚,自 Laravel/Rails/Django 诞生以来,技术界对于框架的要求和期望已经发生了巨大变化,但其背后对应的生产力与开发体验将始终成为我们不懈追求的目标。”

除了技术能力外,一款产品是否能在市场中长久地立足也要考虑其盈利模式。关于未来如何盈利的问题,Matija 也在 Reddit 给出了回答:

“目前,我们正专注于将开源框架升级到 1.0 版本,并证明我们能够创建下一个“JavaScript 领域的 Laravel”。这是我们工作的核心基础,如果没有这一基础,我认为考虑盈利是没有意义的。在盈利方面,像 Laravel、Vercel 和 Hashicorp 这样的公司是非常值得研究的案例。我们也在企业环境中获得了初步的采用,这让我们感到意外,并激发了我们之前未曾考虑过的新思路。”

尽管 Wasp 团队尚未明确公布具体的盈利计划,但他们表示,只有在框架达到稳定且广泛采用的阶段后,才会考虑商业化路径。这种以开发者体验和开源生态为核心的策略,与 Laravel、Vercel 等成功案例有相似之处。

这种“先开源,后盈利”的模式在技术领域并不罕见,关键在于如何在保持开发者信任的同时,找到可持续的商业化路径。

参考链接:

https://preview.redd.it/bbxu7y7ruvoe1.png?width=563&format=png&auto=webp&s=14341da2bc4d0396335e92285284d5a01ef9a059

声明:本文为 InfoQ 整理,不代表平台观点,未经许可禁止转载。

今日好文推荐

美国网友都在喷!OpenAI公然要求封杀DeepSeek等中国AI模型,还要合法“吸血”全球版权数据!

AI创业者演示视频被骂上x 热榜,背后YC赶紧删帖!实名吐槽:YC 就是一堆B2B企业互相推销产品!

DeepSeek、Claude 3.7 只是个开始,为“AI 应用落地”吹哨的另有其人

Rust粉丝破大防!TypeScript之父选Go语言重写编译器,性能飙升10倍引战:Rust不香了?

来源:极客邦科技

相关推荐