谷歌也怕了,“blacklist”等表述逐漸從各大公司的源代碼中消失!

“Blacklist-whitelist”和“Master-slave”等詞彙將逐漸從源代碼中消失。

美國、歐洲“Black Lives Matter”運動愈演愈烈。本週消息,谷歌決定放棄Chrome瀏覽器中“blacklist(黑名單)“、“whitelist(白名單)”的用法,後續使用“blocklist”和“allowlist”來替代它們。

這些國家的開發者都在努力擺脫“負面”代碼術語,希望“讓這個世界變得更友好”。“Master-slave(主-從)”與“Blacklist-whitelist(黑白名單)”等表述將從源代碼中逐漸消失。

從源代碼中消除負面術語

在過去的幾周裏,因爲弗洛伊德事件的發生,以美國爲主的部分國家在舉行抗議活動以支持“ Black Lives Matter”運動。軟件領域的活躍分子們也希望藉此機會行動起來,表達自己消除種族壓迫的決心與意志。

本週一,來自微軟公司的程序員兼教育家Scott Hanselman發表了一篇博文,呼籲人們消除Git版本控制軟件所創建代碼庫中常見的“主(master)”分支表述,藉此表達軟件行業對奴役關係的抗議。

他寫道,“互聯網工程任務組(IEFT)認爲:主-從(master-slave)是一種壓迫性的比喻,這種表述背後是深刻的歷史烙印。因此無論是從技術層面還是立足歷史角度,都不應該使用這樣一種冒犯性的比喻。”

“結合上下文,我們還有很多更準確的表述可以選擇。改變表述不會造成任何實際成本,甚至還能讓更多新人加入進來,感受技術行業的平等態度。”

這項提議最初出現在2018年的IETF草案當中,要求開源軟件更改“Master-slave”和“Blacklist-whitelist”兩項表述。同一年Redis(當然也包括Rails)與Python開發團隊開始着手清除“主-從(master-slave)”表述。

迫於形勢,Google也對此表示了很大程度上的支持。據報道,谷歌在2018年就開始刻意避免使用“黑名單”這個單詞,只不過Chrome瀏覽器的後端源碼中還存在“blacklist”這個單詞。

在週一的時候,Chromium的代碼有了最新的提交,components/blacklist目錄中的類名稱已經重命名爲components/blocklist。從最終用戶可見的所有位置刪除了“blacklist”和“whitelist”, 分別用“blocklist”和“allowlist”代替。這次更改包含了所有類/方法/成員/變量重命名。

據瞭解,Chrome源碼中有大概有2000處涉及到了“blacklist”,這種更改不是簡單的“查找-替換”,改變源碼還需要測試是否會產生bug。這需要谷歌程序員們付出相當多的勞動,還不確定什麼時候能徹底完成。

不止谷歌一家作出了改變

谷歌當然不是唯一一家主動處理歧視性表述問題的企業。

今年1月,Pivotal的LicenseFinder開始將“whitelist(白名單)”轉換爲“permitted licenses(授權許可)”。

Box公司目前正討論全面使用“allowlist(允許名單)”與“denylist(拒絕名單)”的表述。

Elixir已經在約一週之前清除了這部分表述。

OpenShift在四天前合併了一條pull請求,用於更新全部相關表述。

Yelp在約兩週前修改了密鑰掃描代碼,osquery項目的用語變更工作也在進行當中。

開源Git項目的貢獻者社區也在兩個月之前通過郵件列表對“master”表述展開了討論,也有人提議在Git源代碼中更換掉這一術語。但提案遭到抵制,理由之一是這會帶來巨大的工作量。

迴應關於措辭修改的帖子時,GitHub開發人員Brian Golson(同時也是Git代碼庫的貢獻者)對修改意見表示支持。他願意負責審查用語變更可能對Git源代碼產生的影響,但同時強調這項工作強度很大,他不可能憑一己之力完成。

他表示,“看起來,如果我們對buildin/init-db.c直接進行逐行修改,那麼大概會引發304項測試失敗,約佔總體測試失敗數量的三分之一。”

在GitHub方面,GitHub CLI兩週前已經用“trunk(主幹)”代替“master(主)”表述,而GitHub Desktop軟件早在2019年就完成了相關替換。

雖然人們普遍表示支持,但也有批評者指出,Git對“master”的理解更多源自讀音理解、而非含義理解(設備網絡中的主-從描述並不存在任何奴役色彩)。另外,“master”具有非常豐富的內涵,在特定領域的專業知識中完全可以作爲中立性字眼自由使用。

