for-real - ส่วนขยาย Chrome กันลบที่สร้างขึ้นหลังเผลองค์กร GitHub หายไปทั้งก้อน
(github.com/bssm-oss)ผมตั้งใจจะลบรีโปทดสอบ แต่กลับเผลองค์กร GitHub ที่มีสมาชิก 9 คนหายไปทั้งก้อน
ตอนนั้นกำลังทำ end-to-end test ให้บอต Discord webhook อยู่ และคิดว่าตัวเองอยู่ใน Settings ของรีโปทดสอบ เลยเลื่อนไปที่ Danger Zone แล้วกด "Delete this repository" หลังลบเสร็จ หน้าที่รีไดเร็กต์ไปไม่ใช่หน้า 404 ของรีโป แต่เป็นหน้า 404 ขององค์กร ตอนนั้นเองผมถึงได้รู้ว่าตลอดเวลาที่ผ่านมา ผมอยู่ใน Settings ขององค์กร
จุดพังคือผมไม่ได้อ่านข้อความยืนยันให้ดี ผมเชื่อไปเองว่าสิ่งที่จะลบต้องเป็นรีโปทดสอบแน่ ๆ เลยก๊อปปี้วางไปเลย และสิ่งที่อยู่ในช่องกรอกจริง ๆ คือชื่อองค์กร วางครั้งเดียวก็ผ่านทันที รีโป, issue, PR, discussion และประวัติ CI หายไปหมดในทีเดียว
ผมรีบส่ง KakaoTalk หาทีมด่วน แล้วก็ส่งอีเมลหา GitHub support จากนั้นต้องรอ 7 วันทำการ ระหว่างนั้นทั้ง push และดู issue ก็ทำไม่ได้
แต่ยิ่งคิดก็ยิ่งแปลก
ไม่ว่าจะเป็นการลบรีโปหรือการลบองค์กร เส้นทางการกู้คืนก็เหมือนกันคือ "ส่งอีเมลหาทีม support" แต่ฝั่งองค์กรสามารถทำให้สมาชิกหลายสิบคนและรีโปหลายสิบอันหายไปทั้งก้อน ทว่า UI กลับนำ flow การลบรีโปมาใช้ซ้ำแบบเดิมทุกอย่าง ทั้งยังก๊อปปี้วางได้ และไม่มีคำเตือนเรื่องความเสียหายเลย ปุ่มที่สามารถทำลายได้มากกว่า 100 เท่า กลับถูกป้องกันด้วย guardrail ที่อ่อนพอ ๆ กัน
เลยทำ for-real ขึ้นมา
ถ้ากดปุ่มลบในรีโป/องค์กรที่ลงทะเบียนไว้ มันจะดักคลิกไว้ก่อน และต้องพิมพ์รหัสสุ่ม 20 ตัวด้วยตัวเองถึงจะปลดล็อกได้ 5 นาที การก๊อปปี้วางถูกบล็อกไว้แล้ว ถ้าตั้งใจจริงก็พิมพ์เอาได้
ผมรู้ว่า GitHub ก็มีคำเตือนใน Danger Zone อยู่แล้ว แต่ถ้ามันช่วยกันไม่ให้มีแม้แต่คนเดียวทำพลาดแบบผมได้ ผมคิดว่าเสียเวลาเพิ่มอีกนิดก็คุ้มค่า
ตอนนี้ยังติดการตรวจสอบใน Web Store เลยติดตั้งได้แบบ unpacked only คู่มือติดตั้งและซอร์สโค้ดอยู่ในรีโป ยินดีรับ feedback
10 ความคิดเห็น
เคยได้ยินเรื่องว่ามีคนพยายามลบช่อง YouTube แต่ดันลบบัญชี Google ไปทั้งบัญชีแทนด้วยครับ (โชคดีที่กู้คืนได้)
ถ้าตอนนั้นมีขั้นตอนแบบนี้ เหตุการณ์น่าเศร้าแบบนั้นก็คงป้องกันได้ไหมนะ...?
Delete this repository, Delete this organization แบบนี้ก็สับสนกันได้สินะ
หน้าตา UI ของ Settings คล้ายกันกว่าที่คิด เลยพอทำตอนเผลอ ๆ ก็สับสนได้เหมือนกันนะ;;
ถึง GitHub จะแยกไว้ใน Danger Zone แล้ว แต่สุดท้าย human error ก็ยังเกิดขึ้นได้แม้อยู่ในนั้น,,
ต้องระวังนะ..
https://httpie.io/blog/stardust ก่อนหน้านี้ก็เคยมีกรณีที่จำนวน 54k star ถูกรีเซ็ตด้วยเหตุผลคล้ายกัน ตอนนั้นก็มีการชี้ปัญหาเรื่อง UI เช่นกัน ไม่น่าเชื่อว่าเวลาผ่านมาแล้วถึง 4 ปี
คงขนลุกไม่น้อยเลยครับ ดูยอดเยี่ยมมากที่คุณแบ่งปันประสบการณ์และเสนอวิธีแก้ปัญหาเพื่อป้องกันไม่ให้เกิดขึ้นอีก
การลบครั้งใหญ่ขนาดนี้น่าจะควรมีช่วงผ่อนผันอะไรสักอย่างนะครับ เหมือนถังขยะของคอมพิวเตอร์ที่ให้การลบจริงเกิดขึ้นหลังจากผ่านไปหลายวัน เพื่อให้มีทางเลือกสำหรับกู้คืนกลับมาได้อีกครั้ง
โอย ตกใจหมดเลย..
ดูเหมือนว่าแค่ป้องกันการคัดลอกวางก็น่าจะพอแล้ว
ผมเองก็ก๊อปปี้วางแบบไม่ทันคิดจนลบหายเหมือนกัน... ในโปรเจกต์นี้เลยใส่การป้องกันการก๊อปปี้วางไว้ด้วย ขอบคุณที่อ่านครับ
ขอบคุณที่แชร์โปรแกรมดี ๆ ครับ/ค่ะ คงจะดีไม่น้อยถ้าทาง GitHub เองจะหน่วงเวลาการลบองค์กรหรือบัญชีไว้สักประมาณ 24-72 ชั่วโมง