開源理想主義與計算機哲學

前言/碎碎念

從以前我非常樂意與他人分享博客,到現在談起這個話題變成了我的一種負擔,也算是過了幾年時間。當然我周圍的同學都是這一圈人,這個話題有時候很難避免,我現在也盡可能不把這些話題作爲壓力而是一些茶餘飯後的自嘲了。不玩謎語,主要原因歸根結底還是我自己的更新頻率太低,以至於一年都寫不了兩篇文章,反觀我同學慢則兩三個個月一篇,快則一個月好幾篇,我曾以爲這個能夠展示我自己的私人平臺,不要説分享知識了,連個人代表性都難以維持了,儘管我每一次都想下決心從今後開始多寫一些,但每一次都和我人生中所下的大部分決心一樣不告而終。那天在酒吧裏只有我喝著啤酒,聊到這個話題的時候一個核心内容就是——文章的内容應該寫什麽。最一開始我們這圈人肯定是把博客作爲技術博客來用的,後來我肯定是跳出這個範圍了,我的一個學習認真的同學把博客當作學習的課程筆記總結來用,因此他的更新頻率也很高,另一個同學内容相對更雜一些,但每篇文章基本也都很認真地記錄著和自己興趣相關的内容,比如技術和攝影。但我的問題是,我上大學之後不怎麽自己研究技術了,很單純地因爲沒有精力,所以我沒有拿得出手的技術内容可以寫了,就算偶爾突然有了靈感,如果文章不及時寫完的話,到了第二天馬上就會失去靈感和興致,不想繼續寫下去然後一直存在草稿裏。關於内容這方面的話..你問我平時學校裏學的?很遺憾我並不覺得那些東西我學的很透徹或者很感興趣,所以完全不想拿出來講。再有的話就是… 接觸Linux還有開源軟件之類的痛苦經歷?至於這方面,我不認爲那些在StackOverflow或者Linux問答社區裏痛苦尋找解決方案的經歷是值得分享的技術,“學會Linux”本質上是適應一種對計算機的使用習慣而不是真的精通了某種什麽技術,呃,如果你研究的夠深拿這句話當我沒説。雖説長時間下來對各種技術社區的接觸與自己的親身體驗并沒能讓我真的學到什麽有用的技術,但是確實爲我寫這篇文章提供了一些靈感。

啊,雖説標題裏提到了“政治”一詞,不過這裏的政治指的不是狹義上的國家或社會政治,要理解的話或許可以説是類似於像是4 Types of Developer那種四格象限圖Meme一樣的東西?因爲我想寫的其實也不過是一些關於現代技術討論的一些各種雜七雜八的話題,但因爲被討論的很多所以甚至具有了一定的類政治屬性——以及這些概念許多時候都和人們實際的生活哲學相關,另外唯一能將這些不太相關的話題穿起來最大的綫索,恐怕也只有它們的時代性了。嘛,後面多少或許也會寫到一些像是意大利人與意大利菜一樣偏執的東西,總之這篇文章我想應該不是客觀的。畢竟我寫這個就是爲了表達一些我自己對技術哲學/立場的看法,以及這些與開發者到用戶再到流行文化之間的關係。順帶一提,這次我爲了避免之前説的“到了第二天就失去靈感”的問題,我這次挑的這個話題應該是可以斷斷續續反復編輯續寫的,甚至我可能沒寫完就先發出來一部分,還有就是,我這次挑的幾首大橋トリオ的歌都很好聼,將這些美好的音樂分享出去也是我寫文章的動力之一。

Linux · 開源理想主義 · 計算機哲學

我最一開始接觸Linux也是在高中的時候,和大部分人一樣,接觸到的第一個發行版是Ubuntu沒錯,那時候大概是16.04版本?到現在都令我覺得聽起來無比熟悉的一個版本號。最一開始接觸到時的各種摸爬滾打我也不太想的起來了,但總之我接觸到它的第一刻起我就沒打算將這個系統作爲日常使用,儘管這個想法在這幾年閒波動過幾次,但就結論來看,那是我想的沒錯。

有關於Linux的技術細節和我個人的使用經歷我認爲無需過多的筆墨來描述,這裏我主要想講一些我對GNU/Linux及背後的開源軟件哲學的看法。先説結論,從實用角度來講,我不推薦絕大多數有或沒有技術背景的人將任何Linux發行版作爲個人電腦的唯一操作系統使用。

