- เมื่อไม่นานมานี้มีเสียงวิจารณ์ต่อการใช้งาน ซอฟต์แวร์โอเพนซอร์สที่สร้างโดยนักพัฒนาชาวรัสเซีย
- ในความเป็นจริง โครงการโอเพนซอร์สเกือบทั้งหมดส่วนใหญ่ ถูกดูแลโดยผู้ดูแลเพียงคนเดียว
- ไม่ใช่แค่ NPM แต่รวมถึงหลายอีโคซิสเต็ม ที่มีกรณีจำนวนมากซึ่งผู้ดูแลเพียงคนเดียวจัดการแพ็กเกจยอดนิยม
- ปัญหาของโครงสร้างนี้คือ ภาระที่หนักเกินไปของผู้ดูแลเพียงคนเดียว และความเสี่ยงด้านซัพพลายเชน
- แก่นแท้ของปัญหาไม่ใช่เรื่องสัญชาติ แต่คือ ทรัพยากรและการสนับสนุนที่ไม่เพียงพอในความเป็นจริง
บทนำ: โอเพนซอร์สกับข้อถกเถียงล่าสุด
- The Register เผยแพร่บทความที่ตั้งคำถามต่อการพึ่งพาของกระทรวงกลาโหมสหรัฐต่อ ยูทิลิตีโอเพนซอร์สที่สร้างโดยนักพัฒนาชาวรัสเซีย
- นักพัฒนาโอเพนซอร์สคนดังกล่าวกำลังเผชิญกับการโจมตีที่ไม่เป็นธรรม
- เนื้อหาในบทความสะท้อนความเข้าใจผิดเกี่ยวกับความเป็นจริงของโอเพนซอร์ส และชี้ให้เห็นข้อจำกัดของแนวทางแบบนี้
ความเป็นจริงของโอเพนซอร์ส: โครงสร้างแบบ 'คนคนเดียว'
- ตามข้อมูล โครงการโอเพนซอร์สเกือบทั้งหมดถูกดูแลโดยคนเพียงคนเดียว
- โครงการ ecosyste.ms รวบรวมข้อมูลโครงการโอเพนซอร์สราว 11.8 ล้านโครงการ
- ในจำนวนนี้ราว 7 ล้านโครงการเป็นโครงการที่มีผู้ดูแลเพียงคนเดียว
- อีกประมาณ 4 ล้านโครงการไม่ทราบจำนวนผู้ดูแล แต่คาดว่าจำนวนมากก็น่าจะมีเพียงคนเดียวเช่นกัน
- มีเพียงส่วนน้อยมากของโครงการเท่านั้นที่มี ผู้ดูแลนับร้อยคน
แม้แต่โครงการยอดนิยมก็ไม่ใช่ข้อยกเว้น
- หลายคนคิดว่า "โอเพนซอร์สที่สำคัญหรือโครงการยอดนิยมคงมีหลายคนดูแล" แต่ในความเป็นจริง อีโคซิสเต็มหลักอย่าง NPM ก็ไม่ได้ต่างกัน
- ภายในอีโคซิสเต็ม NPM มี โครงการที่มีผู้ดูแลเพียงคนเดียวมากกว่า 4 ล้านโครงการ
- แม้ในบรรดาแพ็กเกจ NPM ที่มียอดดาวน์โหลดเกิน 1 ล้านครั้งต่อเดือน ประมาณครึ่งหนึ่งก็ยังดำเนินการโดยผู้ดูแลเพียงคนเดียว
- หากเพิ่มเกณฑ์ยอดดาวน์โหลดเป็น 1 พันล้านครั้ง จะมีความแตกต่างอยู่บ้าง แต่ก็ยังคงมีแพ็กเกจที่มีผู้ดูแลเพียงคนเดียวอยู่
- ผู้คนที่ดูแล 4 ล้านโครงการแบบผู้ดูแลเดี่ยวใน NPM มีจำนวนจริง ประมาณ 9 แสนคน (หมายความว่า 1 คนรับผิดชอบหลายโครงการ)
แก่นแท้ของปัญหา: ไม่ใช่ประเทศ แต่คือการขาดแคลนทรัพยากร
- ขนาดทางเศรษฐกิจของโอเพนซอร์สคือ รากฐานที่มีมูลค่าระดับหลายล้านล้านดอลลาร์ (อ้างอิงงานวิจัยของ Harvard, 8.8 ล้านล้านดอลลาร์)
- โครงการแบบผู้ดูแลเดี่ยวส่วนใหญ่ ขาดทรัพยากร และมีความเสี่ยงด้านซัพพลายเชน
- ความเสี่ยงที่ใหญ่ที่สุด ไม่ใช่ประเทศใดประเทศหนึ่ง แต่คือ 'ผู้ดูแลเพียงคนเดียว' ที่ทำงานหนักเกินไปและไม่ได้รับค่าตอบแทนอย่างเหมาะสม
- การที่สื่อหรือฝ่ายต่าง ๆ พุ่งเป้าไปที่ผู้ดูแลรายบุคคลไม่ใช่วิธีแก้ปัญหา
บทสรุปและประเด็นที่ควรลงมือทำ
- สาเหตุของปัญหาปัจจุบันอยู่ที่โครงสร้างแบบผู้ดูแลเดี่ยว และการมุ่งความสนใจไปที่ประเทศนั้นไม่มีความหมาย
- การทำให้ผู้ดูแลรายบุคคลกลายเป็นปีศาจหรือพยายามตรวจจับพวกเขา ไม่ใช่วิธีแก้ปัญหา
- ปัญหานี้มีความซับซ้อนและยังไม่มีทางออกที่แก้ได้ทันที
- แทนที่จะชี้ตัวและกล่าวโทษผู้ดูแลเดี่ยว ควรหันมาพิจารณา ปัญหาเชิงโครงสร้างและแนวทางการสนับสนุน
1 ความคิดเห็น
ความคิดเห็นใน Hacker News
รู้สึกว่ามีความเข้าใจผิดเกี่ยวกับประเด็นนี้ในชุมชนซอฟต์แวร์อยู่มาก จริงๆ แล้วความเสี่ยงด้านซัพพลายเชนดูจะเป็นปัญหาเรื่องธรรมาภิบาลมากกว่าจะเป็นปัญหาซอฟต์แวร์หรือวิศวกรรม
ต่อให้ไม่มีใครมีเจตนาร้าย โปรเจกต์ก็อาจเกิดความเสี่ยงด้านซัพพลายเชนได้ และแต่ละคนที่ประเมินความเสี่ยงด้านซัพพลายเชนก็มีมุมมองและเกณฑ์ด้านความปลอดภัยต่างกัน
DoD (กระทรวงกลาโหมสหรัฐฯ) มองความเสี่ยงจากมุมที่ต่างจากนักพัฒนาทั่วไปโดยสิ้นเชิง และหลายโปรเจกต์ที่มีคนดูแลคนเดียวก็ถือว่าเป็นความเสี่ยงเพียงเพราะมีผู้รับผิดชอบแค่คนเดียว
ถ้า ‘bus factor’ เท่ากับ 1 นั่นก็เป็นความเสี่ยงด้านซัพพลายเชนในตัวมันเอง
คนส่วนใหญ่คงไม่ได้คิดถึงสถานการณ์สงครามตอนเลือกแพ็กเกจ แต่กองทัพอาจต้องคำนึงถึงเรื่องนั้น
ถ้าเกิดสงครามขึ้น โปรเจกต์โอเพนซอร์สที่ปกติบริหารกันอย่างอิสระก็อาจเปลี่ยนสถานการณ์ไปอย่างรวดเร็ว
หลายประเทศก็มีกฎหมายที่บังคับให้ภาคเอกชนหรือโปรเจกต์ส่วนบุคคลต้องให้ความร่วมมือในช่วงสงครามจริงๆ ดังนั้นจึงมีหน่วยงานอย่าง DoD ที่นับเรื่องแบบนี้เป็นความเสี่ยงด้านความปลอดภัยด้วย
คงไม่ดำเนินการในภาวะสงครามแบบคิดว่า "ถ้ามีอีกสักคนที่เราไม่ไว้ใจเลยมาช่วยก็คงดี"
เคยมีข้อมูลว่าบน NPM มีโปรเจกต์แบบคนเดียวดูแลอยู่ 4 ล้านโปรเจกต์ และมีคนราว 9 แสนคนที่ดูแลโปรเจกต์เหล่านั้น เลยสงสัยว่านี่เป็นประเด็นสำคัญมากจริงหรือเปล่า
คือมูลค่าทางเศรษฐกิจของโอเพนซอร์ส (Harvard ประเมินไว้ที่ 8.8 ล้านล้านดอลลาร์) ส่วนใหญ่ถูกสร้างโดย "โปรเจกต์คนเดียวดูแล" และแทบไม่มีใครในนั้นได้รับทรัพยากรสนับสนุนอย่างเหมาะสม
ถ้าพูดถึงความเสี่ยงด้านซัพพลายเชน สิ่งที่อันตรายจริงๆ คือผู้ดูแลคนเดียวที่ค่าตอบแทนต่ำและทำงานหนักเกินไป
คนคนนั้นมาจากประเทศไหนจริงๆ แล้วอาจไม่ใช่ประเด็นสำคัญนัก
สงสัยว่ามีสถิติไหมว่าเมื่อผู้ดูแลคนเดียวประสบอุบัติเหตุแบบกะทันหันหรือเลิกทำโปรเจกต์ไปแล้วจะเกิดอะไรขึ้น
ถ้ามีข้อมูลมากขนาดนี้ก็น่าจะเอาไปวิจัยได้
อยากรู้ว่าจะมีนักพัฒนาคนใหม่มารับช่วงต่อ มีโปรเจกต์คล้ายกันมาแทน หรือมันหายไปเลย
ในความเป็นจริง สิ่งที่พบบ่อยกว่าการโดนรถชนคือ "ผู้ดูแลหมดความสนใจหรือไม่มีเวลาแล้วจึงเลิกทำ"
สถานการณ์ที่เกิดขึ้นบ่อยในกรณีนี้คือ
จุดแข็งของโอเพนซอร์สคือ ต่อให้ผู้สร้างหายไป เปลี่ยนไปในทางแย่ หรือเปลี่ยนไลเซนส์ ก็ยังมีคน fork เพื่อรักษามันไว้ได้
ตรงกันข้ามกับซอฟต์แวร์เชิงพาณิชย์ ไม่ว่าผู้สร้างจะเป็นบริษัทหรือบุคคล ถ้าหายไปหรือเปลี่ยนเนื้อหาก็จบเลย
อย่างมากก็ต้องไปหาผลิตภัณฑ์ทดแทน
นี่ก็เป็นอีกเหตุผลว่าทำไมผมถึงไม่ได้บริหาร Netflix
สุดท้ายแล้วมันขึ้นกับจำนวนผู้ใช้ ความซับซ้อนของ codebase และการมีหรือไม่มีตัวเลือกทดแทน
เป็นเรื่องราวที่ประหลาดกว่าการ "โดนรถบัสชน" มาก และสุดท้ายโปรเจกต์นั้นก็สลายไป
แม้แต่โปรเจกต์ที่มีคนดูแลมากกว่าสองคน ส่วนใหญ่แล้ว commit จริงๆ จำนวนมากก็มักมาจากคนเพียงคนเดียวอยู่ดี
ลิงก์ที่เกี่ยวข้อง: https://github.com/11ty/eleventy/graphs/contributors
น่าเสียดายที่แค่เช็กความเคลื่อนไหวก็น่าจะเห็นได้ทันทีแล้วว่าครึ่งหนึ่งของโปรเจกต์ทั้งหมดมีผู้ดูแล 0 คน
หมายถึงปล่อยไว้เฉยๆ ได้เลยโดยไม่ต้องทำความสะอาด จูน หรือปรับแก้อะไร
กลับกัน ปัญหาอาจอยู่ที่การอัปเดต ไม่ใช่ที่ตัวโปรเจกต์เอง
ความจริงที่ว่า DoD ใช้ node กลับทำให้กังวลยิ่งกว่า
รู้สึกว่าแพลตฟอร์มอย่าง npm มีพื้นผิวการโจมตีที่กว้างเกินไป
DoD เป็นหนึ่งในองค์กรที่ใหญ่ที่สุดในโลก จึงมีงานอย่างเว็บส่งจดหมายข่าวหรือหน้าเว็บสำหรับจองทัวร์ค่ายลูกเสือด้วย
งานแบบนั้นใช้ node ก็คงไม่เป็นไร
ระบบพวกนี้ทำงานแยกจากระบบสำคัญอย่างการยิงขีปนาวุธ และต่อให้หน้าเว็บสมัครกิจกรรมถูกทำให้เสียหายก็ไม่ได้เป็นปัญหาใหญ่อะไร
คิดว่าโปรเจกต์ GitHub แบบคนเดียวดูแลจำนวนมากจริงๆ แล้วก็เป็นแค่การทดลองส่วนตัวหรือของเล่นแนว "hello world"
ไม่แน่ใจว่า npm เป็นยังไง แต่ใน PyPI ก็มีตัวอย่างแบบนี้เต็มไปหมด
ลองกด ‘browse projects’ เองแล้วเจอแบบนี้: https://pypi.org/project/helloworld-eduardo/
ต่อให้เมาแค่ไหนก็คงไม่มีใครคิดจะเอาของแบบนี้ไปใช้ในโปรดักชัน
DoD เก่งมากในการได้ของฟรีมา แล้วโน้มน้าวทุกคนว่า "ทุกฝ่ายได้ประโยชน์ร่วมกัน" ก่อนสุดท้ายจะไปจ้างผู้รับเหมาภายนอกด้วยเงินอยู่ดี
มีการพูดถึงว่า "แพ็กเกจที่มีผู้ดูแลคนเดียวแต่มียอดดาวน์โหลดเกิน 1 พันล้านครั้ง" เลยสงสัยว่านั่นต้องการจะสื่ออะไร
เคยได้ยินเรื่องดีๆ มากมายเกี่ยวกับผลงานที่คนชื่อ Linus สร้างไว้ และก็น่าจะเคยใช้มันมามากพอสมควร
เขามาจากประเทศที่มีพรมแดนติดกับรัสเซีย เลยอดสงสัยไม่ได้ว่าต้องกังวลเรื่องนี้ด้วยไหม
ผมทำโอเพนซอร์สมาหลายสิบปี ส่วนใหญ่ก็ทำคนเดียวหรือบางครั้งก็ตั้งทีมอาสาสมัครขึ้นมา
ใครที่เคยทำงานกับทีมอาสาสมัครคงรู้ว่ามันไม่ง่ายเลย
แน่นอนว่าไม่ถึงกับเป็นไปไม่ได้ แต่ก็ไม่ได้เวิร์กบ่อยอย่างที่คนคิด
เวลามันเวิร์ก ส่วนใหญ่มักมี "BDFL (ผู้นำแบบเผด็จการโดยความยินยอม)" หรือไม่ก็ทุกคนขยับไปในทิศทางเดียวกันตามเป้าหมายเดียว
สำหรับผม ส่วนใหญ่จะเป็นแบบหลัง
พ่อของเขาเองก็เคยใช้ชีวิตอยู่ในมอสโกหลายปี