ความสำคัญของการมีผู้ใช้

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

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

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

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

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

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

อันที่จริง ก่อนผมจะทำ fetchmail ผลงานที่ผมคิดว่าประสบความสำเร็จที่สุดของผมนั้น คงเป็นโหมด VC (Version Control) ของ Emacs โดยเป็นการทำงานแบบลินุกซ์ คือร่วมมือกันผ่านเมลกับคนอื่นอีก 3 คน ซึ่งจนถึงทุกวันนี้ มีเพียงคนเดียวในกลุ่มนั้น (คือ ริชาร์ด สตอลล์แมน ผู้สร้าง Emacs และผู้ก่อตั้ง มูลนิธิซอฟต์แวร์เสรี) ที่ผมเคยพบหน้า โหมด VC เป็นส่วนติดต่อ (front end) กับ SCCS, RCS และต่อมาถึง CVS ของ Emacs ที่ช่วยให้การดำเนินการกับระบบควบคุมเวอร์ชันเป็นไปได้ใน ``สัมผัสเดียว'' เป็นการพัฒนามาจากโหมด sccs.el เล็กๆ ง่ายๆ ที่ใครบางคนเขียนไว้ การพัฒนา VC ประสบความสำเร็จเพราะ Emacs Lisp ได้ผ่านขั้นตอนต่างๆ ของวัฏจักรซอฟต์แวร์ (ออก/ทดสอบ/พัฒนา) อย่างรวดเร็ว ไม่เหมือนตัว Emacs เอง

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