今天 Hacker News 上面很紅的一篇是有人發現 eBay 會用 websocket 來掃使用者的 local port:https://nullsweep.com/why-is-this-website-port-scanning-me/
然後就有人發了另一篇測試 websocket 掃本地連接埠的技術探討和抱怨 Web{*} 這些垃圾,像是 WebVR/WebGL/WebAudio/WebBluetooth/WebUSB 這些東東: https://medium.com/@bjt2n3904/in-protest-of-the-web-bulldozer-e0fce4567d26
第二篇的意見我是蠻支持的,我之前就有抱怨過。
有幾個常見支持 Web* 垃圾的論點是:
一、如果不把這些東西標準化,會變成各家廠商自己使用互不相容的標準,降低網頁技術的可攜性。降低可攜性之後就會產生以前 IE 壟斷時代的各種問題,像是開發者要多做很多工,因此放棄支援比較少人使用的瀏覽器之類的。
不過這裡更深層的問題應該是什麼東西要納入 W3C 的標準,直覺的想法應該是要平衡開發者的需求和使用者的福祉,開發者通常希望網頁技術越多功能越好,這樣他們就可以作出更多功能的網頁應用程式來吸引使用者;使用者則通常是弱勢的一方,對 Web 不一定有什麼願景,只是等開發者作出東西來給他們用,喜歡就用不喜歡就不用,但這種狀況到後來通常會變成使用者不得不用(例如因為網頁版「功能完整」切換到網頁版而停用原生桌面應用程式),所以其實還是蠻單方控制的生態系。
然後 W3C 和 Mozilla 這類理論上應該要平衡雙方、多幫使用者謀求福祉的組織,似乎也只是很簡單地覺得 Web 功能越多對使用者越好,這想法嚴格來說也沒有錯,大概就是和我對於「使用者福祉」的想法不太一樣。
粗略而言,我覺得使用者應該要更主動出力去型塑他們理想的 Web ,跟民主政治很類似,而這需要一個願景作為出發點,但當然大多數使用者是不會有什麼願景的。所以在協助使用者辨明願景這方面 Mozilla 倒是做了很多功夫。
二、Web 應該儘可能實作並且預設啟用更多功能,這樣可以持續強化 Web 作為應用程式和內容的發佈管道的通用和無所不在的特性(我想說的是 “universal"),相對於封閉和不跨平臺的應用程式和內容發佈管道,例如 Play Store 和 iTunes Store。
這和我的願景就不太一樣,我覺得應該是要設法教育使用者讓他們有能力自己去決定要啟用哪一些功能(同時間接表態「我想要透過 Web 使用哪一些應用程式」、「哪些應用程式我不想看到」,這也是對 Web 的願景了),所以大部分的功能(WebGL 之類的)應該是要預設關閉,然後在充分告知的情況下由使用者自己啟用。
但這樣的話對於開發者來說 Web 作為一個發佈管道的吸引力就降低很多,因為他們想要塞給使用者的功能(和夾帶的賺錢機會)使用者不一定買單。
總之
Web{*} 這些標準在瀏覽器裡面預設啟用,我覺得並沒有充分考量使用者的福祉。有能力的使用者是可以用我前一篇講到的方式停用一些功能,但這並沒有解決大環境下使用者福祉被忽略的問題。