十年积累,5.4万GitHub Star一朝清零:开源史上最大意外损失
機(jī)器之心報(bào)道
編輯:蛋醬、小舟
我們找 GitHub CEO 求助,但為時(shí)已晚。
2022 年 2 月 15 日,GitHub 通過推特平臺廣播了一則消息:「我們的朋友 HTTPie 最近不小心將自己設(shè)為了私密,丟掉了所有的 Star。如果你仍然愛它,就給它一顆 Star 作為情人節(jié)禮物。」
10 年攢下的 Star 突然清零?這是怎么回事?
昨天,項(xiàng)目作者 Jakub Rozto?il 在博客中正式回應(yīng)了這一事件。
十年獲得 5.4W Star 的開源項(xiàng)目
HTTPie 項(xiàng)目的第一次提交還是在十年之前。
可能一些人對這個(gè)項(xiàng)目不夠熟悉,這是一個(gè)開源 CLI HTTP 客戶端。團(tuán)隊(duì)從頭開始構(gòu)建了它,以使終端的 API 交互盡可能人性化。
HTTPie(發(fā)音為 aitch-tee-tee-pie)可用于測試、調(diào)試以及通常與 API 和 HTTP 服務(wù)器交互。http&https 命令允許創(chuàng)建和發(fā)送任意 HTTP 請求。它們使用簡單自然的語法,并提供格式化和彩色輸出。
從 2012 年 2 月 25 日在哥本哈根的第一次公開提交之后,項(xiàng)目作者 Jakub Rozto?il 就一直在 GitHub 平臺上托管該項(xiàng)目。他自己也是 GitHub 平臺的忠實(shí)粉絲。
這些年來,HTTPie 逐漸成長為平臺上最受歡迎的 API 工具,收獲了 5.4W 個(gè) Star 和 1k 的關(guān)注。
HTTPie 項(xiàng)目受益于 GitHub 的「social coding」功能,同時(shí),GitHub 也受益于自身平臺上托管的這個(gè)受歡迎的項(xiàng)目。在過去十年中,可能有數(shù)百萬開發(fā)人員訪問了 HTTPie 項(xiàng)目的 GitHub 頁面。
但在幾周前,HTTPie 項(xiàng)目積累的 5.4W Star 一夜清零。
在這篇博客中,項(xiàng)目作者 Jakub Rozto?il 詳細(xì)介紹了事情經(jīng)過:
發(fā)生了什么?
我不小心將項(xiàng)目的 repo 設(shè)為了私有,GitHub 級聯(lián)刪除了我們花費(fèi) 10 年時(shí)間建立的社區(qū)。
這意味著什么?
如果你是一位下游維護(hù)者,或者曾經(jīng)關(guān)注過 HTTPie 以獲取通知,你可能需要重新關(guān)注一下 repo。
Star 也是一樣,如果過去十年里你曾為該項(xiàng)目加注 Star,那現(xiàn)在 HTTPie 應(yīng)該已不再是你的 Star 項(xiàng)目列表中的一員。
為什么要將 repo 設(shè)為私有?
將 repo 設(shè)為私有會永久刪除所有關(guān)注者和 Star,這是 GitHub 的一個(gè)特性。我知道這一點(diǎn),而且我顯然無意 httpie/httpie 隱藏。
最直接的原因是我認(rèn)為我在另一個(gè) repo 中——一個(gè)沒有內(nèi)容且 0 Star 的項(xiàng)目。我真正打算做的是隱藏 HTTPie 組織的配置文件 README,這是我在一周前創(chuàng)建但沒有機(jī)會填充的。
讓我走上錯(cuò)誤道路的是一個(gè)完全不相關(guān)的操作:我剛剛在我的個(gè)人資料上做了同樣的事情(即隱藏了一個(gè)空的 README),將其設(shè)為 jakubroztocil/jakubroztocil 私有。
在配置文件和存儲庫方面,GitHub 的概念模型會將用戶和組織視為非常相似的實(shí)體。在這種情況下,由于我只是想在我們組織的個(gè)人資料上重復(fù)相同的操作,我的大腦切換到了「自動駕駛」模式。
目前我沒有意識到這個(gè)包含配置文件 README 的特殊 repo 的命名存在不一致問題,并且它對于用戶和組織有所不同:name/name 與 name/.github.
這就是為什么我一開始要隱藏 httpie/httpie,而不是 httpie/.github,并且沒有意識到我的錯(cuò)誤。
但是,還有一個(gè)確認(rèn)流程?
確實(shí)有一個(gè)確認(rèn)框,旨在阻止像我這樣的情況下的用戶做一些愚蠢的事情。它會告訴你「你將永遠(yuǎn)失去這個(gè)存儲庫的所有 Star 和關(guān)注者」。
問題在于,對于沒有提交和任何 Star 的 repo ,它的提示框和具有 10 年歷史及 55k Star 與關(guān)注者的 repo 是完全一樣的。它說的是:「警告:這是一個(gè)潛在的破壞性行動。」
套用一句話:一個(gè)盒子告訴你「你要拆房子!如果里面有人,他們都會死。」但如果你混淆了地址并認(rèn)為你正準(zhǔn)備拆的是一個(gè)空房子,那后果將不堪設(shè)想。
實(shí)際上,此處的對話應(yīng)該更加結(jié)合上下文,并且再次解釋一下情況,比如說「你即將殺死 55000 人。」那肯定會讓我停下來。
一番操作之后
當(dāng)我回到組織頁面時(shí),你可以想象我的困惑,我不僅仍然可以看到空的 README,同時(shí)我們最受歡迎的 repo 找不到了。片刻之后,我意識到發(fā)生了什么事。所以我回到 repo 的設(shè)置來翻轉(zhuǎn)開關(guān)。但 GitHub 不允許我這樣做——整整半個(gè)小時(shí)。
為什么這么久呢?因?yàn)檫@是 GitHub 級聯(lián)刪除我們 10 年來的 Star 和關(guān)注者所花費(fèi)的時(shí)間。而且我沒有辦法阻止這個(gè)過程。我所能做的就是開始發(fā)消息給 GitHub 尋求支持,刷新頁面并等待 Star 數(shù)量達(dá)到零,然后才能再次將其公開。
為什么 GitHub 不給我們恢復(fù)呢?
GitHub 顯然有備份,并且有恢復(fù) repo 的方法。GitHub 團(tuán)隊(duì)曾經(jīng)自己不小心將 GitHub 桌面應(yīng)用程序 repo 設(shè)為私有,然后他們在幾個(gè)小時(shí)內(nèi)就恢復(fù)了一切,當(dāng)時(shí)前 GitHub CEO 給出的解釋是:
然而,在我們的事件中,他們拒絕這樣做,理由是操作具有不良影響,并且會消耗資源成本。我們甚至提出為所需的任何資源提供經(jīng)濟(jì)補(bǔ)償,但遺憾的是,他們還是拒絕了。相對于在 GitHub 上恢復(fù)最受歡迎的社區(qū)項(xiàng)目之一以外,他們還有其他優(yōu)先事項(xiàng)。
因此,GitHub 恢復(fù)存儲庫的前提是他們自己的項(xiàng)目,而不是社區(qū)項(xiàng)目。
經(jīng)驗(yàn)教訓(xùn)
這次危機(jī)讓我們得到了很多教訓(xùn),這里主要分享 3 點(diǎn):
教訓(xùn) 1:UI/UX 設(shè)計(jì)
彈出的對話框要清晰明了,減少抽象的文字說明。以一種不需要用戶思索的方式設(shè)計(jì)確認(rèn)對話框。當(dāng)用戶要刪除或損壞某些文件時(shí),不要用抽象的語言描述,以免讓用戶難以了解即將發(fā)生的狀況,特別是會造成級聯(lián)刪除的行為。例如,以下是我們在 HTTPie for Desktop 中的處理方式:
對話框需要反映操作影響的嚴(yán)重性。當(dāng)完全沒有額外影響時(shí),對話框應(yīng)該盡量簡單,否則會浪費(fèi)用戶有限的注意力,從而降低用戶的敏感度:
教訓(xùn) 2:數(shù)據(jù)庫設(shè)計(jì)
使用軟刪除(soft-delete)。人非圣賢,孰能無過。人們在刪除操作上可能會犯錯(cuò)誤,因此應(yīng)該盡可能使用軟刪除,延遲硬刪除(hard-delete)操作。
教訓(xùn) 3:與 GitHub 的關(guān)系
這是我們的人為錯(cuò)誤,GitHub 明確表示他們沒有法律義務(wù)幫助我們。我們長達(dá)十年的互惠互利關(guān)系是根據(jù) GitHub 的服務(wù)條款確定的,除此之外,再無其他。
畢竟,GitHub 有過有爭議的行為,這些行為違背了開源社區(qū)的精神。微軟(已收購 GitHub)盡管擁有一定的開源精神,但并不總是有很好的聲譽(yù)。
我們希望 GitHub / 微軟 有朝一日能夠改變他們的態(tài)度,并恢復(fù)我們的項(xiàng)目社區(qū),他們擁有實(shí)現(xiàn)這一點(diǎn)的所有數(shù)據(jù)和方法。我們也希望他們改進(jìn) UI 和數(shù)據(jù)庫設(shè)計(jì),以防止這種情況未來發(fā)生在其他團(tuán)隊(duì)身上。
最后,盡管我們的 GitHub star 量化為虛無,但 HTTPie 現(xiàn)在發(fā)展得非常好,從最初作為一個(gè)副項(xiàng)目到現(xiàn)在變成了一家公司,我們的團(tuán)隊(duì)正在將 HTTPie 發(fā)展成一個(gè) API 開發(fā)平臺。用于 Web 和桌面的 HTTPie 私有測試版收到了很好的反饋,我們迫不及待地想在接下來的幾周內(nèi)公開發(fā)布它。
總結(jié)
以上是生活随笔為你收集整理的十年积累,5.4万GitHub Star一朝清零:开源史上最大意外损失的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学家告诉你什么时候结束单身?!
- 下一篇: 70%进入体制内!2021年,清北毕业生