My Feedback about Hello Base

Michael Lynch

我對 Hello Base 的回饋

原文由 Michael Lynch 發布,訂閱此部落格

加密貨幣的語言隔閡

技術圈現在存在著一道令人遺憾的語言隔閡。

加密貨幣的愛好者們對現在的生態系和加密世界裡正在發生的事感到興奮。他們想把更多人拉進來,卻往往深陷在自己的加密同溫層裡,以至於很難向圈外人解釋任何跟加密貨幣有關的事物。

我覺得自己是彌合這個語言落差的合適人選,因為我了解加密貨幣的基本原理,但已經有大約七年沒有密切關注任何加密相關的事物了。

Base 本該是一座橋梁

一年前,我在 Into the Bytecode 節目中與 Jesse Pollak 的訪談中聽到他談論 Coinbase 當時正在開發的一項叫做 Base 的新技術,當時他對此非常興奮。

Base 的定位是要吸引剛接觸加密貨幣世界的新手開發者,讓他們能輕鬆在這個生態系中開始動手打造東西。

我開始探索 Base,卻發現它跟大多數其他加密貨幣專案一樣,有著同樣的語言隔閡問題。我覺得官方文件很難讀懂,而且似乎預設讀者已經對以太坊區塊鏈有很深的理解。

Jesse Pollak 曾 好幾 回應我的回饋,說這有助於他理解圈外人的觀點,但之後他還是照舊做一樣的事,所以我也就沒興趣再給他回饋了。

我又被召喚了

這週,Steve Simkins 在 Twitter 上標註我,分享了他做的一份 Base 入門介紹:

我打算再給 Base 一次機會,以非加密貨幣圈內人的角度,來分享我對這份說明文案的看法。

我喜歡 Hello Base 的地方

提供一條清晰的路徑

官方的 Base 文件在「入門」章節就立刻給新手開發者丟出一座讓人眼花撩亂的迷宮,到處都是分岔路徑。

Hello Base 則為讀者提供了一條從頭到尾清晰的流程。不需要為了入門而在好幾條學習路徑中做選擇。只有一條單一路徑,完全省去了「該選哪條路」的困擾。

可以直接在瀏覽器中完成整個教學

Hello Base 把 hello world 範例簡化得很好。讀者不需要安裝任何工具,也不用去學一套複雜的技術堆疊,直接在瀏覽器裡就能把所有東西都試一遍。

有解釋專有名詞

我對官方 Base 入門文件的一個批評,就是它隨口用了很多會讓新手困惑的行內術語。

Hello Base 在這方面做得不錯,它能辨識出新手看不懂的概念,並在一開始就加以解釋。它也精簡地說明了 Base 試圖在加密貨幣生態系中解決的問題。

我認為 Hello Base 可以改進的地方

更早點出價值

我覺得 Hello Base 跟許多其他 Base 文件有同樣的問題,就是預設讀者已經對 Base 感到興奮。

現實是,99% 的讀者根本不在乎 Base,如果你沒有給出一個讓人想留下的有力理由,他們幾秒內就會把分頁關掉。

第一段就應該告訴讀者,為什麼要關心 Base、為什麼要繼續讀下去。

目前的第一段是這樣寫的:

如果你是開發者,從來沒碰過區塊鏈或對它只有一點點了解,那你來對地方了。只要短短幾分鐘,你就能學會基礎知識,並了解如何在 Base 上開始打造應用——Base 是一個為了讓下一代開發者上鏈而設計的區塊鏈。

如果我是一個沒碰過區塊鏈的開發者,讀到這段會想:Base 能給我什麼?我為什麼要學 Base,而不是其他區塊鏈技術?又為什麼要學 Base,而不是用 web2 的技術就好?

拿 Hello Base 的開場跟Ruby on Rails 的開場來比較一下:

化繁為簡,駕馭現代網頁應用的複雜度。

先學會起步所需的最少知識,然後隨著前進不斷升級。Ruby on Rails 能從 HELLO WORLD 一路擴展到 IPO。

Rails 的訴求很有說服力。它說它會讓你輕鬆起步,而且同一套工具就能讓你一路擴展到巨大的規模。

我很希望看到 Base 的介紹能一開始就回答這個問題:

  • 在 Base 上,我今天能做到哪些用其他任何技術都做不到的事?

Jesse Pollak 曾舉過在 Base 上可以打造的應用範例,但對我來說一點都不吸引人。用它來做身分驗證或發送付款根本不是最簡單的方式,所以我們也不該假裝它是。

如果我是 web2 開發者,我為什麼要選擇在 Base 上開發,而不是其他任何現有的技術堆疊?

Hello Base 不需要證明自己是適合所有人的最佳解。就算現在還很小眾也沒關係(例如,對於無法使用傳統金融服務的人來說,它是一種收款方式),但總得有個夠吸引人的使用情境來把人拉進來。

精簡到只留有趣的部分

