5.4萬GitHub Star 清零:開源史上最大意外損失
經常逛 Github 的人應該知道,每個專案右上角都有一個 Star 選項。雖然它的翻譯是“星星”,但將其理解為關注或點贊或許更為合適:點選即代表你對這個專案的支援與喜愛,因此許多優質開源專案長年累月下來都能獲得諸多 Star。
然而,“十年累之,毀於一旦”的悲劇,最近發生在了 HTTPie 專案身上:昨日,HTTPie 專案開發者 Jakub Roztočil 在其官方部落格釋出了一篇文章——“我們是如何失去 54k GitHub Star 的”。
1、十年共獲 54k+ Star
HTTPie,是一個開源的命令列 HTTP 工具包,提供命令列互動方式來訪問 HTTP 服務。與其它同型別專案不同之處在於:為儘可能使終端的 API 互動人性化,HTTPie 是從頭開始構建的。
自 2012 年 2 月 25 日釋出第一個公開版本開始,HTTPie 團隊就將專案託管在 GitHub 上了。Jakub Roztočil 解釋道:“當我意識到自己的 API 測試結果可能會引起開發人員社群的廣泛興趣時,GitHub 作為程式碼託管平臺,顯然是個不錯的選擇。”
事實證明,Jakub Roztočil 的選擇沒有錯:多年來,HTTPie 開發團隊對專案不斷改進,吸引了眾多開發者的使用與好評,HTTPie 也因此逐漸成為了 GitHub 上最受歡迎的 API 工具,還是 GitHub 上最受歡迎的 80 個公共儲存庫之一,Star 數高達 54k+。
Jakub Roztočil 對這一成績表示感恩:“這個不起眼的工具居然吸引瞭如此龐大的社群,真是令人難以置信,GitHub 在這之中發揮了重要作用。”
然而,就在 HTTPie 發展一切順利、即將迎來在 GitHub 上託管十週年之際,Jakub Roztočil 的一個誤操,令 HTTPie 這十年積攢的所有 Star 都憑空消失了。
Jakub Roztočil 懊惱表示:“我不小心將 HTTPie 專案的儲存庫設為私有了。”
2、54k+ Star 瞬間消失
那天,Jakub Roztočil 先是將自己的 jakubroztocil/jakubroztocil 設定為私有,即在其個人資料中隱藏了一個空的 README。隨後,他只是想以相同的操作在組織資料中也隱去一個空 README 檔案,不料卻成為了“悲劇”的開始。
不知道是否有人注意到,在 GitHub 進行配置檔案和儲存庫時,透過使用者和透過組織的命名雖有不同,但非常相似:name/name(使用者)與 name/.github.(組織)——這也就是 Jakub Roztočil 誤認為自己在另一個零 Star 的空儲存庫中的原因:“我沒有意識到命名存在不一致,所以我錯誤地選擇了私有化 httpie/httpie 而不是 httpie/.github。”
(注:httpie/httpie 是擁有 54k+ Star 的專案儲存庫,而 Jakub Roztočil 本來想隱藏的是 httpie/.github。)
或許有人會問:那將專案再公開不就好了?不錯,可問題是 GitHub 有一個“無情”的設定:一旦將儲存庫設為私有,將永久刪除其所有 Watch 和 Star。
也就是說,HTTPie 用十年積攢下來的 54k+ Star 一瞬之間就沒了。
3、聊勝於無的“確認框”
按常理來說,手機裡刪個照片都會“溫馨提醒”一下,對於這種具有較大影響的操作,GitHub 應該也會提醒吧?
“確實有一個確認框”,Jakub Roztočil 表示:“GitHub 會提醒你一句‘你將永遠失去這個儲存庫的所有 Watch 和 Star’。”
可是,這個確認框的內容一成不變:不論是對於沒有 Star、沒有內容的儲存庫,還是面對具有十年曆史、54k+ Star 的儲存庫,這個確認框都幾乎一模一樣(只有最後一行的 httpie/httpie 和 httpie/.github 不同)——這對此前剛在其個人資料中順利隱藏了一個空 README 檔案的 Jakub Roztočil 來說,確認框的提醒作用聊勝於無。
一起來對比下面兩張圖,你能區分出哪一個是空儲存庫可以安心刪除,哪一個會重置已擁有 54k+ Star 的儲存庫嗎?
Jakub Roztočil 無奈表示:“提醒內容應更結合實際,如果確認框中說‘你將失去 54k+ Star’,那我肯定會停下來。”
4、“雙標”的 GitHub
可惜,以上分析及感想均產生於在“悲劇”發生之後。
彼時尚未意識到自己錯誤的 Jakub Roztočil,在完成操作後看到組織頁面的時候,陷入了無盡的茫然:為什麼我想要隱藏的空 README 檔案還在,最受歡迎的 HTTPie 儲存庫卻不見了?
片刻之後,Jakub Roztočil 突然意識到發生了什麼,火速回到儲存庫試圖改正,可直到半小時後 GitHub 才允許:這半小時中,GitHub 忙著級聯刪除 HTTPie 這十年來所有的 Watch 和 Star。Jakub Roztočil 沮喪道:“我沒有辦法阻止這個過程,便開始發郵件給 GitHub 尋求支援,可最後也只能在 Star 數降為 0 後,再將儲存庫公開。”
事發之後,Jakub Roztočil 希望 GitHub 能利用備份幫助其恢復 HTTPie 54k+ Star 的社群,因為 GitHub 自己也曾發生過類似意外:GitHub 團隊有次不小心將 GitHub Desktop 應用儲存庫設為私有,隨後沒幾個小時就恢復了包括 Star 在內的一切,當時 GitHub 前 CEO 還特地解釋是透過資料庫備份恢復的。
但 GitHub 拒絕了 Jakub Roztočil 的請求,理由是這會導致不良影響,甚至即便 Jakub Roztočil 表示願意為此提供經濟補償,GitHub 也還是拒絕。
對此,Jakub Roztočil 總結:“GitHub 可以透過備份恢復私有再公開的儲存庫,但前提是這得是他們自己的專案,而不是社群專案。他們最多給你發條推文呼籲一下。”
5、“GitHub 難道不該提供更好的使用者體驗嗎?”
茫然過,慌亂過,無助過,也憤怒過,但最終 Jakub Roztočil 還是平靜地接受了,畢竟一切已塵埃落定,54k+ Star 回不來了。所幸許多開發者在知情後紛紛重新點選了 Star,目前 HTTPie 的 Star 數也已達 4.5k+。(GitHub 地址:)
“雖然我們的選擇有限,但至少有一些經驗教訓想與你們分享。”Jakub Roztočil 在最後如此說道。為避免其他人也發生類似“悲劇”,Jakub Roztočil 結合 HTTPie 自身官網設計,對開發者提出了兩點建議:
最佳化 UI/UX 設計:當使用者要破壞/刪除某樣東西併產生較大影響時,提醒框應該準確反映後果嚴重性。
使用軟刪除:人無完人,難免都會犯錯。就算使用硬刪除,也儘量延遲其過程。
最後,Jakub Roztočil 所講述的這段經歷,出人意料地在 Hacker News 上引起了許多開發者的共鳴。
@vaishnavsm:“我真的很喜歡這篇文章。雖然作者顯然對他們失去了他的社群並且 GitHub 沒有恢復它感到難過(老實說,所有人在類似情況下都會難受的),但他們也在關注未來,並用他們的個人經歷作為我們所有人都可以學習的寓言。作為設計師和開發人員,我們也將根據其建議改進我們的工具包。謝謝 HTTPie,你獲得了一顆新 Star!”
@ghoomketu:“那個確認框的對比圖真的很可怕,我看了兩遍才發現最後一行不同。希望 Github 高層管理人員能儘快注意到這一點並加以改進。”
也有許多人終於在此刻爆發了對 GitHub 的不滿。
@sefrost:“GitHub 自己犯了完全相同的錯誤,卻能透過資料庫備份修復它,這確實不公平。”
@bsuvc:“當然,作者應該對此次失誤負責,但 GitHub 難道就不該提供更好的使用者體驗嗎?難道不小心私有化然後公開的儲存庫真的有必要清空其 Star 嗎?這難道是專案作者和點選 Star 的開發者們想要看到的嗎?”
那麼在你看來,GitHub 又有哪些方面需要改進呢?
來自 “ 架構文摘 ”, 原文作者:架構文摘;原文連結:https://mp.weixin.qq.com/s/5DMvDNZ0AHkm1CwIfuXJ3A,如有侵權,請聯絡管理員刪除。
相關文章
- GitHub開源史上最大規模中文知識圖譜Github
- Github 上那些開源專案的 star 數Github
- GitHub Star 數量前 12 的開源無程式碼工具Github
- 10大Python開源專案推薦(Github平均star2135)PythonGithub
- 我是如何把 GitHub 開源專案做到 5300+ star 的Github
- 一夜之間,7.0萬 Star,全部清零!
- Github 上 Star 最多的個人 Spring Boot 開源學習專案GithubSpring Boot
- GitHub Star 數量前 5 的開源應用程式生成器Github
- 意外的失業
- 我成了 GitHub StarGithub
- 一週漲 15k Star 的開源專案「GitHub 熱點速覽」Github
- 一天漲 23k Star 的開源專案「GitHub 熱點速覽」Github
- 快手開源LivePortrait,GitHub 6.6K Star,實現表情姿態極速遷移AIGithub
- GitHub迎來史上最大產品變革:釋出可直接執行程式碼的GitHub ActionsGithub行程
- [資源分享] Github上八千Star的深度學習500問教程Github深度學習
- 又一個開源便斬獲 7k star 的新模型「GitHub 熱點速覽」模型Github
- 一不小心,它成為了 GitHub Alibaba Group 下 Star 最多的開源專案Github
- 石錘 github 買 star 行為Github
- 打造 10000 Star 的前端開源專案 ⭐前端
- 開源 Mock 工具 [djmockserver]~~~歡迎使用 starMockServer
- 開源電路分享のFalling Star Board
- IOU損失
- Arthas 開源一週年,GitHub Star 16 K ,我們一直在堅持什麼?Github
- react-admin-plus 正式開源, 歡迎starReact
- GitHub 1W star 成就達成!Github
- 持續測試的興起:寫在 MeterSphere 開源專案 GitHub Star 數量突破 1000 之際Github
- 開源不到 48 小時獲 35k star 的推薦演算法「GitHub 熱點速覽」演算法Github
- 損失函式函式
- 廣收開源高危漏洞,360BugCloud一年挽回全球數億損失GCCloud
- 揭開周獲 18k star 開源專案的神祕面紗「GitHub 熱點速覽 v.22.28」Github
- Github中式開源誌異Github
- 畢設開源了,126個star,39個fork
- 在github上優雅管理star專案Github
- Vue 專案推薦,GitHub 過萬 StarVueGithub
- S3 Partners:2019年美國空頭排行 做空阿里損失最大S3阿里
- MarshalByRefObject 的效能損失Object
- 交叉熵損失CrossEntropyLoss熵ROS
- 新的開始 | Arthas GitHub Star 破萬後的回顧和展望Github