Remix 作者怒指 Next-js 抄襲,Next-js 迴應:這功能我早就有了

   作者 | 鄧豔琴

Remix 與 Next.js 又對上了。

時間線:

5 月 23 日,Remix.js 發佈了 React Router v6.4.0-pre.2(https://github.com/remix-run/react-router/releases/tag/v6.4.0-pre.2)。

5 月 24 日,Next.js 發佈了 Layouts RFC(https://nextjs.org/blog/layouts-rfc)。

5 月 24 日早上,Remix 作者 Ryan Florence 在其 Twitter 上怒斥 Next.js,稱其在沒有打招呼也沒有致謝聲明的情況下,在最新發布的 Layouts RFC 裏面抄襲了 Remix 的功能。Remix 團隊對於此事的態度是:“Remix 覺得無所謂,我們的目光專注在幫助 React Router SPA 從服務器處受益。至於 Next.js 會不會逐漸變成 Remix,這對我們來說無關緊要。我只是認爲,他們(Next 團隊)可以承認我們取得的共同進步。”

並且,他還炮轟了現在的 React 團隊:“我說真的,現在 React 真的有多開放?在我看來,它就應該被轉移到一個基金會。”

與此同時,Next.js 官宣 Layouts RFC 發佈的推文下面,也同樣有人提出質疑——這完全就是 Remix!Next.js 把路由文件夾的名字命名爲 app,就是在欲蓋彌彰。

Alex @agctyz: lmao this is literally @remix_run , even calling the new routes folder "app"

Remix 與 Next.js 互爲競爭對手,較勁已久。數月前,Remix 作者 Ryan Florence 還曾發佈一篇題爲《Remix vs Next.js》的文章,他在文中稱,Remix 是要勝過 Next.js 的。因此,這兩個框架前後腳發佈新版本並不稀奇,但出乎意料之外的是,此次更新,竟然引發了一場 “抄襲風波”。

文章地址:

Remix 究竟比 Next.js 強在哪兒?**
**

Next.js :我們的原型比 Remix 更早

Ryan Florence 發文中提到的 “沙皇”,正是去年剛從 Meta 離職加入 Vercel 的 Sebastian Markbåge,他也是被外界熟知的 React 團隊的靈魂人物。

對於本次事件,Sebastian Markbåge 迴應稱,Layouts RFC 的原型並不是 Remix,甚至它的第一個原型是在 Remix 可用之前開始的。它的靈感更多地來自於帶有 React Router 的傳統服務器路由技術(比如 FB),這一點和 Next.js 有些不謀而合,“因此,在這種情況下,我認爲這更多的是一種趨同進化。”

Sebastian Markbåge 列出了一系列證據(詳見:https://twitter.com/sebmarkbage/status/1528864452522971136),大致意思爲:原來每次導航都要從根組件開始做樹形遍歷更新,後來他想做成只針對更改的數據做局部更新,加上其他一些必要的但當時還缺失的功能。最開始原型是由 React.js 核心開發 Dan Abramov 和他一起製作的。而當他加入 Next.js 團隊之後,則與 Tim Neutkens、Delba Oliveira、Lee Robinson、@shuding_、@huozhi 等人一起合作,對 RSC 做了一些修正和迭代,最後纔在 Next.js 裏面支持了 RSC。

但有喫瓜網友反駁稱,並沒有看見 Next.js 在致謝聲明裏提到 React router。

隨後,Vercel 的開發者關係負責人 Lee Robinson 發文表示,已經更新了 RFC,感謝 Relay、React Router、Ember、SvelteKit 以及 @cassidoo 給早期的 Layout RFC 帶來的啓發。

網友:做得早不重要,做得好才重要

在雙方對陣的間隙,喫瓜網友紛紛現身,部分熱評如下。

jaykay.eth@jkcorrea_: 相反,Next.js 過於臃腫,你只能在 Next.js 中找到一堆概念。在加上 “受 Remix 激發” 的 API 之前,他們需要進一步擴展。但即便如此,他們也會讓大量想要 SSG/ISR 的用戶感到不安(Remix 就不存在這個困擾)。說了這麼多,對 Vercel 來說這確實有點煩人,但請繼續關注 Remix 的獨特之處,最終功勞將歸於它應去之處。

Andy Ingram @andrewingram: 第一部分並不完全正確。你總是能夠對迴應做任何你想做的事情,他們只是從來沒有大聲疾呼,這是一種恥辱。但多年來(至少 3 年)我一直在用 Next 做狀態碼甚至緩存 Header。

Christian de Botton @cdebotton: 在 Remix 之前,Sapper 就支持了嵌套路由,你可能也有類似的實現,但是你能說一下你又在哪裏致謝了它(畢竟它爲你鋪平了道路)嗎?此外,在 React 還沒有出現之前,我就在 Ember 中編寫了顯示子路由內容的組件。

其中,一位名爲 Antonio Sarcevic 的開發者吸引了我們的注意。他認爲,誰做得早不重要,誰做得好才重要。

事實上,概念和思路的雷同,很難被判定爲抄襲,除非代碼一模一樣。那麼,對於此事,你是怎麼看的?

最後,感謝郝稼力、趙洋老師對本文的貢獻。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/i0_2x7oStasyhTtucJBzaw