歷時5年,這款開源全棧框架火爆問世,GitHub狂攬15K星!網友:不支援Vue,差評

整理|冬梅、核子可樂
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://old.reddit.com/r/webdev/comments/1jbyxxr/my_brother_and_i_built_laravel_for_js_and_it_just/
https://www.ycombinator.com/companies/wasp
https://preview.redd.it/bbxu7y7ruvoe1.png?width=563&format=png&auto=webp&s=14341da2bc4d0396335e92285284d5a01ef9a059
https://wasp.sh/
https://wasp.sh/blog/2022/09/29/journey-to-1000-gh-stars
宣告:本文為 InfoQ 整理,不代表平臺觀點,未經許可禁止轉載。
今日好文推薦
直播預告
智慧編碼工具層出不窮,究竟怎麼選、如何用?3 月 5 日 -28 日,InfoQ 極客傳媒將發起「智慧編碼系列」直播,邀請阿里、百度、騰訊、位元組、商湯、思碼逸等企業一起線上 Coding,與所有開發者直觀感受和評測數款國內外線上編碼工具在企業真實生產場景中的表現。歡迎掃碼或點選按鈕一鍵預約直播、查看回放

相關文章