繼 GitHub 改掉 "master" 後,開發者也開始反省 "錯誤" 了?!

公衆號關注 “GitHubDaily”

設爲 “星標”,每天帶你逛 GitHub

轉自開源中國

6 月 17 日,最初在 Git 中寫下 “master” 一詞的開發者 Petr Baudis 在社交網站上說,“當我說話時,是給別人聽的,而不是給我自己聽的。” 意指當年不該使用 “master” 這個可能給別人造成傷害的詞語。

Petr Baudis 2005 年參與編寫 Git 時,選擇了 “master”(和 “origin”),他曾多次希望可以改成 “main”(和 “upstream”)。直到現在,才由 GitHub 開始主導替換工作。

這幾天,GitHub 首席技術官 Billy Griffin 也在社交網站上忙着回帖。他的大多數回覆都在表達一個意思:謝謝您的意見,我們非常同意,並且我們已經開始着手將 master 替換成 main

他們發表上述言論的直接原因是,6 月 12 日, 推特用戶 Una Kravets 喊話 GitHub,建議把 Git 中默認分支名字 “master” 改成 “main”。隨後,GitHub CEO 稱讚了這個提議,並在評論區 @Billy Griffin。

緊接着,更多人提出自己的意見,參與討論。Billy Griffin 開始一遍遍迴應:我們在改了、我們在改了…… Petr Baudis 則說要去研究計算機術語 “master/slave” 的歷史。

GitHub 不是第一個在公衆的監督下,換掉 “master” 的主體,也不會是最後一個。美國的反歧視和反暴力執法運動,已經促使許多科技巨頭或知名軟件,調整自己的業務和產品,平息輿論。

IBM、亞馬遜、微軟接連調整面部識別平臺業務,以防加深歧視或遭受指責。GitHub、谷歌、OpenShift,微軟的 PowerShell 腳本語言、P5.js JavaScript 庫等近幾周先後開始更改源碼中,被認爲帶歧視色彩的術語,以免不恰當的詞語造成傷害。

現在,關於是否要更改 “master/slave、blacklist/withelist” 等詞語,可以改成什麼的討論還在繼續,而越來越多的軟件和廠商已經站好隊 —— 決意替換這類詞彙。

多個公司更改代碼中的計算機用語

計算機術語政治正確性其實不是新鮮話題。

2004 年,“master/slave” 曾被全球語言檢測機構評爲年度最不政治正確的十大詞彙之一,時任主席稱這是政治滲透到計算機技術控制中的表現。早在那時,洛杉磯就有一個區域採購部門,以種族歧視爲由,禁購採用該詞彙的軟件。

不過當時計算機軟件和網絡並不像今天這麼普及,因此更改用語的事件比較零散。比如,2008 年,開源軟件 Drupal 在社區發佈消息,高調站隊,將 “master/slave” 重命名爲 “client/server”,並解釋稱,在有更好的替代方案可用時,繼續使用潛在的、冒犯性術語通常是不受歡迎的。

之後一直到 2018 年,IETF 在草案當中,要求開源軟件更改 “master/slave” 和 “blacklist/whitelist” 兩項表述。計算機術語的使用才引起更廣泛關注。

同年,許多開發者呼籲一些開源軟件廠商修改源碼,Redis、谷歌、Python 都曾被要求這樣做。谷歌開始避免再使用 “blacklist” 一詞,Redis 和 Python 開始清除 “master/slave” 表述。

清除這些表述的成本不低。谷歌幾天前確定 Chrome 瀏覽器中不再使用 “blacklist/whitelist” 的說法,後續計劃用用 “blocklist/allowlist” 來替代,但這項工作並不確定什麼時候能完成。

Redis 的作者 Antirez,早在 2018 年就解釋過修改源碼會產生的兼容性問題,例如:

  • 不能再應用現有的 PR

  • 有像 INFO 和 ROLE 這樣的命令 —— 使用包含 slave 術語的協議進行回覆

  • 術語 slave 中的源代碼包含 1500 個事件

  • 擁有私人項目並根據需要進行代碼合併的人會遇到很多問題

尤其是最後一項,GitHub 現在也面臨這個問題。Billy Griffin 在回覆更換用語的建議時說,“我們正在與 Git 的其他利益相關者合作,以達成一致。”GitHub 從更新新存儲庫的默認設置開始,併爲遷移提供更多指導,除了 GitHub Pages 之外,他們正更廣泛地更改新存儲庫的默認分支名稱。

