5.4萬(wàn)顆星清零!GitHub上10年心血,開發(fā)者誤操作項(xiàng)目消失

發(fā)布時(shí)間:2022-04-20 16:59:38  |  來源:騰訊網(wǎng)  

新智元報(bào)道

編輯:袁榭 拉燕

【新智元導(dǎo)讀】手滑點(diǎn)錯(cuò)按鈕,會(huì)有什么后果呢?GitHub大佬親自用自身經(jīng)歷現(xiàn)身說法。

手一滑,誤關(guān)閉了文檔、PPT、會(huì)議窗口、網(wǎng)頁(yè),這是當(dāng)代人生活的必有場(chǎng)景了。

至于影響,小到訂不到機(jī)票車票、大到丟飯轍丟老婆,都是有可能的。

這種失誤在開源程序界的明星那里,會(huì)有什么影響呢?

下文就會(huì)告訴你一個(gè)典型的例子。

Github網(wǎng)紅項(xiàng)目

HTTPie for Terminal距離第一次上傳,已經(jīng)過去10年了,這可是一件值得慶祝的事。

如果大家還對(duì)這個(gè)項(xiàng)目不是很熟悉,首先要知道這是一個(gè)開源的CLI HTTP用戶端軟件。HTTPie與眾不同之處在于,它是從零開始搭建的,目的是為了讓終端的API交互盡可能的方便用戶操作。

2012年2月25號(hào),在哥本哈根的一個(gè)雨夜,HTTPie第一個(gè)公開版本在GitHub上發(fā)布。

發(fā)布者Jakub Rozto il說,他一直是GitHub的粉絲,多年前他就是GitHub的會(huì)員了。按Jakub Rozto il自述,他就是個(gè)身著格子衫的標(biāo)準(zhǔn)程序員,lol。

在那個(gè)時(shí)代,GitHub曾經(jīng)在他們的首頁(yè)上,非常驕傲地宣布,他們?cè)陲L(fēng)險(xiǎn)投資中籌得了0美元的巨款,并且在他們舊金山的辦公室里有很多美味的啤酒。

當(dāng)Jakub Rozto il意識(shí)到,他做的API測(cè)試可能會(huì)讓大開發(fā)者社群里的成員感興趣的時(shí)候,他就知道GitHub就是他的首選發(fā)布站了。

事實(shí)也確實(shí)如此。

Jakub Rozto il還記得,當(dāng)HttPie第一次成為Hacker News上最熱門的鏈接,還有GitHub社群不斷壯大的場(chǎng)景。

很多年來,開發(fā)人員仍然在不斷完善這個(gè)項(xiàng)目,這個(gè)項(xiàng)目也吸引了越來越多人的注意。慢慢這個(gè)項(xiàng)目成為了GitHub平臺(tái)上最時(shí)髦的API工具。而彼時(shí)的HTTPie項(xiàng)目也成為了有5.4萬(wàn)關(guān)注并評(píng)分者的大社群,

GitHub上有多達(dá)2.89億的公開程序托管項(xiàng)目,HTTPie也成為了社群中排名前八十的公開項(xiàng)目,排名前99.99997203%.

簡(jiǎn)而言之,看到這個(gè)項(xiàng)目能收獲這么多的關(guān)注,實(shí)在是一件美妙的事。GitHub作為平臺(tái)功不可沒。

開發(fā)HTTPie的人員和GitHub是互利互惠的關(guān)系。前者收獲了后者提供的開源平臺(tái)的服務(wù),而平臺(tái)也因?yàn)檫@個(gè)項(xiàng)目的熱門而收獲不少。

在過去十年,差不多有上百萬(wàn)人瀏覽過這個(gè)項(xiàng)目的主頁(yè)。這也反哺了GitHub和Microsoft,使其作為一家公司更加關(guān)注開源和社群的搭建。

可以說,項(xiàng)目和平臺(tái)互相成就。

緣,妙不可言。

因誤操作,5.4萬(wàn)評(píng)星蒸發(fā)

