for-real - GitHub ऑर्गनाइज़ेशन को गलती से मिटाने के बाद बना delete-protection Chrome extension
(github.com/bssm-oss)टेस्ट रेपो हटाने की कोशिश में मैंने 9 लोगों वाले GitHub ऑर्गनाइज़ेशन को पूरा का पूरा मिटा दिया।
मैं Discord webhook bot का end-to-end टेस्ट कर रहा था, और मुझे लगा कि मैं टेस्ट रेपो की Settings में हूँ। मैंने Danger Zone तक स्क्रॉल किया और "Delete this repository" दबा दिया। डिलीट करने के तुरंत बाद जिस पेज पर redirect हुआ वह रेपो 404 नहीं बल्कि ऑर्गनाइज़ेशन 404 था, और तभी मुझे समझ आया कि मैं पूरे समय ऑर्गनाइज़ेशन Settings में था।
सबसे बड़ी गलती यह थी कि मैंने confirmation text ठीक से पढ़ा ही नहीं। मुझे पूरा यकीन था कि जो हटेगा वह टेस्ट रेपो ही होगा, इसलिए मैंने बस copy-paste कर दिया, लेकिन असल में input field में ऑर्गनाइज़ेशन का नाम था। एक बार copy-paste किया और वह सीधा पास हो गया। रेपो, issues, PR, discussions, CI history — सब कुछ एक ही बार में गायब हो गया।
मैंने तुरंत टीममेट्स को KakaoTalk पर emergency message भेजा और GitHub support टीम को mail किया, फिर 7 business days इंतज़ार किया। उस दौरान न push हो सकता है, न issues देखे जा सकते हैं।
लेकिन जितना मैंने सोचा, उतना यह अजीब लगा।
चाहे रेपो delete हो या ऑर्गनाइज़ेशन delete, recovery path एक ही है: "support टीम को mail"। लेकिन ऑर्गनाइज़ेशन में दर्जनों members और दर्जनों repos एक साथ मिट सकते हैं, फिर भी UI ने रेपो deletion flow को लगभग वैसे का वैसा reuse किया, copy-paste भी चल गया, और destructive impact की कोई खास warning भी नहीं है। यानी 100 गुना ज़्यादा चीज़ें मिटा सकने वाले button को भी उतने ही कमजोर guardrails से protect किया गया है।
इसीलिए मैंने for-real बनाया।
अगर registered रेपो/ऑर्गनाइज़ेशन में delete button दबाया जाए, तो यह click intercept करता है, और 20-character random code खुद टाइप करने पर ही 5 मिनट के लिए unlock होता है। copy-paste blocked है। अगर आप सच में delete करना चाहते हैं, तो बस टाइप कर दीजिए।
मुझे पता है कि GitHub पहले से Danger Zone के जरिए warning देता है। लेकिन अगर इससे मेरे जैसी गलती एक भी व्यक्ति से रुक सके, तो मुझे लगता है कि थोड़ा-सा extra समय पूरी तरह वाजिब है।
अभी यह Web Store review में है, इसलिए फिलहाल केवल unpacked install ही संभव है। install guide और source रेपो में हैं। feedback का स्वागत है।
10 टिप्पणियां
सुना था कि कोई YouTube चैनल हटाने की कोशिश में पूरा Google अकाउंट ही डिलीट कर बैठा था (अच्छी बात है कि बाद में रिकवर हो गया)।
अगर उस व्यक्ति के सामने भी ऐसी प्रक्रिया होती, तो क्या ऐसी त्रासदी रोकी जा सकती थी...?
Delete this repository,Delete this organization— इन्हें भी कोई कन्फ्यूज़ कर सकता है, यह भी कमाल है।सोचने से ज़्यादा Settings UI एक-दूसरे से मिलता-जुलता दिखता है, इसलिए जब मैं थोड़ा अनमना होकर यह कर रहा था तो काफ़ी कन्फ्यूज़ हो गया;;
GitHub ने इसे Danger Zone में अलग तो रखा है, लेकिन आखिरकार human error तो उसके अंदर भी हो ही जाती है,,
सावधान रहना पड़ेगा..
https://httpie.io/blog/stardust पहले भी इसी तरह की वजह से 54k star रीसेट हो जाने की घटना हुई थी, और तब भी UI समस्या की ओर इशारा किया गया था, लेकिन देखते ही देखते 4 साल बीत गए।
रीढ़ में सिहरन दौड़ गई होगी। अपना अनुभव साझा करना और समस्या को रोकने का समाधान पेश करना वाकई शानदार है.
लगता है कि इतनी बड़े पैमाने की deletion के लिए कोई grace period जैसी व्यवस्था होनी चाहिए। कंप्यूटर के recycle bin की तरह, असली deletion कुछ दिनों बाद हो ताकि उसे फिर से restore करने का कोई तरीका मौजूद रहे।
उफ़, यह तो सच में डराने वाला है..
लगता है सिर्फ copy-paste रोक देना ही काफ़ी होगा।
मैंने भी बिना सोचे-समझे कॉपी-पेस्ट करके इसे उड़ा दिया था.. इसलिए इस प्रोजेक्ट में कॉपी-पेस्ट भी रोक रखा है। पोस्ट पढ़ने के लिए धन्यवाद
अच्छा प्रोग्राम साझा करने के लिए धन्यवाद। अच्छा होगा अगर GitHub अपनी तरफ़ से संगठन या अकाउंट डिलीट होने को लगभग 24-72 घंटे तक टाल दे।