「代碼恒久遠,bug 永流傳。」前不久,GitHub 幫廣大程式員把這個噩夢變成了現實。
上周,這家全球最大的開源代碼托管機構表示:今年的 7 月 8 号,我們已經把大家 2 月 2 号之前開源的項目代碼安全送到了北極,預計存個一千年沒有問題。
為什麼要費這麼大勁存一堆代碼?GitHub 曾在去年的 GitHub Universe 大會上解釋說:首先,這些代碼都是人類文明的寶貴财富,但現有的存儲媒體都不足以讓它們長期儲存下去,一旦丢失,後代就要重新造輪子;其次,天有不測風雲,萬一哪天哪個天災人禍讓地球回到原始時代,起碼還能留下點火種,讓後代在這個基礎上重建新一輪的計算機文明。
GitHub 的擔心不無道理。且不說外星人入侵、核戰争之類的全球毀滅性災難,就是在正常情況下,人類文化遺産也有不少一度或永遠消失在曆史長河中,比如古羅馬的混凝土工藝。
是以,GitHub 就想到了這個極富遠見和科幻色彩的方法——将代碼存到北極。
這個項目名叫 GitHub Archive Program,宗旨是為子孫後代留下一個名為「GitHub Arctic Code Vault」的開源項目代碼庫,具體做法是為網站上每個活躍的開源代碼庫建立「快照」,然後将其存儲在膠片上運往北極。
受疫情影響,該計劃最近才被完成。
如果你在今年 2 月 2 号之前向 GitHub 送出過開源項目代碼,那麼恭喜你,你的代碼很可能已經靜靜地躺在北極了。
為了表彰廣大開發者對開源項目的貢獻,GitHub 設計了榮譽徽章(圖上的「Highlights:Arctic Code Vault Contributor」字樣)。如果你的 GitHub 個人首頁下方也有這個徽章,表明你的代碼去了北極。機器之心的已經去了。21TB 代碼的北極之旅
此次運往北極的代碼達到了 21TB,存儲在 186 卷數字光敏檔案膠片中。這些膠片來自一家名為 Piql 的挪威公司。據報道,常見膠片的壽命約為 500 年,但 Piql 的膠片在 1000 年之後仍能讀取。
代碼以二維碼的形式存儲在膠片上,每一幀可以容納 880 萬個像素。
這些膠片從 Piql 在挪威德拉門的辦公地點出發,被打包運到首都奧斯陸機場。它的最終目的地是 600 英裡(1000km)外的斯瓦爾巴群島。
經過上千公裡的飛行,代碼安全抵達斯瓦爾巴群島的朗伊爾城。這裡的山上有一個「退役」的煤礦,你的代碼就被安置在煤礦幾百米深處永凍層的一個房間。這一區域被稱為人類文明的「諾亞方舟」,全球種子庫也在這附近。
一份寫給未來的讀取指南
GitHub 這一項目的科幻色彩貫穿于每個細節。考慮到一千年後的人類不一定能讀懂今天的代碼,GitHub 貼心地為每份文檔附加了一份「指南」。
指南的開頭這樣寫道:「你可能在一年或一千年之後讀到這篇文章,但無論是哪種情況,我們都希望文中的概念,或者說開源的概念,對你有所幫助。」
接下來,他們又簡單地介紹了一下二進制、計算機、軟體、編譯等基本概念,以及如何解碼膠片上的資訊。
由于不确定人類将來使用何種語言,GitHub 将這份指南用五種語言各寫了一遍。
盡管已經解釋地非常仔細了,但 GitHub 覺得,後代還是有可能打不開這些檔案,因為他們可能缺乏一樣最重要的東西——計算機。
地球上最早的人類文明誕生于數千年前,但現代計算機直到最近幾十年才出現。如果再經曆一次文明重建的過程,我們的後代是不是還要花這麼長時間?GitHub 顯然已經想到了這個問題。是以,除了代碼讀取指南之外,他們還留下了另一樣東西——「科技樹」。
「科技樹」是一個獨立的人類可讀卷軸,裡面主要包含現有的工作,旨在讓後代對現代計算、開源及其應用、現代軟體開發、流行程式設計語言等有一個詳細的了解。
此外,它還包含了解軟體所需的多層技術基礎,如微處理器、網絡、電子、半導體,甚至工業社會前的技術。有了這些技術,我們的後代就有可能重新造出現代計算機。
有人在 GitHub 的這份指南中讀出了《流浪地球》般的史詩味道,感興趣的讀者可以前去閱讀全文:
https://github.com/github/archive-program/blob/master/GUIDE.md。
被封存的不隻是代碼
在 GitHub 公布代碼已經安全抵達北極的消息之後,開發者們紛紛曬出自己的代碼被選中的喜訊。
有人将這個項目的「浪漫」演繹到了極緻:
但對于另外一些人來說,浪漫永遠是别人的:
還有人擔心後代看不上自己的代碼:
更有意思的是,有人提醒說,GitHub 上幾屏都拉不到底的女裝教程「Dress」也被凍在了北極:
GitHub 上著名的女裝項目,star 量 17.6k,貢獻者有 248 位。該項目已經得到了 GitHub 給的徽章。
讓我們猜測一下後代打開這個項目之後的反應:
除了北極的這個存儲庫之外,你的代碼(和照片)還有可能會出現在網際網路檔案館(IA)和軟體遺産基金會(Software Heritage Foundation)的庫裡,因為他們都和 GitHub 展開了合作,前者已經歸檔了大約 55TB 的資料,後者也已經歸檔了超過 1.3 億個項目。
看來,以後寫(傳)代(照)碼(片)也要多長點兒心了。
GitHub:1000 年不夠,我們還打算存幾萬年
對于一個個體的生命來說,一千年已經很長了。但從整個人類的曆史來看,時間是以「萬年」為機關的。是以,GitHub 一直在尋找更加持久的存儲方式。在最新的部落格中,他們介紹了 Project Silica——一種借助石英玻璃存儲代碼的方法。
這種存儲方式是通過永久改變玻璃材質的實體結構實作的,能夠抵抗地磁幹擾,還能防水防熱,可以将資料存儲數萬年。
目前,GitHub 已經借助該方法存儲了 6000 多個全世界最流行的開源項目,而且這個數字未來還将持續擴大。
最後提醒一句,如果不想被存幾萬年,現在删掉一些東西可能還來得及。
參考連結:
https://github.blog/2020-07-16-github-archive-program-the-journey-of-the-worlds-open-source-code-to-the-arctic/