สภาพแวดล้อมทางสังคมของซอฟต์แวร์โอเพนซอร์ส

มีข้อเขียนเกี่ยวกับเรื่องนี้จริงๆ ว่าการแฮ็กที่ดีที่สุด เริ่มจากวิธีส่วนตัวในการแก้ปัญหาที่ตัวผู้เขียนพบในชีวิตประจำวัน และแพร่หลายออกไป เพราะปรากฏว่าเป็นปัญหาปกติที่ผู้ใช้จำนวนมากก็พบเช่นกัน เรื่องนี้นำเรากลับไปสู่กฏข้อที่ 1 ซึ่งกล่าวใหม่ในแบบที่มีประโยชน์ขึ้นได้ว่า:

18. การแก้ปัญหาที่น่าสนใจ เริ่มจากการค้นหาปัญหาที่คุณสนใจ

ซึ่งเหมือนที่เกิดกับ คาร์ล แฮร์ริส กับ popclient รุ่นแรกๆ และกับผมกับ fetchmail อย่างไรก็ดี เรื่องนี้เป็นที่เข้าใจกันมานานแล้ว แต่จุดที่น่าสนใจจริงๆ โดยเฉพาะในประวัติของลินุกซ์และ fetchmail ที่เราต้องศึกษา ก็คือขั้นต่อไปต่างหาก กล่าวคือ วิวัฒนาการของซอฟต์แวร์ในชุมชนผู้ใช้และผู้ร่วมพัฒนาที่มีขนาดใหญ่และตื่นตัวสูง

ในหนังสือ The Mythical Man-Month เฟรด บรูกส์ ตั้งข้อสังเกตว่า เวลาในการทำงานของโปรแกรมเมอร์นั้นทดแทนกันไม่ได้ การเพิ่มนักพัฒนาให้กับโครงการซอฟต์แวร์ที่ล่าช้าอยู่ จะทำให้มันยิ่งล่าช้ายิ่งขึ้น ดังที่เราได้กล่าวไปแล้ว เขาอ้างว่าความซับซ้อนและค่าโสหุ้ยในการสื่อสารของโครงการ จะเพิ่มขึ้นในอัตรากำลังสองของจำนวนนักพัฒนา ในขณะที่งานที่ได้ จะเพิ่มขึ้นเป็นลักษณะเส้นตรงเท่านั้น กฎของบรูกส์ได้รับการยอมรับโดยทั่วไปว่าเป็นความจริง แต่เราได้วิเคราะห์มาแล้วในบทความนี้ ถึงวิธีต่างๆ ที่กระบวนการพัฒนาแบบโอเพนซอร์สได้ทะลายข้อสมมุติต่างๆ ของกฎนี้ และถ้าว่ากันที่ผลในทางปฏิบัติ หากกฎของบรูกส์ครอบคลุมทั้งหมดแล้ว ลินุกซ์ก็คือสิ่งที่เป็นไปไม่ได้