Billy Griffin 還在跟開發者解釋,爲什麼更認可用 “main” 而不是其他詞來代替 “master”。原因包括,前兩個字母相同,容易有肌肉記憶,另外表意也更爲準確。此外,6 月 7 日,Billy Griffin 還曾建議將計算機使用的 “blacklist/whitelist” 更改爲 “allowlist/denylist”。

在 Una Kravets 呼籲 GitHub 換掉 “master” 一詞時,大家就在等待 Linus Torvalds 對這件事作出迴應,解釋爲何這樣寫。事實上,這個詞並不是 Linus 寫進去的,而且從 Linus 2018 年的一些行動中,或許就能看出 Linus 對此類事情的態度。

2018 年 9 月 16 日,Linus 發行了 4.19-rc4 版本的內核,他和其他幾個內核開發人員在內核樹的補丁程序上簽字,合併了新的行爲準則政策。

行爲準則涉及要使用受歡迎、包容的語言。人們對 Linus 的做法和行爲準則本身有很多不滿,有些人認爲採用行爲準則是某些利益獲得羣體,控制軟件項目的一種方式,沒有必要在計算機用語中討論立場是否正確,技術應該是中立的。雖然 Linus 發完公告就退出了開發團隊,很多人也不喜歡新的行爲準則,但這份準則還是留了下來,而 “master” 顯然不屬於準則中說的,是受歡迎的語言。

爲什麼碩士學位 master 不用改?黑色有什麼不對嗎?

反對的聲音一直很多。 

最突出的兩個理由是:計算機源碼中的 “master、blacklist” 等詞語,並不包含歧視情緒;更改的成本不低。

“即使我的想法是博客中表達的那樣(代碼中的 slave 並沒有指代奴隸的意思),但我最終還是決定改變 Redis (中引起爭議的)術語…… 但是我們需要做更多事情。” 這是 Antirez 6 月 13 日在社交平臺上發表的言論,他道出了很多人的心聲。

有開發者會問,如果要改代碼中的詞,那麼英語國家的碩士(master)是不是要換?黑帽子、黑天鵝中的黑字是不是也要換掉?

其實倡議者們想表達的,並不是不能使用 “黑” 這個詞,而是希望不要把 “黑” 作爲 “白” 的對立面,表達 “不好”、“壞”、“需要被限制” 等負面意思。同理,當 “master、slave” 出現在源碼中,並且表達的 “主 - 從” 關係,這會讓一些人聯想到奴隸制。 

Drupal 十多年前重命名 “master/slave” 時,就指出過這一點:如果代碼裏有一句 “here are the steps I had to take to get my slave running”,可以理解成:我執行一些步驟,讓分支運行;也可以理解成讓我的奴隸跑起來。而奴隸制並沒有消失,有些地方有人口販賣交易,很多移民或特殊工種本質上正在被奴役,所以在軟件社區,應該儘可能反對所有形式、語言的壓迫。

針對 “blacklist/whitelist”。黑名單 blacklist:代表該被禁止的、不好的名單。白名單 whitelist:代表可以被允許的,好的名單。更容易給看到代碼的人,造成 “黑 = 不好,白 = 好” 的印象,而且,“black” 也常常和 “slave” 聯繫在一起,提醒人們此前長時間存在的種族不平等。

一直以來,黑人運動中,一個重要的 “任務” 就是告訴所有人:黑色 ≠ 不好、黑人 ≠ 奴隸。上世紀,被譽爲 “黑人民族的桂冠詩人” Langston Hughes 曾用一首詩,來證明這個道理:

我是黑色的

當我照鏡子時,我看到我自己,但我並不感到羞恥

上帝並沒有讓我比其他人更壞

大地是黑色的,各種好東西從大地裏出來

樹木、鮮花、水果、紅薯和玉米,以及一切使人活下去的東西,都是從地下冒出來的 —— 古老的黑土地

煤是黑色的,它可以溫暖你的房子、做飯

夜晚是黑色的,有一個月亮,和一百萬顆星星,非常美麗

睡眠是黑色的,它讓你得到休息,所以你醒來時感覺很好

我是黑色的

今晚我感覺很好

“黑色有什麼不對嗎?”

---

由 GitHubDaily 原班人馬打造的公衆號:GitCube,現已正式上線!
接下來我們將會在該公衆號上,爲大家分享優質的計算機學習資源與開發者工具,堅持每天一篇原創文章的輸出,感興趣的小夥伴可以關注一下哈!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章