文 | Travis
出品 | OSC開源社區(ID:oschina2013)
不知道大家是否使用或了解過 HTTPie 這個項目,如果對它還不熟悉的話,這里先簡要介紹一下:HTTPie 是一個開源的命令行 HTTP 客戶端,它的目標是使 CLI 與 Web 服務的交互盡可能人性化。HTTPie 設計用于測試、調試以及通常與 API 和 HTTP 服務器交互。http& https命令允許創建和發送任意 HTTP 請求。它們使用簡單自然的語法,并提供格式化和彩色輸出。
HTTPie 項目的作者于 2012 年在 GitHub 上進行了第一次提交,至今已走過 10 年時間。經過不斷地迭代和改進,HTTPie 如今已經成為了 GitHub 平臺上最受歡迎的 API 工具之一,并擁有超過 5.4 萬 Star 和 1 千多 Watch。
這個擁有如此高 Star 數量的項目,卻因意外導致 5.4 萬個 Star 全部歸零。項目作者 Jakub Roztocil 近日在博客中詳細介紹了此次事件的來龍去脈,也順便可以給其他項目的作者敲響警鐘。
發生了什么?
Jakub 首先是承認了此次事件是由自己的錯誤操作導致的:
由于一連串不幸的事件,我不小心把項目的倉庫設為了私有,這個操作讓 GitHub 連帶刪除了我們花了 10 年時間建立的社區。
為什么要設為私有
作者 Jakub 表示:
把倉庫設為私有就會永久刪除所有 Watch 和 Star,這是 GitHub 的一個特性。我也知道這一點,因此我顯然無意將 HTTPie 設為私有。
之所以會導致這樣的結果,最直接的原因是 Jakub 以為自己在一個不同的倉庫里面(該倉庫沒有內容也沒有 Star),這是他在一周前創建的,但之前一直沒有向里面填充內容。
Jakub 在當時并沒有意識到倉庫在命名上存在不一致,HTTPie 項目的倉庫為 httpie/httpie,而 Jakub 想要設置的倉庫為 httpie/.github。
這就是為什么我在沒有意識到我的錯誤時,將 httpie/httpie設為私有,而不是 httpie/.github
當 Jakub 做完操作回到組織頁面后,他發現仍然可以看到空的倉庫,反而是 HTTPie 項目倉庫消失不見時,他才真正意識到發生了什么。于是 Jakub 立刻回到設置頁面中想要重新將 HTTPie 設為公開。但 GitHub 在接下來的半個小時內都不允許他這樣做,原因是 GitHub 正在 “幫助” 他刪除倉庫的 Star 和 Watch,無法中途停止這個過程。
GitHub 區別對待、拒絕恢復
為了盡可能避免損失,事后 Jakub 第一時間與 GitHub 取得聯系,希望 GitHub 能夠幫助他們恢復原本的數據。畢竟 GitHub 團隊自己就曾經不小心把 GitHub Desktop 應用的倉庫設置為私有,并在幾個小時內就為自己恢復了一切。
當初 GitHub 的 CEO 對這一情況做出了解釋:
開發人員今天早上錯誤地將 GitHub Desktop 倉庫設為私有,重新修改回來并不會恢復它的 Star 和其他一些東西,因此我們正在從數據庫備份中進行恢復。
顯然 GitHub 對此是有相關備份的,并且能夠通過備份挽回因不小心將倉庫設為私有而造成的損失。但是在 HTTPie 項目的事件中,GitHub 卻拒絕這樣做,理由是會引發不良的副作用和浪費資源成本。Jakub 甚至向 GitHub 提出經濟補償,也同樣遭到了拒絕。
雖然這件事是由于 Jakub 自己錯誤操作導致的,但他在博客中也提出了一些 GitHub 可以改善的地方,也希望其他項目作者能夠避免再犯同樣的錯誤。首先,他希望 GitHub 能夠以更加清晰、明確的方式向用戶告知操作的危害性,而不是一句放在任何地方都適用的 “警告:這是一個潛在的破壞性操作”;其次是改善數據庫的設計,盡可能使用 “軟刪除”,并在一定時間范圍內延遲 “硬刪除”。
目前 HTTPie 已重新公開,截止完稿,該項目已獲得 9 千多的 Star 數量。
Chromium或將使用Qt構建UI 噢,老天爺!屬于Java的協程終于來了! 又偷偷夾帶反戰私貨!npm生態還能信任嗎?
覺得不錯,請點個在看呀
責任編輯:Rex_08