當文字編輯器作者拿「污染你的檔案」當笑梗
Notepad++ 作者 Don Ho 在 2023 年初的一則「不同政治立場就在你的程式碼裡加隨機字符」推文,被中文圈視為政治挑釁、被英文圈視為慣例反諷。但無論哪一方,都沒有觸碰到真正的問題核心:文字編輯器作者不應該以「對使用者檔案造成傷害」作為威脅性笑梗。
2023 年 1 月底✓,知名開源文字編輯器 Notepad++ 的作者 Don Ho 在官方 Twitter 帳號上發布了一則推文,宣稱「Notepad++ 啟用了一個新功能:如果你不同意它的政治觀點,Notepad++ 會在你的原始碼裡加入隨機字符」。該推文在中文社群引發大規模反彈,導致 GitHub repo 再次被洗版。Don Ho 隨後在 v8.4.9 release note 中聲明這只是一則玩笑✓。
本報導論述的核心觀點是:這則「玩笑」的真正問題不在於它的政治立場,而在於文字編輯器作者動用其對使用者的技術權力位置作為威脅性笑梗。對於不熟悉軟體開發的讀者來說,這個玩笑可能聽起來無傷大雅;但從技術角度檢視,「在使用者的原始碼或文件中靜默插入字符」實際上是一種後果可以非常嚴重、且難以追溯的攻擊向量。
第一部分事件本身
推文內容與時間
2023 年 1 月 25 日✓,Notepad++ 官方 Twitter 帳號 @Notepad_plus 發布以下推文:
A new feature just enabled in Notepad++:
If you don't agree with its politics views, Notepad++ will add random characters in your source code.
@Notepad_plus, Twitter, 2023-01-25
Notepad++ 啟用了一個新功能:
如果你不同意它的政治觀點,Notepad++ 會在你的原始碼裡加入隨機字符。
- 原始推文(@Notepad_plus, Twitter)
- 備援快照:可至 archive.org 或 archive.today 搜尋對應 URL
作者本人的官方澄清
2023 年 1 月 31 日✓,Don Ho 在 Notepad++ v8.4.9 release note 中親自說明:
"It was a joke I made on twitter. The joke might not be funny, but apparently not everyone is smart enough to realize it's just a joke, and Notepad++ on GitHub has been vadalized again."
"A lot of obtuse people exist nowadays because nothing in the food chain eats them anymore, and they become even developpers… :)"
Notepad++ v8.4.9 release note(原文拼字保留:vadalized、developpers)
「這是我在 Twitter 上開的玩笑。這個玩笑也許不好笑,但顯然不是每個人都聰明到能意識到那只是個玩笑,而 Notepad++ 的 GitHub 又被洗版了。」
「現在愚鈍的人這麼多,是因為食物鏈裡已經沒東西會吃他們了,他們甚至還成了開發者……:)」
該頁面同時包含 Don Ho 對洗版事件的截圖(vandalism.png),以及他的完整聲明✓。值得注意的是:他沒有刪除原始推文,也沒有道歉。
第二部分作者背景
Don Ho 是誰
網路上(特別是中文圈)有許多文章將 Don Ho 描述為「台灣人」或「越南裔」,這些說法並未獲得可靠來源證實。根據 Wikidata、Wikipedia 與他自己的個人網站資料,他是法國軟體開發者。
| 項目 | 內容 |
|---|---|
| 國籍 | 法國軟體開發者 ✓(Wikidata 標註為 "French software developer") |
| 教育背景 | 1997 年於巴黎第七大學(後改名巴黎狄德羅大學,Université Paris Diderot)讀資工 ✓ |
| 職涯 | 曾任職於多家法國軟體公司,包含 Cooperteam、Dictao(銀行資安)、SYSTRAN(機器翻譯)、Dashlane(密碼管理器)✓ |
| 居住地 | 法國 |
| Notepad++ 起源 | 2003 年 9 月於工作之餘開始開發 ✓,動機是不滿意公司使用的 Java-based 編輯器 JEXT 效能太差,提案改用 C++ + Scintilla 被公司拒絕後,自己利用業餘時間實作 |
Notepad++ 的影響力與用戶基數
Don Ho 不是普通的軟體作者。Notepad++ 是全球最廣泛使用的 Windows 文字編輯器之一:
- 在 2015 年 Stack Overflow 全球開發者調查中,Notepad++ 是全球最常使用的文字編輯器,34.7% 的受訪者每日使用(n=26,086)✓
- 2016 年該比例為 35.6% ✓
- SourceForge 累積下載量(2003–2010)超過 2,800 萬次 ✓
- 兩度獲得 SourceForge Community Choice Award 最佳開發工具獎 ✓
- 至今仍在 GitHub 上活躍維護
Don Ho 一貫的政治表態風格
Don Ho 並不是第一次在版本發布中夾帶政治立場。這次的「隨機字符」推文,是他長期以來透過 release notes 與軟體版本命名表達政治立場的一個延伸事件:
| 年份 | 版本 / 事件 | 立場 |
|---|---|---|
| 2008 | "Boycott Beijing 2008" 横幅 ✓ | 抵制北京奧運(西藏議題) |
| 2014 | v6.6.4 "Tiananmen June Fourth Incident Edition" ✓ | 紀念六四 |
| 2015 | "Je suis Charlie" 版 ✓ | 聲援查理週刊 |
| 2019 | v7.8.1 "Free Uyghur" ✓ | 聲援維吾爾人 |
| 2020 | v7.8.9 "Stand with Hong Kong" ✓ | 聲援香港 |
| 2022 | v8.3.2 "Declare variables, not war" ✓ | 譴責俄羅斯入侵烏克蘭 |
| 2024 | v8.6.8 / 8.6.9 / 8.7 三版分別命名「Support Taiwan's Sovereignty」「Support Taiwan's Independence」「Support Taiwan's return to the UN」✓ | 聲援台灣 |
每一次政治表態,都對應一次來自反對立場的攻擊:
- 2015 年 "Je suis Charlie" 後,Notepad++ 網站遭伊斯蘭駭客組織 Fallaga Team 入侵 ✓
- 2019 年 "Free Uyghur" 後,網站遭中國方向的 DDoS 攻擊,GitHub issues 頁被民族主義評論灌爆 ✓
- 2020 年 "Stand with Hong Kong" 後,Notepad++ 下載頁在中國主流瀏覽器(QQ、UC、360、Sogou)中被封鎖 ✓
理解這個脈絡很重要:Don Ho 的「隨機字符」推文,是在連續多年被中國網民圍剿其 GitHub 後的反諷產物。但這個脈絡只能解釋他的動機,無法為這則玩笑的問題本質開脫。
第三部分中文圈的反應與報導
「隨機字符」推文的真正反應主要發生在中文圈(特別是中國大陸),英文科技媒體幾乎沒有專門報導這則推文。
簡體中文圈的反應
主要聚焦在「呼籲抵制 Notepad++」的論調,並推薦替代品(VSCode、Sublime、CudaText 等):
| 媒體 / 平台 | 標題與要點 |
|---|---|
| 軟餐(ruancan.com) |
〈Notepad++官方:如果用户不同意其政治观点,将在源代码中添加随机字符〉 文中承認「这显然是一句戏谑推文」,但仍以該標題傳播。 原文連結 |
| 知乎(多篇) |
〈又来作妖:复工第一事,先干掉 Notepad++〉 [1] 〈notepad++到底做了什么导致为什么国内编程界一片抵制的声音〉 [2] ——將推文時間定為 2023-01-25,並評論「这个作者不可能不知道这样的言论和行为会造成如何的影响,因此每个事件均为故意的行为」 〈请立即卸载反华病毒软件Notepad++〉 [3] |
| 個人技術部落格 |
晓雨杂记〈再见,Notepad++〉[原文]:承認「已知这种检测机制做不出来」,但仍認為言論「带来的危害」嚴重 博客园 LynneHuan〈使用cudatext替代notepad++〉[原文]:承認 Don Ho 後續說是玩笑,但認為「这种解释却无法令人信服」 |
| 反 Notepad++ 專頁 |
damon233 的 antiNotepadpp 專頁,彙整從 2008 年北京奧運抵制至今的所有「事件」 damon233.js.org/antiNotepadpp/ |
中文圈反應的觀察
中文圈報導有幾個共通特徵:
- 標題策略:傾向省略「玩笑」這個語境,直接寫成「將在源碼加入隨機字符」,使讀者第一印象認為這是真實功能或真實威脅
- 不接受玩笑解釋:即使提到 Don Ho 自承玩笑,也評為「不能服人」、「故意為之」
- 常見事實錯誤:多篇文章將 Don Ho 標為「中國台灣省的軟體開發者」或「台獨分子」,與事實不符(他是法國人)
- 抵制行動呼籲:搭配替代品推薦(VSCode、Sublime Text、CudaText、Notepad-- 等),形成完整的「替換流程」內容
英文圈:幾乎沒有專題報導
主流英文科技媒體(The Verge、Ars Technica、TechCrunch、The Register)並未對這則推文做專題報導。Hacker News 與 Reddit 上也沒有形成獨立討論串。較完整描述 Don Ho 政治表態的英文文章是 XDA Developers 的長文〈Notepad++ and Don Ho: A story of software, activism, and defiance〉,但這篇也沒有特別處理「隨機字符」推文事件。
第四部分為什麼這個玩笑開不得——技術論證
中文圈的批評多停留在「政治立場」層面;英文圈則多視為「Don Ho 一貫的諷刺風格」。但真正應該被討論的問題,雙方都沒有充分觸及:
文字編輯器作者公開威脅「會在使用者的檔案中插入字符」,無論是不是玩笑,都觸及了一個專業倫理底線——動用自己對使用者的技術權力位置作為笑梗。
信任邊界的破壞
文字編輯器處理的是用戶的工作成果。在這個信任結構裡,使用者預設編輯器忠實儲存自己輸入的內容、不會主動修改檔案。這個信任跟廚師「不會在客人的菜裡動手腳」、醫師「不會在麻醉時亂搞」、律師「不會把客戶的證據洩漏給對方」是同類型的職業信任。
開玩笑說「我會根據你的政治立場污染你的輸出」,等同於把自己放在「我有能力也有意願破壞這個信任」的位置上——而這個聲明,無論是不是玩笑,都會永久存留在公開紀錄中。
「插入隨機字符」的真實技術後果
對不熟悉軟體開發的讀者來說,「加幾個隨機字符」聽起來像小事。但實際上,靜默插入字符是後果可以非常嚴重的攻擊向量。以下是幾個具體場景:
原本的指令:
rm -rf /home/user/public_html/test
如果在 / 後面被插入一個空白:
rm -rf / home/user/public_html/test
第一個參數變成 /,後面變成獨立參數。在沒有 --preserve-root 保護的舊系統或某些 BSD 工具上,整個檔案系統會被刪除。即使是現代 GNU coreutils 有預設保護,後續路徑仍會被當成相對路徑執行,造成意外刪除。
Valve 的 Steam Linux client 因為一個 shell script 的變數展開錯誤✓,當 $STEAMROOT 為空字串時:
rm -rf "$STEAMROOT/"*
實際展開為:
rm -rf "/"*
多名用戶整個家目錄被刪除,包括掛載的外接硬碟與備份磁碟。
"I looked and saw that steam had apparently deleted everything owned by my user recursively from the root directory. Including my 3tb external drive I back everything up to that was mounted under /media."
GitHub issue #3671 原始回報者 keyvin
這個案例證明:單一字元層級的差異,在真實系統上可以造成完全的資料毀滅。一個編輯器作者公開暗示自己有意願做類似的事情,無論玩笑與否,都是在玩弄一個真實存在的災難類別。
- 正則表達式取代:
s/foo/bar/變成s/foo/bara/,整批檔案被靜默污染,可能數週後才發現 - 設定檔:CIDR
192.168.1.0/24變成192.168.1.0/240(無效,可能被解析為 0 或全開) - SQL 指令:
DELETE FROM users WHERE id = 5多個字符變成id = 50,刪錯資料列 - 加密金鑰、雜湊、簽章:一字之差直接驗證失敗,但錯誤訊息不會指向「故意污染」,使 debug 方向完全錯誤
- Unicode 同形字攻擊:如果插入的是 Cyrillic
а而非 Latina,肉眼幾乎無法分辨,但機器無法執行 - 無 Git 版本控管的場景:個人文件、財務報表、合約、病歷、一次性 script——這些場景沒有 git diff 可以救你
為什麼 Don Ho 應該知道這些
Don Ho 不是一般用戶。根據他自己的 CV,他長期任職於資安相關公司:
- Dictao:銀行資安解決方案(密碼學、PKCS#11、智慧卡)✓
- Oberthur Card Systems:智慧卡安全方案(HSM、加密技術)✓
- Dashlane:密碼管理器(OpenSSL、加密)✓
作為一個資安背景的開發者、寫了二十年文字編輯器的人,他比一般人更清楚:
- Unicode 不可見字符(zero-width characters)、同形字攻擊(homoglyph attack)、shell injection 這些都是真實存在的攻擊類別
- 「在使用者檔案中插入字符」的真實後果譜系有多寬
- 這不是「天真地拿不可能的事開玩笑」——他是用一個技術上完全可行、後果可以非常嚴重的攻擊類別當笑梗
玩笑的問題與政治立場無關
如果把場景反過來:假設一位立場相反的開源編輯器作者,發推說:
「不同意我支持中國政府立場的人,本編輯器將在你的程式碼中加入隨機字符。」
問題完全相同。問題的本質不在於誰的立場對錯,而在於:
文字編輯器作者不應該以「對使用者檔案造成傷害」作為威脅性笑梗
這跟律師不能開「我可能把你的證據洩漏給對方」的玩笑、醫師不能開「我可能在你麻醉時亂搞」的玩笑邏輯一致。職業信任結構決定了哪些玩笑可以開、哪些不能。
對立面的批評者也沒看到問題本質
中文圈的批評者大多圍繞「政治立場錯誤」打轉,把這件事當作 Don Ho 一系列「反華言論」的延續。他們的反應其實也帶有立場濾鏡——是因為立場相反才憤怒,而不是因為意識到這個玩笑的真正不妥之處。
換句話說,這個玩笑暴露了雙方都未充分意識到的問題:開源軟體作者在公共平台上的言論,實際上同時是一種「安全聲明」。當作者公開暗示自己有意願做某種傷害性行為時,無論他真實意圖如何,使用者的信任就會(也應該)下降。這是專業倫理問題,不是政治立場問題。
第五部分餘波與目前狀態
- Don Ho 在 v8.4.9 release note 中的回應,是他唯一的官方表態。他沒有刪除原始推文,也沒有道歉——只是表示「這是個玩笑」並嘲諷不理解笑話的人「愚鈍」
- Notepad++ 的下載量與用戶基數並未明顯下滑。事件後仍有大量用戶繼續使用
- 中文圈內的「替代品推薦」文章持續存在,但效果有限:許多用戶最終仍因功能習慣回到 Notepad++
- 2025 年 3 月,Notepad++ for Mac 正式版發布(由 Andrey Letov 開發的非官方移植),擴大了使用基數 ✓
- 2025 年發生的「state-sponsored hackers (suspected to be Chinese APT31) hijacked the update functionality for Notepad++」事件 ✓(透過入侵 hosting provider 劫持更新功能、針對東亞組織派送 malware),是另一個獨立的安全事件,與本文討論的 2023 年推文無直接關聯,但顯示 Notepad++ 確實長期是國家級威脅行為者的目標
結語
這起事件的價值,不在於它成為一個多大的醜聞——它沒有。事件本身在中文圈喧鬧一時、在英文圈幾乎沒有水花。但它是一個值得仔細解剖的案例,因為它呈現了三個常被混淆的問題:
- 作者個人言論自由 vs. 作者作為軟體維護者的專業位置——前者沒有問題,後者有義務考量自己言論的「安全聲明」效應
- 政治立場的攻防 vs. 專業倫理的底線——批評者大多停留在前者,反而模糊了後者
- 「只是個玩笑」的修辭 vs. 公共平台言論的不可逆性——已發布的言論會永久存在於搜尋結果與快照中,「玩笑」的標籤無法事後抹除其產生的不信任
對於開源社群、軟體開發者、以及思考軟體倫理的所有人,Don Ho 的這則推文都是一個值得保留的負面教材——不是因為他的政治立場,而是因為他短暫地用自己對數百萬使用者的技術權力作為笑梗。
來源彙整
一手來源
| # | 來源 | 類型 |
|---|---|---|
| 1 | Notepad++ v8.4.9 官方 release note | 官方聲明 |
| 2 | 原始 Twitter 推文 | 原始貼文 |
| 3 | Don Ho 個人 CV | 個人資料 |
| 4 | Don Ho LinkedIn | 個人資料 |
| 5 | Notepad++ 官方網站 | 產品官網 |
維基與權威資料
| # | 來源 |
|---|---|
| 6 | Notepad++ Wikipedia |
| 7 | Don Ho Wikidata |
中文圈反應報導
| # | 來源 |
|---|---|
| 8 | 軟餐 |
| 9 | 知乎〈又来作妖〉 |
| 10 | 知乎〈notepad++到底做了什么〉 |
| 11 | 晓雨杂记 |
| 12 | 博客园 |
| 13 | damon233 反 Notepad++ 專頁 |
英文圈報導
| # | 來源 |
|---|---|
| 14 | XDA Developers 深度報導 |
| 15 | The Initial Commit 訪談 |
Steam rm -rf 案例(技術論證)
| # | 來源 |
|---|---|
| 16 | GitHub issue #3671 |
| 17 | The Register |
| 18 | Slashdot |
| 19 | Bit-tech |