然而,如果你是5.4萬(wàn)對(duì)此項(xiàng)目關(guān)注并評(píng)分者的其中之一的話,這幾周你會(huì)發(fā)現(xiàn),你不再是了。

到底發(fā)生了什么呢?

因?yàn)橐幌盗械姑沟恼`操作,Jakub Rozto il不小心把項(xiàng)目權(quán)限設(shè)置成「私密」了。然后GitHub就這么把他們搭建了10年的項(xiàng)目刪掉了。

這意味著什么呢?

如果你是一名下游的維護(hù)人員,或者是此前關(guān)注過HTTPie通知的人,現(xiàn)在你得把托管項(xiàng)目重新看一遍。

另外,Jakub Rozto il還發(fā)布了一份安全聲明。

而對(duì)評(píng)分者是一樣的道理。如果你是其中之一的話。如果你在過去十年里給HTTPie點(diǎn)過贊,那么現(xiàn)在HTTPie這個(gè)項(xiàng)目不會(huì)在你的喜歡列表里再次出現(xiàn)了。

那么開發(fā)者為什么要設(shè)置私密呢?

這其實(shí)得怪GitHub。簡(jiǎn)單來說,如果把項(xiàng)目設(shè)置成私密,那么就會(huì)自動(dòng)永久刪掉所有的關(guān)注者和評(píng)星。Jakub Rozto il其實(shí)知道這一點(diǎn),那么他為什么還要這么做呢?

Jakub Rozto il表示,最直接的原因就是,他誤以為自己打開了一個(gè)完全不同的項(xiàng)目。這個(gè)項(xiàng)目頁(yè)面里沒有任何內(nèi)容,也沒有評(píng)星。

其實(shí)Jakub Rozto il只是想隱藏HTTPie的組織文檔README。這是一份他前一周創(chuàng)建的文檔,但是還沒有機(jī)會(huì)往里面添加任何內(nèi)容。

而讓開發(fā)者走上錯(cuò)路的原因則是另一件毫不相關(guān)的事:就像他把README文檔隱藏了一樣,他把他個(gè)人的jakubroztocil/jakubroztocil用戶頁(yè)面也給隱藏了。

在涉及到檔案文件和托管項(xiàng)目的時(shí)候,GitHub的概念模型會(huì)把所有的用戶和組織都視為相似的實(shí)體。所以說,當(dāng)開發(fā)者只是想簡(jiǎn)簡(jiǎn)單單的隱藏文檔的時(shí)候,他不多注意時(shí)就很容易點(diǎn)擊錯(cuò)到「私密」按鈕。

這才導(dǎo)致了一切。

Jakub Rozto il一時(shí)糊涂,沒意識(shí)到,命名這個(gè)特殊的項(xiàng)目包含README的配置文檔有不一致的情況,并且對(duì)用戶和組織的名稱是不同的,一個(gè)是name/name,一個(gè)是name/.github。

這就是為什么他是把httpie/httpie搞成了隱藏,而不是httpie/.github。

但點(diǎn)擊時(shí)該有確認(rèn)窗口???難道不是嗎?!

的確,GitHub在這時(shí)候會(huì)彈出確認(rèn)窗口。這個(gè)功能的設(shè)計(jì)本意確實(shí)是讓Jakub Rozto il這種狀況中的用戶別做傻事、點(diǎn)擊錯(cuò)誤選項(xiàng)。它的文本內(nèi)容會(huì)告訴你「將永久失去所有的項(xiàng)目評(píng)星和所有本托管項(xiàng)目的關(guān)注者」。

蠻嚇人的哦。

問題在于,一個(gè)完全沒有關(guān)注者和評(píng)星的項(xiàng)目,與一個(gè)更新了十余年、關(guān)注者與粉絲過5.5萬(wàn)的項(xiàng)目,Github的確認(rèn)提示窗口都是一樣的:「警告:這可能是一個(gè)有毀滅性潛質(zhì)的決定。」

說成白話,提示窗口的警告語(yǔ)等同于「你將爆破一棟建筑,如果內(nèi)有人居,住戶都會(huì)死。」

不過這個(gè)提示窗口沒有任何隨用戶變化的特定內(nèi)容,讓不專注的用戶擺脫無(wú)心的下意識(shí)自動(dòng)模式。這種用戶很容易讀混這些警示語(yǔ),以為建筑里沒有人。

一個(gè)價(jià)值5.4萬(wàn)個(gè)評(píng)星的問題:下圖里兩個(gè)警告窗口的對(duì)話,哪個(gè)在針對(duì)初學(xué)菜鳥自己決定刪掉也沒大損失的項(xiàng)目,哪個(gè)又是在針對(duì)一個(gè)逾時(shí)十年、關(guān)注者形成可觀社群的項(xiàng)目?

提示窗的對(duì)話文本里應(yīng)該有更多的隨不同項(xiàng)目背景變動(dòng)的內(nèi)容,比如在Jakub Rozto il這個(gè)項(xiàng)目上彈出時(shí)就該有「你將干掉5.5萬(wàn)關(guān)注者!」的文本。那肯定會(huì)讓Jakub Rozto il停下來細(xì)看的。

你只是把項(xiàng)目改成私密了,可以再改回來嘛

Jakub Rozto il一開始也是這么想的。

大家可以想見Jakub Rozto il點(diǎn)擊回到「組織」頁(yè)面時(shí)的困惑:不僅README文檔是空白的,整個(gè)非常受歡迎的托管項(xiàng)目也無(wú)處可尋。

片刻之后,Jakub Rozto il意識(shí)到發(fā)生了什么事。所以Jakub Rozto il點(diǎn)擊按鈕回到托管項(xiàng)目的設(shè)置頁(yè),來重新將其重新設(shè)置為公開。但在整整半個(gè)小時(shí)的努力后,GitHub仍然不允許Jakub Rozto il做到這點(diǎn)。

如果你在疑惑為什么耗時(shí)是這么長(zhǎng),那是因?yàn)镚itHub花了這么長(zhǎng)的時(shí)間,來級(jí)聯(lián)式全部刪除了Jakub Rozto il項(xiàng)目十年來累計(jì)的關(guān)注者。而且項(xiàng)目開發(fā)者沒有辦法阻止這個(gè)過程。

Jakub Rozto il所能做的就是開始給GitHub技術(shù)支持部門寫電郵、刷新頁(yè)面、并等待關(guān)注數(shù)達(dá)到零,然后Jakub Rozto il才能再次將項(xiàng)目頁(yè)面設(shè)為公開。

為何GitHub不自行恢復(fù)這個(gè)項(xiàng)目?!

GitHub顯然有托管在其上的開源軟件項(xiàng)目的備份,并且確實(shí)能消除意外將托管項(xiàng)目誤改為私密權(quán)限所造成的損害。

GitHub團(tuán)隊(duì)自己就曾不小心將GitHub桌面應(yīng)用程序的托管頁(yè)面設(shè)為私有一次。他們?cè)趲讉€(gè)小時(shí)內(nèi)為自己恢復(fù)了一切。

以下是 GitHub前CEO對(duì)情況的解釋:早上有開發(fā)人員誤操作了。權(quán)限改回來是無(wú)法直接回復(fù)項(xiàng)目評(píng)星的,所以開發(fā)者們用數(shù)據(jù)備份整個(gè)完全還原了項(xiàng)目,就這樣。

然而,在Jakub Rozto il這次的事件中,GitHub拒絕這樣做,理由是會(huì)產(chǎn)生不良副作用和額外的資源耗費(fèi)。

Jakub Rozto il甚至表示愿為所耗費(fèi)的任何資源對(duì)GitHub提供經(jīng)濟(jì)補(bǔ)償。但遺憾的是,他們拒絕了。除了在平臺(tái)上恢復(fù)最悠久和最受歡迎的軟件項(xiàng)目及關(guān)注者社區(qū)之外,GitHub似乎還有其他優(yōu)先偏好。

所以問題的答案很不幸地非常明顯:GitHub會(huì)恢復(fù)權(quán)限誤設(shè)為私密的開源軟件項(xiàng)目,只要哪個(gè)項(xiàng)目是自己的就好。至于社區(qū)里其他人的項(xiàng)目嘛,自求多福吧,頂多給你個(gè)安慰性的推特回復(fù)。

吸取的教訓(xùn)

聰明人從不浪費(fèi)任何一次挫折。開發(fā)者們現(xiàn)在的選擇余地很小,但的確能學(xué)到好幾條很值得分享的教訓(xùn):

教訓(xùn)1:UI/UX設(shè)計(jì)原則

展示,而非告知。將確認(rèn)選項(xiàng)的對(duì)話窗口設(shè)計(jì)為不需要用戶多想的風(fēng)格。

當(dāng)用戶要破壞/放棄某項(xiàng)目時(shí),警示窗口不應(yīng)將選項(xiàng)用抽象文本描述為潛在場(chǎng)景,這樣需要讓用戶將文本敘述場(chǎng)景轉(zhuǎn)化為直觀的精神印象,然后才會(huì)權(quán)衡。

當(dāng)主要選項(xiàng)的副作用是級(jí)聯(lián)式刪除時(shí),更該如此。

開發(fā)者們現(xiàn)在把HTTPie桌面版的「刪除」按鈕設(shè)計(jì)成這樣了

而且,不消說的是提示窗文本得反映潛在選項(xiàng)后果和副作用的嚴(yán)重性。當(dāng)沒有副作用時(shí),對(duì)話框就不該有大塊文本。否則的話,用戶的注意力會(huì)很快被磨鈍、不會(huì)放在應(yīng)有的選項(xiàng)上。

教訓(xùn)2:數(shù)據(jù)庫(kù)設(shè)計(jì)原則

盡量導(dǎo)入軟刪除選項(xiàng)。人都會(huì)犯錯(cuò)的,所以應(yīng)該盡可能遲滯硬刪除過程,給用戶挽回空間。

教訓(xùn)3:與GitHub的關(guān)系

這次事故的確是開發(fā)者一方的人為無(wú)意失誤,而且GitHub也明確表態(tài)他們無(wú)法定義務(wù)要幫助開發(fā)者們恢復(fù)項(xiàng)目。

所以,逾時(shí)十年的互惠互利關(guān)系最終被GitHub的服務(wù)條款與律師給定性了。開源軟件人以為自己跟GitHub有更深厚情誼的話,純屬天真。

畢竟,GitHub有違開源精神的行跡已經(jīng)不新鮮了,除非有公眾意見的怒潮,他們一般不會(huì)改變決策。

而且他們的母公司微軟,即使現(xiàn)在表面歡迎開源了,也并不是個(gè)真正名聲上好的企業(yè)。

終局

盡管Jakub Rozto il的GitHub頁(yè)面與評(píng)星化灰了,HTTPie項(xiàng)目仍然在蓬勃發(fā)展。

一開始只是個(gè)業(yè)余小項(xiàng)目的HTTPie,現(xiàn)在成為了專業(yè)公司,而且開發(fā)者們的團(tuán)隊(duì)在不斷將HTTPie拓展成一個(gè)令用戶滿意預(yù)約的API開發(fā)平臺(tái)。

HTTPie的網(wǎng)頁(yè)版與桌面版的beta版,用戶反饋良好,在接下來的數(shù)周內(nèi)將會(huì)面向大眾發(fā)售。

參考資料:

https://httpie.io/blog/stardust

關(guān)鍵詞: 5 4萬(wàn)顆星清零GitHub上10年心血 開發(fā)者誤操作項(xiàng)目消失

 

網(wǎng)站介紹  |  版權(quán)說明  |  聯(lián)系我們  |  網(wǎng)站地圖 

星際派備案號(hào):京ICP備2022016840號(hào)-16 營(yíng)業(yè)執(zhí)照公示信息版權(quán)所有 郵箱聯(lián)系:920 891 263@qq.com