除了種族表述之外,谷歌的包容性編碼指南還高度關注性別表述,強調應儘量避免使用與性別相關的區別性表達。例如,指南建議開發人員避免使用有性別傾向的“他(he)”作爲代詞;但在“he”代表氦氣、希伯來語中的ISO 639-1語言代碼或者西班牙語動詞“Haber”的第一人稱形式時則沒有問題。

Hanselman坦言,單純變更表述並不能改變歷史、也無法減少人們心中的種族主義觀念。他在推特上指出,“我們做的一切,只是想讓這個世界變得更友好。”

Python和Redis也曾攤上事兒

其實,早在2018年的時候,互聯網工程任務組(IEFT)就提出草案,要求更改“Master-slave”和“Blacklist-whitelist”兩項表述。編程語言Python和開源Redis數據庫在同一年紛紛做出了響應,逐步從說明文檔及API中剔除關於“主”、“從”表述的技術術語。

在Python方面,由於來自社區的投訴意見(具體細節並未公開),項目管理團隊決定在2018年9月開始全面替換“主”與“從”兩項術語。同時,負責GitHub平臺CPython代碼庫監督工作的管理員也鎖定了pull請求,旨在清除相關表述並刪除部分註釋。

Python核心開發者Victor Stinner曾在之前的評論中指出,不少人都在反對這種存在明顯從屬關係的表述,因此最好能把“主”與“從”用語從廣泛使用的編程語言中剝離出去。

與此同時,開源內存內數據庫Redis也遇到了類似的“主-從(master-slave)”難題。2018年,Redis締造者Salvatore Sanfilippo發表了一篇博文,其中提到他因Redis 5.0 RC5沒有清除“主”、“從”表述而遭到開發者批評的問題。在此之前,與此相關的爭議就一直存在。

Sanfilippo表示,他壓根不打算替換Redis中的措辭,但卻因此被批評人士們稱爲“法西斯主義者”。由於他的家人曾在第二次世界大戰期間受到意大利法西斯分子的迫害,扣這頂帽子顯然是想故意激怒他。

他寫道,“最重要的問題是,每個術語在原則上都有令人反感的一面。但表達是多元的,我不希望禁止使用某些存在爭議的單詞,這些字眼隨着時間的流逝已經變得越來越中性了。”他也反對開發者們一窩蜂式的批評,並強調“在這樣混亂的環境下,根本不可能進行任何有意義的討論。”

但在之後實際交流與Twitter調查中,他發現共有6242名關注者參與了他發佈的調查推文,其中有53%建議使用較爲溫和的表述來替代“主”與“從”。多數人已經站出來說話,他認爲反對之聲已經不能忽視。

在此後的一篇GitHub帖子中,他解釋稱,自己打算採取行動以防止他個人的觀點影響到其他人使用Redis的意願。

之後不到一週,他又發表一條推文,稱刪除Redis說明文檔內“主-從”表述的工作基本完成,目前只剩下一部分API中難以清除的單詞。

Drupal及Django等其他開源社區也掀起了類似的運動。2017年,Kubernetes項目確認將全面調整語言表達。而在開源Helm項目中,管理團隊承認“主(master)”本身就帶有一定的冒犯性。因此,“主圖表(master chart)”現已更名爲“傘圖表(umbrella chart)”。

大家怎麼看?

對於更改“blacklist”這樣的事件,中國程序員紛紛表示不能理解:

“以後前端開發都不能用black/white代替顏色了,得用#000和#fff。”
“開源軟件將blacklist改爲blocklist,那麼對應的red-black tree該怎麼表達合適呢?”
“blacklist終究是要表達禁止的意思,不夠尊重人權,應該改成yamadeList。”
“等等,“ Black Lives Matter”裏面的black是不是也該換成別的?”

另外,“master-slave” 的中文翻譯,一開始便避免了英文的奴隸一詞,而巧妙地改成了主從複製。從這個角度看,其實國內對於 slave 一詞的負面詞性也是做了一些處理和規避的。

但是僅僅因爲一個詞性的問題,就大費周章去做一些牽一髮而動全身的修改是否有必要?目前來看需要更加仔細斟酌,如果因爲部分批評者的言論就去修改細節乃至源碼,是否會影響到更多未發聲的實際使用人羣?

對於這些更改,你們是怎麼看的呢?歡迎在評論裏留言哦!

參考鏈接:

https://www.theregister.com/2020/06/08/developers_renew_push_to_get/

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