我很希望教學能馬上帶到有趣的地方。我理解 Hello Base 想先解釋基礎觀念,但那應該放在讓讀者看到一些很酷的東西之後。

如果我讀 Python 教學,它不會先從有型別與無型別語言的歷史講起,然後大肆讚揚記憶體安全的好處。它就是直接教你怎麼印出「hello world」。

「hello, world!」之所以成為經典的程式範例,就是因為它出現在 Kerninghan 與 Richie(K&R)合著的 The C Programming Language 第一章第一頁。當時其他程式書籍都是從變數和型別的基本觀念開始講起,而 K&R 卻是直接給你一個範例。

能不能比 hello world 更有意思?

跟上面幾點有點相關,我一直看到 Base / Ethereum 的範例,都是用更迂迴的方式去做一件本來用 web2 技術就能做到的事。

或許第一個範例只能這樣,但我們能不能展示一些更酷、真正發揮 Base 獨特性的東西?

如果讀者本來就對「為了上鏈而把資料存到區塊鏈上」這件事沒什麼興趣,那有什麼用 Base 就能輕鬆做到、但用 web2 技術卻很難或根本不可能的、讓人興奮的事呢?

我能不能把內容放在付費牆後面,而不用被 Gumroad 抽 13%?我能不能做一個簡單的方式讓粉絲每月斗內我,而不需要經過 Patreon 的審核?

減少術語

雖然 Hello Base 已經解釋了大部分術語,但還是有很多詞其實沒有定義(例如「gas」、「optimistic rollups」)。

但就算你把每個詞都定義了,讀者也沒辦法快速瀏覽就掌握教學在講什麼,因為讀到一半,基本上就像在講另一種語言了。

以下是從教學約 30% 處摘出來的一段。我把非加密開發者會感到陌生的詞彙加粗了:

這些 rollups 的另一個大好處是它們保持 EVM 相容,這意味著你為 Ethereum 寫的程式碼可以無需額外工作就部署到 L2 上。

我們真的需要這些解釋嗎?如果我在跟著教學做,我只想看到技術實際運作的樣子。我不需要知道歷史背景。對於我需要理解的概念,給我一個簡化的說明就夠了。

誠實面對 Base 的挑戰

我對 Base 文案最大的不滿之一,就是他們不斷重複那套口號:「這是開發者打造全新網頁應用最簡單的方式!它是無需許可的,所以任何人在任何地方都能做!」

然後你真的開始動手做,他們才說:「喔對了,你需要一個 Coinbase 帳號*,而且 Coinbase 還得對你做全身掃描來驗證身分。還有,你的應用程式除非用些彆扭的 workaround,否則沒辦法儲存超過幾 KB 的持久性資料。還有,你一旦部署後就永遠不能修改應用程式,除非你用這些彆扭的 workaround。」

* 我知道使用 Base 其實不一定需要 Coinbase 帳號,但所有教學都走那條路,也沒有提供其他選擇。

Base 目前還有一些粗糙的地方,讓入門變得很困難。我覺得教學應該誠實面對這些問題,而不是做到一半才讓開發者感到錯愕,或假裝這些痛點不存在:

  • 即使只是想試玩一下 Base,你也得花錢。
  • 要把錢弄上鏈很麻煩(就算在測試網上也是,因為測試網的水龍頭要你跳過一堆關卡)。
  • 你沒辦法像在 web2 那樣隨意修改應用程式。
  • 你沒辦法像在 web2 那樣簡單地儲存資料。
  • 要做最基本的開發,似乎就得跟一堆分散、各自為政的角色打交道(OnChainKit、Hardhat、Coinbase、Solidity)。
    • 這或許不是事實,但這是我到目前為止隨意探索後的感受。

擺脫對 Coinbase 的依賴

我相信一定有很好的理由非得用 Coinbase 不可,但如果讀者得去創建一個 Coinbase 錢包,真的會大大拖累整個教學體驗。

其實我一度很抗拒去嘗試這個教學,因為我以為需要做完整的 Coinbase 驗證(Coinbase 好幾年前就因為奇怪的原因把我的帳號鎖住了)。

後來發現只要用 passkey 就能創建錢包,讓我鬆了一口氣,但或許可以把這點說得更清楚一點,才不會讓讀者以為得走完整個帳號設定流程。

但我更希望這種阻礙能完全消失。比起為了把一個「hello world」智慧合約發布到 Base 測試網而得跳過一堆關卡,我寧願要一個無摩擦、甚至是虛擬的教學(也就是實際上不會真的發布到區塊鏈上)。

mess with dns by Julia Evans 就是一個很好的例子,這個教學需要複雜的基礎設施(DNS 伺服器),但作者把複雜的部分都抽象化掉,讓讀者可以在單一網頁應用程式內完成所有操作。

在 Firefox 上測試一下

我跟著教學做到「Read Contract」之前都還順利,然後就在「Read Contract」那一步卡住不動了。我用的是 Win10 上的 Firefox:

本文章由 muse-spark-1.2-contributor 進行翻譯

留言