Kalan's Blog

Kalan 頭像照片,在淡水拍攝,淺藍背景

四零二曜日電子報上線啦!訂閱訂起來

本部落主要是關於前端、軟體開發以及我在日本的生活,也會寫一些對時事的觀察和雜感
本部落格支援 RSS feed(全文章內容),可點擊下方 RSS 連結或透過第三方服務設定。若技術文章裡有程式碼語法等特殊樣式,仍建議至原網站瀏覽以獲得最佳體驗。

目前主題 亮色

我會把一些不成文的筆記或是最近的生活雜感放在短筆記,如果有興趣的話可以來看看唷!

科技始終來自於人性(Svelte Society: Frequently Asked Questions 筆記)

我在研究新的函式庫時,同時也會研究這個人(當然不是全部,不然一個 npm install 大概就要花一輩子去看了)。因為技術的創造者是人、函式庫的創造者是人、框架的創造者是人,大家都是有血有肉、有感情的人。

技術始終是用來服務人類的,所以理解作者背後的動機甚至是故事,對於了解框架本身也有幫助。

這位 Svelte 作者 Rich Harris,原本是 rollup 的作者,還有之前一個比較沒有名氣 Ractive.js,都是由他撰寫的。從他的 Repo 可以發現,他是一位很喜歡從頭自幹的人,在 New York Times 工作,擔任 Graphic Editor,本業是一位記者,後來自學程式來做一些資料視覺互動,最後造出了 rollup 跟 svelte。

這是 Rich Harris 在 Svelte Society 中回答的一些問題,非常建議大家聽聽看,這裡做一些筆記,不過筆記的東西可能跟大家想看的不太一樣。

The best way to learn a technology is just go ahead and build stuff with it and then as you get stuck, figure out how to ask good questions

學習一個新技術最好的方式就是用它做點事情,然後當你卡住時,想辦法弄清他或是問問題。

官網上的範例其實蠻好理解的,而且旁邊就是 REPL,可以自己動手做做看。

I don't use component library for the same reason that I don't buy pasta sauce in jars I like making thing from scratch.

這個回答是來自於「你都用哪個 component libary?」

人家是自幹王,當然是從頭開始寫一個,而且還用很幽默的比喻:「我不用元件庫,原因跟我不買現成的 Pasta Sauce 一樣,我喜歡從頭開始做一件事」。從這裡大概也不難理解,svelte 的原始碼當中的手寫 parser 是從哪裡來了,如果比較一下早期的 commit,可以說沒有什麼太大的變動。

Router: This makes people really unhappy which I understand. If I walk into the farm and see there's 19 different kinds of shampoo I'm very unhappy. I want 2 kinds of it. Cheap and good. Ideally I want them to be the same kind.

因為 svelte 並沒有一個官方的 router(像 react 有 react-router、vue 有 vue-router),而 Rich Harris 的回答是:因為 router 有時候會有不同場景,而且每個人都有不同意見。

其實現在有很多基於 svelte 的 router 實作,作者對此表達:「我知道人們會覺得不太舒服。如果有 19 種不同種類的洗髮精我也會不太舒服,我只想要有兩種,便宜的跟好的。最理想的是一種 XD」。

TypeScript support

其實現在 svelte 對於 typescript 的支援還不算太好,不過正在進行中。

I'm just bad at delegating and letting other people take ownership of projects like Sapper.

因為作者不太會將工作委託給其他人,所以 Sapper 的發展其實有點緩慢,而作者本人在今年似乎想要從 Open Source 當中離開稍微休息一下。

I started svelte for myself. It's the framework I wanted to exist in the world. I get far more joy from discovering that someone who's new to development has decided to pick up svelte and is building things that they didn't think that would be able to build.

這個回答是來自於提問:「Svelte 的目標是為了減少在科技領域(前端)往往需要學習框架的複雜度還有一堆複雜的概念嗎」

作者有提到,雖然看到 Svelte 被公司採用像 React 跟 Vue 那樣是件很開心的事,不過他更開心的是看到那些初入開發領域,用 Svelte 做出一些以為自己原本無法做出來的東西。

從這裡似乎也不難得知,Svelte 的語法簡潔,盡力在 compile time 幫你做好全部的事,目的就是為了讓你在 runtime 可以隨心所欲地開發。也不用 Virual DOM 來做抽象,盡可能讓所有事情簡單化。

我喜歡這樣的理念,同時也覺得讓更多非專業領域的人一起踏入網頁開發是一件很令人興奮的事,他代表各種不同可能性。

如果害怕這些人進來做得比自己好,搶了自己的飯碗,那也剛好證明平常只是靠資訊不對稱來創造實力落差,而不是來自於平時的累積,也可以警惕本業的工程師們好好學習。

Can I give you money? It's really heart-warming. But it's always a difficult topic. None of us who work on the project do so for any reason other than that we want to. And there's always a fear that getting money involved on open source could have a weird effect on our personal incentive and motivation on working on this project. In a way that you know maybe isn't best for the community. Thank you for offering as money but we don't really have a way to accept it.

這是開源軟體時常遇到的難題,的確談到錢很容易會讓整個方向變調,像是 Svelte 本身也是由很多沒有拿錢的貢獻者們努力完成的。雖然給錢很棒,但目前的方向我們還沒辦法接受這筆錢。

我覺得這個理念很棒,看完後整個變成 Rich Harris 腦粉。

但同時我也想強調並不是開源就理所當然要免費,或是談錢就不算開源。開源也是可以賺錢的,像 Vue 的作者 Even You 就做得很好。而有了資源之後,才有更多人願意貢獻,願意投身創造更好的軟體進而貢獻社會,這是環環相扣的。只是感覺很多人都羞於談錢,或是害怕索取,很多時候是如果你不主動去要,這個世界不會給你。或許在未來會有更多開發者往獨立開發者這個選項前進,蠻期待未來的發展如何。

You presumably spent a considerable amount of time and energy on building svelte because you thought that there must be an alternative to virtual DOM Are there any other things in computer or in society where you think we are trapped in a local maximum for years or decades?

這個問題相當有趣,因為作者是看到 Virtual DOM 想要出來改變什麼所以寫了 Svelte,同時問題也提到它對於其他事情的想法,是不是有某個技術或議題已經達到了某程度的極限?

作者回答像是 HTML 本身原本是設計成顯示文字(hyper text),如果在這個世代要重新設計網頁的話,或許我們會生出完完全全不同的語言或是設計方式。

同時還有提到資本主義、馬克思主義在現代社會也是某種區域極限。

If you get into the habit of thinking in terms of local maximum you start seeing everywhere.

或許也該是時候停下來想想,有哪些東西是到達區域極限,我們可以做得更好的時候了。

上一篇

從無到有寫一個 JSON 解析器(2)

下一篇

成為 Tech Lead 的一些感想

如果覺得這篇文章對你有幫助的話,可以考慮到下面的連結請我喝一杯 ☕️ 可以讓我平凡的一天變得閃閃發光 ✨

Buy me a coffee