自以前開始就沒少見到一種説法,開源精神是在軟件領域能夠成功實踐的共產主義,因爲代碼可以被免費的無限複製而不需要成本。我曾經還是比較認同這句話的,但這個説法只要稍加討論其中的漏洞就很明顯——代碼是可以被免費複製的,但維護和開發不是。我在許多次與某位將Arch Linux作爲日常使用的操作系統的友人討論爲什麽Linux的軟件幾乎沒有UX(User Experience)且bug成堆的問題后,我們得出的結論總是差不太多,因爲”你又沒給他交錢“,因此開發者也沒有義務做好他的開源軟件,自然也就沒有義務來照顧你的使用體驗或者感受,最多只管”能用“——這也是Linux用戶很喜歡用的一個詞,因爲在開源軟件中許多時候你只能把標準降低到”能用“。另一個我們觀點上的衝突就是,開發者與用戶的界限。我一直堅持認爲,即使我是個人的獨立開源開發者,我也要做到用戶不需要來理解我的底層技術邏輯或者需要自己查文檔寫配置文件就能自由地使用我的軟件。而那位友人與許多Linux開發者認爲,用戶有義務對自己使用的軟件有基礎的技術上的瞭解,甚至於應該有能力理解和編輯源代碼然後自己定制化編譯,而開發者沒有義務爲了用戶的便捷做額外的爲了用戶體驗而設計的開發工作。儘管這條綫現在是模糊的,也有很多商業化或新的開源軟件已經開始照顧用戶體驗,許多軟件在出問題之前你也可以忽略他的技術細節開箱即用,但毫無疑問,我不認爲原教旨的開源精神真的能被大部分人接受,即使是有充足技術背景的用戶。

因此,聽起來理想的開源精神背後,也包括了對用戶的要求以及退讓,這一點上倒是確實和某些共產主義社會的實踐上有相似之處:大食堂是免費供應的,但你無法選擇吃什麽,你也不能因爲難吃或是量太少抱怨。當然開源也自有其好的地方,那些其實比我說的現實問題中產生的缺點更加耳熟能詳,比如任何人都可以為開源軟件做出貢獻,有技術背景的用戶可以自己修復bug然後提交PR來造福後人,有想法的開發者可以爲自己喜歡的軟件提供新的feature等等。但這些都是基於一些美好而又嚴格的假設之上的:絕大多數用戶都有足夠的技術能力和耐心,以及一顆無私奉獻的心。

上述的假設ideal assumption自然是在現實中難以存在的,尤其是對於用戶而言,於是矛盾的地方就出現了,Linux作爲一個操作系統理論上,或者至少被許多用戶稱贊是”更穩定,更便利的開發環境“,那麽這時候我們就算丟掉其他所有的日常需求,只注重與開發,我們仍會遇到各種由於軟件上的bug或是設計上的缺陷等等遇到各種問題,可這些問題又被認爲是一個開源社區合理存在的一部分,因爲”用戶自己有義務去解決(或至少精確地向開發者提出)這些問題“,但事實上又沒有開發者真的有義務去修復你的問題,這些都是voluntarily的,因爲大家都是沒有從中獲利的。所以到這裏熟悉Linux的人都會有同樣的體驗:自己花費在解決系統或軟件本身帶來的問題的時間比實際使用它們作爲生產力工具的時間更長,那麽費了半天勁去使用它還有意義嗎?

不過不得不承認,開源在如今這個環境下,在一些特定的領域有所成就,甚至誕生出了許多人現在無比依賴,不可代替的軟件,比如VS Code, Blender, 還有代表著反審查的一系列像是V2Ray這樣先進的翻墻技術(雖説VS Code本質上是微軟主導開發的開源作品)。并且,開源社區確實符合一部分人對軟件開發環境的理想主義,因此它到現在被很大一部分人所熟知。你可以説開源是一個已經非常功名顯赫的概念,甚至可以説它在許多方面上是成功的,連大公司都會或多或少像這個潮流屈服。但開源社區的問題在這幾年閒也是難以被掩蓋的,不僅僅是在GNU/Linux等一系列編譯型的原教旨開源軟件上;前端開源社區——恐怕是每天在GitHub上更新最爲活躍的一個板塊了,也面臨著同樣的問題,被大量人討論卻得不出理想的結論:開發者沒有義務做好他的代碼因爲他沒有從中獲利,一切都是他自願貢獻開源的,但是如果開發者的代碼的問題有意或無意損害了很大一群人,那他有義務爲此負責嗎?其實沒有,因爲選擇信任并使用一個代碼庫也代表了你自願承擔這個風險,那我們是否要更仔細地三思能否信任開源社區呢?這些問題以前其實被討論地不多——直到有一位被忽視的重要的前端基礎庫開發者房子被燒了在生活窘迫之時故意破壞了他自己的代碼庫,他的做法可氣但也可憐,畢竟,虛擬的代碼理想主義在他最需要幫助的時候并沒有為他的生活帶來任何幫助,儘管他默默無聞地為那個社區付出了許多年。

