MySQL 也要刪“blacklist”,萬萬沒想到技術術語能有淪爲技術債的一天

雲棲號資訊:【點擊查看更多行業資訊
在這裏您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

7 月 1 日,MySQL 官方博客發文稱,計劃在數據庫源代碼和文檔中停止使用 master、 slave、 blacklist(黑名單) 和 whitelist(白名單) 等術語,並使用 source、replica、blocklist 和 allowlist 等新術語替換現有術語。

MySQL 是廣受歡迎的開源數據庫,在 DB-Engine 數據庫排行榜中一直穩居第二。2000 年,MySQL 3.23.15 正式引入了 MySQL 副本功能,隨後,副本功能得到了廣泛應用,幾乎所有的 MySQL 數據庫都在使用副本功能來實現高可用性、災難恢復、讀取擴展等等。
而在副本功能包含有這樣一些名詞,“主(master)”、“從(slave)”等等,MySQL 團隊表示將調整這些術語表達:

c8ff1873eb2a0c4b8561cdfb4ae02df4

據瞭解,MySQL 最新版本已經使用 Primary/Secondary 定義服務器在數據庫架構中扮演的不同角色:
MySQL Group Replication
MySQL InnoDB Cluster
MySQL InnoDB ReplicaSet

爲什麼要改爲“source”呢?MySQL 解釋稱:“MySQL 異步副本代表一條變更流,其中每一項副本配置都對應一個來源,且並不表示服務器在整體數據庫架構中應扮演哪種角色。這樣,之前的主從關係並不能適用,尤其是利用副本構建數據庫架構拓撲中的雙向副本、多層副本甚至是循環副本時,其角色定義更不應如此簡單粗暴。”

目前,MySQL 8.0 說明文檔中已經發布了術語變更的第一階段內容,培訓與認證以及後續即將推出的 MySQL 產品版本,也會逐步對相關術語做出修改。

多家公司和開源項目都在修改技術名詞

雖然 MySQL 團隊在博客中沒有表明修改術語的原因,但是此前已經有多家公司和開源項目也從代碼庫和文檔中刪除了相似的術語,理由是這些術語可能會導致種族偏見。

弗洛伊德事件發生之後,消除種族偏見的呼聲迎來新高,並蔓延到了軟件領域,微軟程序員兼教育家 Scott Hanselman 發文呼籲消除編程中常見的“主 - 從(master-slave)”表述:“互聯網工程任務組(IEFT)認爲主 - 從(master-slave)是一種壓迫性的比喻,這種表述背後是深刻的歷史烙印。因此無論是從技術層面還是立足歷史角度,都不應該使用這樣一種冒犯性的比喻。”

因此,我們看到不僅是 MySQL,多家公司和開源項目都在刪除相似的術語:
谷歌從最終用戶可見的所有位置刪除了“blacklist”和“whitelist”, 分別用“blocklist”和“allowlist”代替,Chromium 將 components/blacklist 目錄中的類名稱重命名爲 components/blocklist;
Pivotal 的 LicenseFinder 將“whitelist(白名單)”替換爲“permitted licenses(授權許可)”;
GitHub Desktop 軟件在 2019 年就完成了相似術語的替換,GitHub CLI 也在不久前將“master(主)”替換爲“trunk(主幹)”;
Twitter 也表示將替換刪除 9 個術語,其中包括 whitelist、blacklist、 master/slave。

除此之外,還有一些公司和開源項目是公開表示有調整技術術語的計劃,例如 Microsoft、LinkedIn、Ansible、Splunk、Android、Go、PHPUnit、Curl、OpenZFS、OpenSSL、JP Morgan 等。

技術術語變技術債?
修改技術術語,說起來簡單做起來難,相信很多人都沒有想到,有一天技術術語也會淪爲技術債:一是需要替換的技術術語的數量可能會非常多;二是想要完全把代碼中的術語都替換掉,過程可能非常複雜,尤其是當某些項目發展很多年,代碼積累很多的時候;三是某些術語在替換之後可能會導致系統奔潰。

根據相關報道,Google 有超過 2000 個與“blacklist”相關的術語將被替換掉。雖然替換“blacklist”這個單詞的過程不會很複雜,把“blacklist”中的第三個字母“a”替換成“Blocklist 的“o”即可,但是如果數量很多的話,也會成爲一個問題。

CE01FD8A_4CE6_4932_A960_83EC4B27D771

另外,技術術語的替換也是需要一定的時間。以 MySQL 團隊的實踐爲例,雖然 MySQL 部分語法的調整可以通過爲現有命令添加別名的方式實現,例如將 SHOW SLAVE STATUS 變更爲 SHOW REPLICA STATUS。但這還遠遠不夠,仍有很多命令會在返回的結果列名稱中包含文本“主”與“從”表達。

要完全消除這些技術術語,是一項非常艱鉅的工作。爲了保持向下兼容,MySQL 團隊需要首先棄用其中某些術語,而後再行刪除。相較於單純“替換”原有語法,最重要的無疑是儘快開發出新的推薦語法,例如 SHOW REPLICA STATUS 。

而且,MySQL 無法單靠一個發行版就刪除所有引用。爲了繼續支持數百萬套 MySQL 部署方案,需要通過多次迭代逐步從語法、協議、錯誤消息以及源代碼中棄用及 / 或刪除這些術語表達。

GitHub 開發人員 Brian Golson 也表示:“修改技術術語這項工作強度非常大,不可能憑一己之力完成。”同時他還指出了修改術語可能導致系統奔潰:“如果我們對 buildin/init-db.c 直接進行逐行修改,那麼大概會引發 304 項測試失敗,約佔總體測試失敗數量的三分之一。”
對於 MySQL 及其它項目修改“blacklist”等技術術語,你們是怎麼看的呢?歡迎在評論裏留言哦!

【雲棲號在線課堂】每天都有產品技術專家分享!
課程地址:https://yqh.aliyun.com/zhibo

立即加入社羣,與專家面對面,及時瞭解課程最新動態!
【雲棲號在線課堂 社羣】https://c.tb.cn/F3.Z8gvnK

原文發佈時間:2020-07-08
本文作者:田曉旭;核子可樂
本文來自:“InfoQ”,瞭解相關信息可以關注“InfoQ

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