記Windows的一個存在了十多年的bug

2022-10-06 06:00:20

bug

Windows有一個bug,持續了十多年,從Windows Visita開始(2007年),一直存在,直到Windows11(2021年)才修復(其實也不叫修復,後面我再具體說),而Windows10還能重現這個bug,即便把系統更新到最新(2022年10月5日)。

這個bug用語言來描述就是:使用Windows Explorer(資源管理器)的樹形結構初次展開目錄時,卷軸會發生不正確的捲動,使得展開的節點貼近了視窗底部的位置,而不是處於我們期待的頂部位置。

有些難懂?我錄了一個視訊來說明這個bug:視訊壓縮包(部落格園不能上次視訊,所以做了個zip),本人基本沒學過視訊製作,弄得比較粗糙,請見諒。

Windows Vista

Windows Vista出來的時候,我就嚐鮮安裝了一個,基本上是馬上就發現了這個問題,因為Windows XP及之前的所有的Windows作業系統都沒這個問題。

為什麼我能馬上看出來?還不是因為我對資源管理器的使用習慣,我非常喜歡用目錄樹展開找到我想要的東西,這種習慣來源於我最早接觸的Windows作業系統——Windows 95,要說現代Windows的操作模式是從哪來的,那一定是Windows 95,直到現在,Windows 95仍然是我心目中最具「跨越式」發展的作業系統,就是說它步子足夠大,顛覆了過往的作業系統,讓人耳目一新,開始選單,底部工作列,工作管理員,真正的多工,這些如今我們無比熟悉的東西皆源於Windows 95,比爾蓋茲也憑著這個作業系統的釋出而登頂了世界首富。這是一些題外話。

我發現這個bug之後,就一直想辦法要修復它,到處尋找解決方案,發現了這個問題的人當然不只是我,在MSDN上就有一個回覆達到上千的bug反饋,是描述這個問題的,這個貼文的連結如今已經不可存取了,我記得非常清楚,大部分人表示這是個不可理喻的bug,不知道為啥會存在,非常低階,應該很快就能修復。而可氣的是微軟官方的答覆居然說:這是個feature,並把這個問題close了,但大家的跟進仍然很激烈:

  • 「因為這個問題我已經失去了對微軟的尊重了。」
  • 「我對微軟早就沒有尊重了,我已經打算更換Mac了。「
  • 「每次遇到這個問題,我真想把電腦扔下樓,然後去買臺Mac。」
  • 「微軟要是能把以前開發XP的老掉牙的從病床上拉起來並幫他們帶好尿袋,我相信這問題會在3分鐘內修復。」

貼文中好些微軟的MVP在瞭解情況後非常明確地指出這是個bug! 它不可能是一個feature,因為它行為不一致,而feature即便是再差再糟糕的feature也必須滿足行為的一致性,否則只能論作bug,它確實就是個不折不扣的bug。

這個問題對我困擾甚多,所以Vista我基本沒怎麼用,因為一個bug而放棄一個作業系統,聽起來挺荒謬,但事實就是這樣,對我而言,這基本上就是個硬傷,我不願意改變我的習慣,而這個bug真是令我抓狂。

Windows 7

Windows Vista是微軟的一個失敗的作業系統,最主要的原因是其相容性的問題,這些問題到了Windows7之後得到了很大程度上的改善,所以很多人都用過Windows7,而沒有使用Windows Vista,他們都知道Windows Vista不好,但不好在哪裡,他們都說不出來。而對我來說比相容性更重要的是,這個該死的bug到底有沒有修復?Windows7安裝上去了之後,我滿懷期待地開啟了資源管理器按我習慣的操作點選了幾下……我靠! 一點都沒變! 我先是氣憤,後轉為失落。

不管怎麼說,Windows7都會成為以後幾年的主流作業系統了,我得習慣——唉! 我後來確實找到了一個程式,一定程度上能解決這個問題,這個軟體的名字叫「Classic Shell」,它的網站目前還能存取:http://www.classicshell.net/,裡面包含了一個小小的功能:fix folder scrolling,它的其它功能我如今全忘了,因為當時我只看中了它這個功能。看吧,放棄一件東西往往只因為其中的某個特點,反之,選擇一件東西也是這樣。Classic Shell這個軟體並不能解決所有的問題,它僅僅作用於資源管理器程式中,而Windows的這個bug不只是在資源管理器中有,它在「開啟檔案」,「選擇目錄」等系統公共對話方塊中也存在,但能解決一部分是一部分吧。而作為Windows程式設計師的我還曾一度想自己修復這個問題,但研究下來無果。