หนังสืออมตะของ เจอรัลด์ เวนเบิร์ก ชื่อ จิตวิทยาของการเขียนโปรแกรมคอมพิวเตอร์ (The Psychology of Computer Programming) เสนอสิ่งที่เราเข้าใจเบื้องหลังได้ว่าเป็นการแก้ไขกฎของบรูกส์ครั้งสำคัญ ในการอภิปรายเกี่ยวกับ ``การเขียนโปรแกรมแบบไร้อัตตา'' เวนเบิร์กตั้งข้อสังเกตว่า ในหน่วยงานที่นักพัฒนาไม่มีการหวงห้ามโค้ด และยังเชิญชวนให้คนอื่นๆ ให้มาช่วยกันหาข้อผิดพลาด และจุดที่อาจจะพัฒนาต่อได้ จะมีการพัฒนาได้เร็วกว่าหน่วยงานอื่นๆ อย่างเห็นได้ชัด (เร็วๆ นี้ เทคนิค `extreme programming' ของ เคนต์ เบ็ก ที่ให้นักพัฒนาจับคู่กันดูโค้ดกันและกัน อาจเป็นความพยายามหนึ่งที่จะบังคับให้เกิดผลดังกล่าว)

บางที การเลือกใช้คำของเวนเบิร์ก อาจทำให้การวิเคราะห์ของเขาไม่ได้รับการยอมรับเท่าที่ควรจะเป็น บางคนอาจจะอมยิ้มเมื่อนึกถึงการบรรยายถึงแฮ็กเกอร์ในอินเทอร์เน็ตด้วยคำว่า ``ไร้อัตตา'' แต่ผมคิดว่าเหตุผลของเขานั้นดีเหลือเกิน โดยเฉพาะอย่างยิ่งในปัจจุบัน

ด้วยการใช้ประโยชน์จากผลของ ``การเขียนโปรแกรมแบบไร้อัตตา'' อย่างเต็มพิกัด วิธีการแบบตลาดสดได้บรรเทาผลของกฎของบรูกส์ลงอย่างมาก มันไม่ถึงกับทำลายหลักการเบื้องหลังของกฎของบรูกส์ลง แต่ด้วยจำนวนนักพัฒนาที่มากพอ และด้วยการสื่อสารที่สะดวก ผลของมันสามารถถูกกลบได้ด้วยปัจจัยตรงข้ามที่ไม่ได้มีลักษณะเป็นเชิงเส้น ซึ่งจะมองไม่เห็นจนกว่าจะเกิดเงื่อนไขดังกล่าวขึ้น เรื่องนี้ ก็คล้ายกับความสัมพันธ์ระหว่างฟิสิกส์แบบนิวตันและแบบไอน์สไตน์ กล่าวคือ ระบบเก่าก็ยังใช้การได้ที่ระดับพลังงานต่ำ แต่ถ้าคุณเพิ่มมวลและความเร็วมากพอ คุณก็จะพบเรื่องแปลกประหลาดอย่างการระเบิดแบบนิวเคลียร์ หรือลินุกซ์

ประวัติของยูนิกซ์ควรจะช่วยปูพื้นให้กับสิ่งที่เราเรียนรู้จากลินุกซ์ได้ (รวมทั้งสิ่งที่ผมได้ลงมือตรวจสอบผ่านการทดลองในขนาดที่เล็กลง ด้วยการเลียนแบบวิธีของไลนัสอย่างเจตนา [EGCS]) นั่นคือ ในขณะที่โดยเนื้อแท้แล้วการเขียนโค้ดยังคงเป็นกิจกรรมที่ต้องทำคนเดียวอยู่ แต่การแฮ็กที่สุดยอดจริงๆ กลับเกิดจากการควบคุมทิศทางความสนใจและพลังสมองของชุมชนทั้งหมด นักพัฒนาที่ใช้แค่สมองของตนเองในโครงการปิด กำลังจะถูกแซงโดยนักพัฒนาที่รู้วิธีสร้างสภาพแวดล้อมแบบเปิดเพื่อการวิวัฒน์ ที่ซึ่งผลตอบรับที่ช่วยสำรวจวิธีออกแบบที่เป็นไปได้ การสมทบโค้ด การชี้ข้อผิดพลาด และการปรับปรุงอื่นๆ จะมาจากคนเป็นร้อยๆ (หรืออาจเป็นพันๆ)

แต่โลกของยูนิกซ์สมัยก่อน กลับไม่สามารถใช้วิธีนี้ไปถึงจุดสูงสุดได้ ด้วยปัจจัยหลายประการ ปัจจัยหนึ่งก็คือข้อจำกัดทางกฎหมายของสัญญาอนุญาตแบบต่างๆ ความลับทางการค้า และความสนใจทางธุรกิจ นอกจากนี้ อีกปัจจัยหนึ่งที่เข้าใจได้ คืออินเทอร์เน็ตยังใช้การได้ไม่ดีพอในตอนนั้น

ก่อนที่อินเทอร์เน็ตจะมีราคาถูกอย่างทุกวันนี้ ได้มีชุมชนเล็กๆ ที่รวมตัวกันด้วยพื้นที่ทางภูมิศาสตร์บางกลุ่ม ซึ่งมีวัฒนธรรมที่สนับสนุนให้เกิดการเขียนโปรแกรมแบบ ``ไร้อัตตา'' ของเวนเบิร์ก และนักพัฒนาสามารถดึงดูดผู้อยากรู้อยากเห็นและผู้ร่วมพัฒนาที่มีทักษะจำนวนมากได้อย่างง่ายดาย ชุมชนอย่าง เบลล์แล็บ, แล็บ AI และ LCS ของ MIT, UC Berkeley เหล่านี้ได้กลายเป็นบ่อเกิดของนวัตกรรมระดับตำนานมากมาย และทุกวันนี้ชุมชนเหล่านี้ก็ยังคงแสดงศักยภาพอยู่

ลินุกซ์เป็นโครงการแรกที่สามารถใช้ โลกทั้งใบ เป็นแหล่งของพรสวรรค์ได้อย่างจงใจและประสบความสำเร็จ ผมไม่คิดว่ามันเป็นเรื่องบังเอิญ ที่ช่วงเวลาบ่มเพาะตัวของลินุกซ์ พอดีกันกับการเกิดของเครือข่ายใยแมงมุม (World Wide Web) และที่ลินุกซ์เริ่มเติบโตในระหว่างปี 1993–1994 ซึ่งตรงกับช่วงที่เกิดอุตสาหกรรมการให้บริการอินเทอร์เน็ต และเกิดการบูมของอินเทอร์เน็ตในความสนใจกระแสหลักของผู้คน ไลนัสเป็นคนแรกที่รู้วิธีเล่นกับกฎเกณฑ์ใหม่ๆ ที่อินเทอร์เน็ตได้สร้างขึ้น

แม้อินเทอร์เน็ตราคาถูก จะเป็นเงื่อนไขที่จำเป็นในการพัฒนาในแบบลินุกซ์ แต่ผมคิดว่าแค่สิ่งนี้อย่างเดียวยังไม่เพียงพอ ปัจจัยที่สำคัญอีกอย่างหนึ่งก็คือ การพัฒนาของรูปแบบความเป็นผู้นำ และประเพณีแห่งความร่วมมือต่างๆ ซึ่งทำให้ผู้พัฒนาสามารถดึงดูดผู้ร่วมพัฒนา และใช้ประโยชน์สูงสุดจากสื่ออย่างอินเทอร์เน็ต

แต่เป็นรูปแบบความเป็นผู้นำแบบไหน? และอะไรคือประเพณีต่างๆ ที่ว่า? สิ่งเหล่านี้ไม่สามารถได้มาจากการใช้อำนาจ หรือถึงแม้ว่ามันจะใช้ได้ แต่การเป็นผู้นำที่ใช้การบังคับ ก็ไม่สามารถสร้างผลลัพธ์อย่างที่เราเห็นอยู่ทุกวันนี้ได้ เวนเบิร์กยกคำกล่าวจากอัตชีวประวัติของ ปโยต์ อเล็กเซวิช โครพอตกิน (Pyotr Alexeyvich Kropotkin) อนาธิปัตย์ชาวรัสเซียในคริสต์ศตวรรษที่ 19 ในหนังสือ ความทรงจำของนักปฏิวัติ (Memoirs of a Revolutionist) ซึ่งเกี่ยวข้องกับเรื่องนี้อย่างมาก:

ด้วยความที่เติบโตมาในครอบครัวที่มีทาส ผมได้เข้าสู่ชีวิตที่กระฉับกระเฉงเหมือนๆ กับชายหนุ่มอื่นๆ ในยุคของผม ซึ่งมีความมั่นใจในความจำเป็นของการบังคับบัญชา การออกคำสั่ง การตำหนิ การลงโทษ และอะไรทำนองนี้ แต่เมื่อผมได้เริ่มบริหารบรรษัทอย่างจริงจัง และต้องติดต่อจัดการกับผู้คนซึ่งไม่ใช่ทาส ทั้งความผิดพลาดแต่ละครั้ง อาจจะนำไปสู่ความเสียหายอันใหญ่หลวง ผมก็ได้เริ่มตระหนักถึงความแตกต่างระหว่าง หลักแห่งการบังคับบัญชาและระเบียบวินัย กับ หลักแห่งการทำความเข้าใจขั้นพื้นฐานร่วมกัน หลักอันแรกใช้การได้ดีกับการเดินสวนสนามของทหาร แต่ไม่มีประโยชน์อะไรเลยในชีวิตจริง จุดหมายที่ตั้งไว้จะบรรลุได้ ก็ด้วยความทุ่มเทอย่างแข็งขัน จากเจตน์จำนงอันหลากหลายที่มีเป้าหมายร่วมกันเท่านั้น

``ความทุ่มเทอย่างแข็งขัน จากเจตน์จำนงอันหลากหลายที่มีเป้าหมายร่วมกัน'' คือสิ่งที่โครงการอย่างลินุกซ์ต้องการอย่างไม่ต้องสงสัย และไม่มีทางที่ ``หลักแห่งการบังคับบัญชา'' จะใช้ได้ผลกับเหล่าอาสาสมัครในสวรรค์ของอนาธิปัตย์ที่เราเรียกว่าอินเทอร์เน็ต การที่จะดำเนินงานและแข่งขันอย่างได้ผล เหล่าแฮ็กเกอร์ที่ต้องการจะเป็นผู้นำโครงการที่ต้องการความร่วมมือใดๆ จะต้องเรียนรู้วิธีที่จะสรรหาและกระตุ้นชุมชนที่สนใจจริง ในแบบที่กล่าวไว้อย่างหลวมๆ ใน ``หลักแห่งความเข้าใจกัน'' ของโครพอตกิน พวกเขาต้องเรียนรู้ที่จะใช้กฏของไลนัส [SP]

ก่อนหน้านี้ ผมได้กล่าวถึง ``ปรากฏการณ์เดลไฟ'' ในฐานะคำอธิบายที่พอจะใช้ได้สำหรับกฎของไลนัส แต่ระบบที่ปรับตัวได้ในทางชีววิทยาและเศรษฐศาสตร์ ก็น่าจะเป็นตัวเปรียบเทียบที่ดีเช่นกัน โลกของลินุกซ์มีลักษณะหลายๆ อย่างคล้ายคลึงกับตลาดเสรีหรือระบบนิเวศน์ ซึ่งประกอบด้วยกลุ่มของตัวกระทำที่เห็นแก่ตัว ที่พยายามหาทางที่จะได้ประโยชน์สูงสุด โดยในกระบวนการนั้น จะเกิดการจัดระเบียบที่มีการแก้ไขตัวเองแบบเป็นไปเอง ซึ่งจะมีผลแทรกซึมและมีประสิทธิภาพเกินกว่าที่การวางแผนจากส่วนกลางใดๆ จะทำได้ และที่นี่เองที่เราจะมองหา ``หลักแห่งความเข้าใจกัน''

``ฟังก์ชันอรรถประโยชน์'' ที่แฮ็กเกอร์ลินุกซ์พยายามจะทำให้ได้มากที่สุด ไม่ได้เกี่ยวกับเรื่องเศรษฐกิจ แต่เกี่ยวกับความพึงพอใจส่วนตัวและชื่อเสียงในหมู่แฮ็กเกอร์ด้วยกัน (บางคนอาจเรียกแรงจูงใจของพวกเขาเหล่านั้นว่า ``ความเห็นแก่ประโยชน์ส่วนรวม'' โดยมองข้ามความจริงที่ว่า ``ความเห็นแก่ประโยชน์ส่วนรวม'' ก็คืออีกรูปแบบหนึ่งของความพึงพอใจส่วนตัวของ ``ผู้ที่เห็นแก่ประโยชน์ส่วนรวม'') จะว่าไปแล้ว วัฒนธรรมอาสาสมัครในลักษณะนี้ ก็ไม่ใช่เรื่องพิเศษอะไร มีอีกกลุ่มหนึ่งที่ผมได้เข้าร่วมมานานแล้ว คือกลุ่มผู้รักนิยายวิทยาศาสตร์ กลุ่มนี้ต่างจากกลุ่มแฮกเกอร์ตรงที่พวกเขาตระหนักใน ``อีโก้บู'' (egoboo มาจาก ego-boosting หรือการเพิ่มชื่อเสียงของบุคคลในหมู่คนคลั่งไคล้สิ่งเดียวกัน) อย่างชัดแจ้งมาเป็นเวลานานแล้ว ในฐานะสิ่งจูงใจพื้นฐานในการเข้าร่วมกิจกรรมอาสาสมัคร

ไลนัส ซึ่งประสบความสำเร็จในการวางตัวเองเป็นผู้ดูแลโครงการ โดยที่การพัฒนาส่วนใหญ่ทำโดยคนอื่นๆ และเฝ้าหล่อเลี้ยงความสนใจในตัวโครงการจนกระทั่งมันอยู่ได้ด้วยตัวเอง ได้แสดงให้เห็นถึงความเข้าใจอันเฉียบแหลมใน ``หลักแห่งความเข้าใจร่วมกัน'' ของโครพอตกิน มุมมองต่อโลกของลินุกซ์ในลักษณะกึ่งเศรษฐศาสตร์แบบนี้ เปิดโอกาสให้เราได้เห็นว่า ความเข้าใจนั้นถูกนำไปใช้อย่างไร

เราอาจจะมองวิธีของไลนัสเป็นเหมือนการสร้างตลาด ``อีโก้บู'' ที่มีประสิทธิภาพ โดยร้อยรัดความเห็นแก่ตัวของแฮ็กเกอร์แต่ละคนอย่างแน่นหนาที่สุดเท่าที่จะทำได้ เข้ากับปลายทางอันยากลำบาก ซึ่งจะไปถึงได้ก็ด้วยความร่วมมืออย่างไม่ลดละเท่านั้น อย่างในโครงการ fetchmail ผมก็ได้แสดงให้ดู (แม้จะในขนาดที่เล็กกว่า) ว่าวิธีของเขาสามารถทำซ้ำได้ โดยให้ผลที่ดี บางที ผมอาจจะทำแบบจงใจและมีแบบแผนกว่าเขานิดหน่อยด้วยซ้ำ

หลายคน (โดยเฉพาะผู้ที่มีความเคลือบแคลงทางการเมืองกับตลาดเสรี) อาจคาดไว้ว่า วัฒนธรรมของเหล่าคนอัตตาสูงที่เป็นตัวของตัวเอง คงจะแตกกระจาย แบ่งแยก สิ้นเปลือง ลึกลับ และไม่เป็นมิตร แต่สิ่งที่คาดไว้นั้นกลับถูกหักล้างอย่างชัดเจนโดยความหลากหลาย คุณภาพ และความลึกของเนื้อหาของเอกสารลินุกซ์ (หากจะยกมาเพียงตัวอย่างเดียว) เป็นคำสาปที่รู้กันดี ว่าโปรแกรมเมอร์นั้น เกลียด การเขียนเอกสาร แล้วแฮ็กเกอร์ลินุกซ์สร้างเอกสารออกมาได้มากมายอย่างนี้ได้อย่างไร? อย่างที่เราได้เห็น ตลาดเสรีสำหรับอีโก้บูของลินุกซ์สามารถสร้างพฤติกรรมที่มีคุณค่า และสนองความต้องการของผู้อื่น ได้ดีกว่าหน่วยผลิตเอกสารของผู้ผลิตซอฟต์แวร์เชิงพาณิชย์ ที่มีทุนสนับสนุนอย่างมหาศาลเสียอีก

ทั้งโครงการ fetchmail และเคอร์เนลลินุกซ์ ได้แสดงให้เห็นว่า ด้วยการตอบแทนอัตตาของแฮกเกอร์หลายๆ คน อย่างเหมาะสม ผู้พัฒนาและผู้ประสานงานที่มีความสามารถ สามารถใช้อินเทอร์เน็ตดึงเอาข้อดีของการมีผู้ร่วมพัฒนาเยอะๆ ออกมาได้ โดยไม่ทำให้เกิดความสับสนอลหม่าน ดังนั้นเพื่อแย้งกับกฎของบรูกส์ ผมขอเสนอกฎข้อต่อไปนี้:

19. หากผู้ประสานงานมีสื่อที่ดีอย่างน้อยเท่ากับอินเทอร์เน็ต และรู้ว่าจะนำการพัฒนาโดยไม่ต้องบังคับได้อย่างไร หลายหัวย่อมดีกว่าหัวเดียวแน่นอน

ผมคิดว่า อนาคตของซอฟต์แวร์โอเพนซอร์ส จะเป็นของผู้ที่รู้วิธีเล่นเกมของไลนัสมากขึ้นเรื่อยๆ คนซึ่งหันหลังให้กับมหาวิหาร และอ้าแขนรับตลาดสด นี่ไม่ได้หมายความว่า วิสัยทัศน์และความหลักแหลมส่วนบุคคลจะไม่มีความหมายอีกต่อไป ถ้าจะพูดให้ถูก ผมคิดว่า ความรุดหน้าของซอฟต์แวร์โอเพนซอร์ส จะเป็นของผู้ที่เริ่มจากวิสัยทัศน์และความหลักแหลมเฉพาะบุคคล และขยายมันออกไปด้วยการสร้างชุมชนอาสาสมัครที่สนใจเรื่องนั้นอย่างเกิดผล

บางที นี่อาจจะไม่ได้เป็นแค่อนาคตของซอฟต์แวร์ โอเพนซอร์ส เท่านั้น ไม่มีผู้พัฒนาแบบซอร์สปิดรายไหน ที่จะเทียบเคียงได้กับศูนย์รวมของผู้มีพรสวรรค์ซึ่งชุมชนลินุกซ์สามารถใช้รับมือกับปัญหา และมีน้อยรายมาก ที่จะสามารถจ้างคนได้มากกว่า 200 คน (600 ในปี 1999, 800 ในปี 2000) อย่างกลุ่มคนที่ช่วยพัฒนา fetchmail!

บางที ที่สุดแล้ว วัฒนธรรมโอเพนซอร์สจะประสบชัยชนะ ไม่ใช่เพราะความร่วมมือเป็นสิ่งที่ชอบด้วยศีลธรรม หรือ การ ``ปิดบัง'' ซอฟต์แวร์เป็นเรื่องผิดศีลธรรม (ในกรณีที่คุณเชื่อในอย่างหลัง ซึ่งทั้งไลนัสและผมไม่เชื่อ) แต่เพียงเพราะว่า โลกของการปิดซอร์สไม่สามารถเอาชนะการแข่งขันทางวิวัฒนาการกับชุมชนโอเพนซอร์ส ซึ่งสามารถระดมเวลาอันเปี่ยมไปด้วยทักษะจำนวนมาก มาให้กับปัญหาหนึ่งๆ ได้