不過所謂開源也只是衆多計算機哲學中的比較有名的一類,也只是一方面,我認爲開源的本質代表著反對行爲被暗藏的閉源軟件,通過編譯安裝確保自己的軟件代碼絕對可信,以及前面提及的,開源也是一種對開發者與用戶的關係與義務的新的定義,還有像是類似於貢獻精神等等方方面面。不過計算機哲學并不是像真正的哲學體系一樣有一套很完備的理論,這裏的Philosophy更多地其實是一種對技術和計算機使用習慣的idea和thinking,而且通常涉及到許多不同的方面,許多時候這些思想可能也不是互相衝突的,而是互相組合存在的,也是有不同程度存在的,就像是搞電腦的人總是或多或少會接觸開源社區的,一般人也不會去反對它。不過儘管如此,在這些方面想法有著激烈碰撞的人并不佔少數,鄙視鏈,爭論和像立場一樣的東西自然也就會存在,就算我寫這些現象,也不代表我理解許多人在這個方面的看法和選擇,正因我也是有著自己立場與態度的一員。但本質上,這些想法,或者說philosophy,是因人的環境與需求所異,而對人機關係的理解有所不同,或者説理解計算機對自己的意義上有相當大的差別。一部分人在這方面有著近乎偏執的强烈意向,而也正是因爲他們仔細思考過這些問題,比如許多特定Linux發行版的用戶,或是一些對網絡隱私有特殊需求的群體。而另一部分人儘管工作上和電腦打交道很長時間但從未有過認真的對計算機意義的反思,時常也沒有專業的計算機知識學習或培訓,但他們自己會形成一直自然的意識并且深信自己的經驗,這種天然形成的意識有時候在專業人士看來也是荒謬的,一個典例就是電腦店老闆經常會相信不更新系統才是更好的。

第一次讓我對這種”對計算機本身的哲學態度“切身感受到衝擊的是我的畢設指導教授。有一次和他開會時,我看他似乎在他的主力機上用類似於Fedora的Linux發行版,以他的形象來説我來説毫不意外,但當我有些俏皮地問他你這是什麽發行版的時候,他似乎想要故意給我傳達一種他的想法:”I don’t know!”,我知道他當然不可能不知道自己在用什麽,我便追問下去,於是他也告訴我說:我不關心我在用什麽發行版,什麽系統,”It’s just a computer, I only care if it works”(原話大概是這樣,可能不準確),這也勾起了我的好奇心,我便問他,這算是你的計算機哲學嗎?雖然他沒給我明確的回答,但我覺得是,因爲他説就像你去坐火車,你會關心火車具體是什麽型號嗎?我只關心他能不能帶我到我要去的地方,那麽計算機也是一樣的。説實話,這位教授一開始給我的感覺,就是那種唯一熱衷的事就是在自己的辦公室裏認真工作的又帶有一點偏執的朋克老教授,不過他當年大概算是那種,英國第一批接觸計算機的年輕人,七八十年代玩著打孔帶,輪胎一樣大的Hard Disk還有磁帶,Floppy Disk一路玩過來的(我上大學后感覺最值得的一瞬間就是教授給我摸到那些設備時),在這幾十年技術的變遷中,他也將那個年代的一些計算機的使用習慣,以及對人與機器的這種看法,帶到了現在。我想只有這種思想上的代溝,不會讓我覺得腐朽過時,而是覺得雖然不一樣但是太酷了。

另外有許多類的對計算機或者説人機關係的哲學態度,在現代也存在著各種形態。從喜歡使用的操作系統來分類就是一個很普遍的方式,除了前面提到的Linux用戶,Mac/OSX用戶很顯然地更加習慣與一個封閉,但絕對安全,穩定的環境,不可否認,OSX的大部分設計是優雅的,以及與Linux完全相反——它無處不考慮著用戶體驗的設計以及避免用戶接觸到軟件底層技術,但相對的,它也是尤爲封閉的,甚至可以説是壟斷的,這種模式對與能夠完全沉浸於蘋果生態的用戶來説很友好,一切都是開箱即用,大部分情況下對於習慣的人來説也被設計的很好用。而Windows用戶… 這很難被分類,因爲選擇Windows對大部分人來説不是你真的選擇了它,而是因爲它是默認選項,或者説的偏激一點,它是僅存的選項。

但是我覺得比起操作系統,機器對人的意義的有何不同,取決於更多的方面,比如你的隱私意識,技術背景,對於定制化環境的需求,對於穩定與擴展性之前的利弊權衡,這不僅決定了你對OS的選擇,在OS之後,你作爲用戶選擇了使用哪些軟件作爲日常使用,爲了哪些需求又可以放棄什麽,這些選擇有時候可以非常極端,比如有些用戶會爲了極緻的隱私放棄許多可用性和便利性,習慣使用Tor瀏覽器和複雜的代理技術,用繁重的加密系統和權限機制保護自己的文件;有些偏執的老程序員也會堅持認爲VIM是他用的最順手的開發環境,即使這意味這他需要自己維護大量的配置文件來配置開發環境;完全對隱私毫無意識,技術不專業卻又嫺熟的電腦城老闆之間,也會發展出一套他們自己的慣用環境,不明所以,亂七八糟還帶點玄學。但這就是因環境與需求的不同,使人對於計算機的概念所產生的巨大的鴻溝。

No Comments

Add your comment

Translate/繁简转换