Windows 8

又過了若干年,Windows 8發行了,這貌似是一個很大的改版,我又滿懷期待地安裝上去了,結果真是無語,這個bug一點不差地繼承了下來。Windows 8的活動磁貼讓人很有新鮮感,但隨即新鮮感過後覺得其實也沒啥營養,活動磁貼適合於平板,但桌面版的Windows強行弄這東西真的合適麼?不過最奇葩的還是Windows 8的關機按鈕,即便是我這樣的老鳥,也費了老大勁才找到。Windows 8是個失敗的作業系統,可能是因為步子有點大,和Windows 95的步子大不同,它不合理的地方太多。

Windows 8.1

微軟很快意識到了Windows8的問題,所以不久後推出了Windows 8.1,Windows 8.1的UI上更加符合使用者傳統的操作習慣,但也真的只是小改進罷了。bug呢?——當然完美保留了下來。

而從Windows內部版本上來看,Windows Vista,Windows 7, Windows8,Windows 8.1是相差不大的東西,想知道Windows版本可以在命令列介面中敲「ver」檢視,你會了解到:

* 6.0 - Windows Vista
* 6.1 - Windows 7
* 6.2 - Windows 8
* 6.3 - Windows 8.1

不過,從Windows 10開始就不是這樣的版本顯示了。

Windows 10

Windows10大概從2016年開始漸漸普及,一樣的,我安裝後的第一件事情就是看看這個bug修正了沒有,嗯……還好我沒太大的期待,果然還在! 這也說明了一個問題,這個資源管理器的程式碼應該是直接從之前版本的作業系統中拿過來用的,應該沒改過什麼。Windows10是一個比較成功的作業系統,發行後,微軟多次對它進行了大幅度的迭代,如今的Windows 10跟初代的Windows 10已經差別很大,但對我而言,不修正這個bug都算不上成功。

Windows 11

這個bug最終的解決是在Windows 11上,它,終於消失了,但Windows 11和Windows 10在UI上的差別很大,對我而言這絕對是步子邁得太大扯到蛋的變化,Windows 95的革命性UI變化給人是驚豔的感受,因為進步實在太大,而Windows 11的這些「改進」都只停留在表面上,把開始選單弄成居中,強行合併工作列圖示,這些除了強制使用者改變自己習慣之外,我看沒帶來什麼好處啊,操作更便利了?功能更強大了?更加符合人類直覺了?恐怕都沒有吧,就是為了標新立異而已,我不反對一些新的嘗試,但至少要給使用者一個選項,如果新的方式不好用,能夠退回舊的方式啊。但不管怎麼說,在Windows 11的資源管理器中,它確實消失了,也許不是修復了,而是微軟重構了資源管理器的程式碼,因為Windows 11的資源管理器跟Windows 10的有著很明顯的差別,所以真相很可能就是:微軟其實根本沒去修正這個bug,只是把資源管理器重新寫了一遍,正好沒了這個bug罷了。

Windows11的操作方式和Windows10也有著很大的差別,最令人吐槽的便是它的右鍵選單,相信是個程式設計師看了都想開罵——為何要我多點一下。所幸的是要調整回經典右鍵選單並不難,而要想讓傳統的工作列迴歸就有點難了,我嘗試過許多個方法後,發現比較可靠的,且副作用比較小的,就是用一個叫「StartAllBack」這個軟體,它的作用不僅僅是讓經典工作列迴歸,還能調整開始選單,以及讓資源管理器使用傳統風格。

總結

寫這篇文章,是為了一些紀念,也是為了總結一些道理:

1. 一個東西,不管其它方面有多好,一個缺點就可以讓人很討厭它
2. 沒有充分的理由就不要試圖去改變使用者的習慣
3. 從根本上去改進產品,而不是停留在表面上
4. 一個產品沒有令人厭煩的bug往往比有什麼酷炫功能重要
5. 大公司……確實挺傲慢