MS-DOS 4.00原始碼公開過程中的Git轉儲失誤會破壞建置並刪除元數據
微軟公司開源了MS-DOS 4.00 的源代碼,揭示了電腦歷史上的一個重要里程碑,這值得稱讚。但這家科技巨頭在發布過程中的失誤,可能會給渴望研究幾十年前程式碼的歷史學家和檔案保管人員帶來不必要的麻煩。
![2024-04-30-image-5-j.webp](https://i0.wp.com/static.cnbetacdn.com/article/2024/0501/40819cc23bcb32f.webp?w=640&ssl=1)
正如OS/2 博物館的軟體策展人Michal Necasek 所指出的那樣,正確的做法是將原始程式碼轉入Git 倉庫,而不是提供原始檔案。他提出了一個很好的觀點:”歷史悠久的源代碼應該以ZIP、tar 或7z 等文件歸檔的形式發布,並保留所有時間戳和每個字節的原樣。Git 根本就不是一個合適的工具”。
將原始碼丟進Git 後,微軟可能以多種方式破壞了文件,例如,Git 忽略了原始時間戳,帶走了關於每個文件最後修改時間的潛在有價值的元資料。更糟的是,UTF-8 編碼的轉換把一些程式碼變成了亂碼,破壞了建置過程。
正如Necasek 所強調的,幾十年前的源代碼不僅僅是文本,它本質上是二進制數據,需要完全保存,不能做任何修改。重新編碼會導致程式崩潰,因為像MASM 5.10 和Microsoft C 5.1 這樣過時的工具自然無法處理像UTF-8 這樣的Unicode 格式,而當時還不存在這種格式。
![2024-04-30-image-2.png](https://i0.wp.com/static.cnbetacdn.com/article/2024/0501/3002b156f22a144.png?w=640&ssl=1)
雖然MS-DOS 4.00 程式碼的可用性對於研究從MS-DOS 到Windows 發展歷程的軟體歷史學家來說無疑是一個福音,但GitHubbing 方法可能會不必要地破壞將程式碼作為真實檔案資料進行建置和分析的努力。
不過,一位用戶名為”starfrost”的評論者聲稱,他們與微軟合作發布了這一版本,並在原文中表示,他們有可能獲得原始ZIP 文件。不過可能無法取得時間戳,因為”資料保護法規定來源檔案必須匿名”。
此外,Necasek 還表示,他可以透過將程式碼複製到PC DOS 2000 虛擬機器並在其中運行建置過程來成功建置整個程式碼。因此,如果你想建立程式碼,這是一個不錯的選擇。
微軟更明智的做法是直接從內部備份以乾淨的ZIP 或7z 壓縮套件形式提供原始程式碼,並進行適當編碼,以原始形式保留每個位元組。電腦的遺產對於業餘愛好者來說實在是太珍貴了。
值得稱讚的是,微軟還額外提供了來自Ray Ozzie 檔案的測試版二進位檔案、原始文件和磁碟映像,以方便使用者進行模擬。