ตอนก่อน:
ก่อนจะพูดเรื่องประเด็นปลีกย่อยของการสร้างแพกเกจ คิดว่าพูดถึงกระบวนการต่อให้จบก่อนดีกว่า
Debian Developer
ก่อนอื่น พูดถึงสภาเจไดก่อน ผู้ที่จะมีสิทธิ์อัปโหลดแพกเกจเข้า debian pool ได้ จะต้องเป็นผู้ที่มี
OpenPGP public key อยู่ใน debian keyring ซึ่งกว่าจะได้เอากุญแจไปคล้องได้
ก็ต้องผ่านกระบวนการทำงานต่างๆ เพื่อเป็นการรับประกันว่า คนคนนั้นมีคุณสมบัติเพียงพอที่จะร่วมพัฒนา
debian อย่างมีคุณภาพได้ ซึ่งผมก็ได้รับการบอกเล่ามาว่า ต้องใช้เวลาเป็นปีๆ จนหลายคนถอดใจไปก่อน
ดังนั้น เวลาที่ได้พบ Debian Developer ผมจึงรู้สึกเหมือน apprentice ได้พบเจได
หรือสาวกได้พบนักบุญถ้าเปรียบเทียบกับประชากรในศาสนา ปานนั้นเลย
ตอนนี้ มี Debian Developer (DD) ร่วมๆ
สองพันคน จากทั่วโลก นี่ถ้านับ
maintainer ทั้งหลายที่ยังไม่ได้ตำแหน่ง DD อีกเยอะแยะ รวมกับ user community ที่คึกคัก ก็นับได้ว่า
debian เป็นโครงการที่ใหญ่และเป็นสากลมากโครงการหนึ่ง
ผู้ที่จะเข้าเป็น DD ได้ จะต้องผ่าน
New Maintainer Process
หรือเรียกย่อๆ ว่า NM (อย่าเพิ่งแปลกใจครับ debian เขายังมีตัวย่ออีกเยอะให้ใช้
เป็นการเจาะจงศัพท์เทคนิคว่าไม่ใช่หมายถึงคำทั่วไป) ซึ่งถ้าดูจาก
Checklist แล้ว
จะเห็นว่าผู้สมัคร NM จะต้องมีประสบการณ์ทำงานกับ debian มาระยะหนึ่งแล้ว จนมี DD ไว้วางใจ
สามารถ advocate
ผู้สมัครคนนั้นได้ แล้วก็จะมีการสอบสัมภาษณ์ความเข้าใจในปรัชญาต่างๆ ของ debian
ทดสอบความชำนาญต่างๆ จนผ่านทุกขั้นตอนแล้ว จึงจะได้เป็น DD
Web of Trust
ใน NM checklist จะมีขั้นตอนแรกๆ ขั้นตอนหนึ่งที่สำคัญที่ควรกล่าวถึง คือการยืนยันตัวตนด้วย
OpenPGP key ที่มี
Web of Trust ที่แน่นหนา
กล่าวคือ มีผู้เซ็นยืนยันตัวตนของเจ้าของกุญแจเยอะพอ ว่ากุญแจนี้เป็นของคนคนนี้จริงๆ
(เพราะในอินเทอร์เน็ต ใครๆ ก็สร้างกุญแจได้ โดยอาจจะแอบอ้างว่าเป็นของธนาคารก็ได้
ถ้าไม่มีการตรวจสอบตัวตนดังกล่าว เป็นต้น แต่กรณีของธนาคาร อาจใช้การตรวจสอบผ่าน
Certificate
Authorities (CA) มากกว่าแบบกระจายด้วย Web of Trust) และกุญแจนี้
จะใช้ในการเซ็นรับรอง debian package ในวันข้างหน้าเมื่อได้ทำหน้าที่ DD ว่าแพกเกจมาจาก
maintainer ตัวจริง หรือมาจากแหล่งที่เชื่อถือได้ โดยตรวจสอบกับ public key ที่ไปคล้องไว้ใน
debian keyring เพื่อกันแพกเกจปลอมปนที่จะเข้ามาใน debian pool
เพื่อรับประกัน web of trust นี้ เวลาคน debian มีการพบปะกัน จึงมักถือโอกาสจัด
Key Signing
Party เสมอๆ เพราะเป็นโอกาสที่จะได้เซ็นยืนยันเจ้าของกุญแจเมื่อได้พบตัวจริง โดยในการเซ็นนั้น
จะมีขั้นตอนการตรวจสอบพอควร เช่น ต้องมีบัตรประจำตัวประชาชน หรือหนังสือเดินทาง มายืนยัน
(เพื่อไม่ให้มีใครมาแอบอ้างง่ายๆ ว่าตนคือบิล เกตส์ หรือ RMS อะไรทำนองนี้)
รวมทั้งคอมพิวเตอร์ที่ใช้ในการเซ็นก็จะต้องแน่ใจว่าปราศจากการปลอมแปลงคำสั่งด้วย
Package Sponsoring
แล้วก็มาถึงคำถามยอดฮิตที่ผมถูกผู้อ่าน blog ถาม และผมเองก็เคยสงสัยเป็นอันดับต้นๆ เหมือนกัน
ว่าการ sponsor แพกเกจมันหมายถึงอะไร
จากขั้นตอนการกลั่นกรอง DD สุดหินที่ได้กล่าวไป ความจริงเป็นการรับประกันคุณภาพของ debian เอง
แต่ขณะเดียวกัน ก็เปิดโอกาสให้ผู้ที่ไม่ได้เป็น DD ได้ร่วมพัฒนาได้ด้วย
โดยอาจจะแสดงความจำนงขอดูแลแพกเกจได้ แต่เมื่อจะอัปโหลดเข้า debian pool
ซึ่งจำเป็นต้องมีลายเซ็น DD กำกับ ก็สามารถร้องขอให้ DD คนใดคนหนึ่งช่วยเซ็นและอัปโหลดให้ได้
ซึ่งการเซ็นและอัปโหลดให้ดังกล่าวนี่แหละ ที่เรียกว่าการ sponsor แพกเกจ
แน่นอนว่าลายเซ็นนั้น หมายถึงการร่วมรับผิดชอบกับ maintainer ด้วยส่วนหนึ่ง
แม้ข้อมูลในแพกเกจจะแสดงชื่อของ maintainer ว่าเป็นเจ้าของ ไม่ใช่ DD เจ้าของลายเซ็น
แต่ในคิวสำหรับอัปโหลดก็จะมีการบันทึกไว้ ว่า DD คนไหนอัปโหลดให้ ดังนั้น กว่าจะเซ็นให้ได้ DD
จะต้องตรวจสอบคุณภาพของแพกเกจเสียก่อน โดยปกติจึงมีการตรวจแก้ก่อนอัปโหลด
มีหลายวิธีที่ maintainer จะหา sponsor อาจจะด้วยการทำงานร่วมกันอย่างใดอย่างหนึ่งมาก่อน
เช่น คุยงานผ่าน mailing list หรือคุยกันในงานประชุม
แต่กรณีอย่างนั้นคงครอบคลุมแพกเกจทั้งหมดได้ยาก โดยทั่วไปจึงมักใช้
debian-mentors mailing
list หรือ IRC ห้อง #debian-mentors ที่ irc.debian.org รายละเอียดต่างๆ อ่านได้จาก
debian-mentors
FAQ
เนื่องจากความยากลำบากในการหา sponsor เมื่อได้ sponsor แล้ว จึงควรถือโอกาสแก้ปัญหาต่างๆ
ในแพกเกจตามที่ sponsor ชี้ให้ได้มากที่สุด ด้านหนึ่ง เป็นโอกาสที่จะได้ปรับปรุงคุณภาพแพกเกจ
และอีกด้านหนึ่ง เป็นการลดภาระที่ต้องรบกวน sponsor อีกบ่อยๆ ในอนาคต
NEW Queue
สำหรับการอัปโหลดที่มีไฟล์ซอร์สใหม่ที่ไม่เคยอยู่ใน debian pool มาก่อน (ไม่นับ debian diff
ที่เป็นเพียงการออก release ใหม่) แพกเกจที่อัปโหลดจะเข้าไปอยู่ในคิว
NEW เพื่อรอตรวจรับโดยทีม
ftp-master โดยเป็นการตรวจสอบทั่วไปเพื่อกันความเสี่ยงเรื่องการฝังม้าโทรจันหรืออะไรทำนองนี้
โดยปกติจะใช้เวลาเฉลี่ยไม่เกินหนึ่งเดือน
แพกเกจใหม่ที่ผ่านการตรวจรับในคิว NEW แล้ว
หรือแพกเกจที่เพียงออกรุ่นใหม่โดยไม่ได้มีซอร์สที่ไม่เคยอัปโหลดมาก่อน ก็จะตรงเข้าสู่
incoming เพื่อรอเข้าสู่ unstable หรือ
experimental pool ต่อไป แล้วแต่กรณี
เมื่อแพกเกจสถิตอยู่ใน unstable ครบกำหนด 10 วันโดยไม่มี bug ร้ายแรง
แพกเกจนั้นก็จะเคลื่อนเข้าสู่ testing โดยอัตโนมัติ
วันนี้ยาวหน่อย เพราะจะเก็บรายละเอียดที่สำคัญให้ครบ ตอนหน้าน่าจะเขียนถึงประเด็นที่พบบ่อยในการ
build debian package ได้