โอเพ่นซอร์สคืออะไร?

[ ความหมาย | นิยามของโอเพ่นซอร์ส | นิยามของซอฟต์แวร์เสรี ]

ความหมายของโอเพ่นซอร์ส

โอเพ่นซอร์ส คือ ซอฟต์แวร์ ที่สามารถนำไป ใช้งาน ศึกษา แก้ไข และ เผยแพร่ (ไม่ว่าจะแก้ไขหรือไม่ ไม่ว่าจะคิดราคาหรือไม่) ได้อย่างเสรี ปราศจากเงื่อนไขเพิ่มเติม (เช่นคิดค่า License หรือต้องเซ็นสัญญาพิเศษ) การพัฒนา ที่เปิดเผยซอร์สโค้ด (รหัสต้นฉบับ) ให้สาธารณะนำไปพัฒนาต่อยอดได้ ทำให้เกิดการร่วมมือกันทำงานอย่างไร้พรมแดนผ่านเครือข่ายอินเทอร์เน็ต (ข้อสังเกต คำว่าซอฟต์แวร์โอเพนซอร์ส และซอฟต์แวร์เสรี มีความหมายเดียวกัน และใช้แทนกันได้ หลักการทั้งหมดบังคับด้วยเงื่อนไขที่ชัดเจนของ License ที่เรียกว่า open-source license (เช่น GPL, BSD) การจะเป็นซอฟต์แวร์แบบโอเพนซอร์สหรือไม่ ดูได้อย่างชัดเจนจาก license ที่ใช้ว่าตรงตามเกณฑ์ข้างต้นหรือไม่ เงื่อนไขในการต้องเปิดให้ศึกษาและแก้ไขได้อย่างเสรี ทำให้ต้องเปิดโอกาสให้เข้าถึงซอร์สโค้ดไปกับการเผยแพร่เสมอ ผู้ที่ได้รับซอฟต์แวร์ตาม License นั้นไปจะได้รับสิทธิข้างต้นไปทั้งหมด เช่นสามารถนำไปลงกี่เครื่องก็ได้ หรือทำซ้ำกี่ชุดเพื่อการใช้งานหรือขายก็ได้ หรือปรับปรุงแล้วเผยแพร่ต่อไปก็ได้)

กลับไปข้างบน


นิยามของโอเพ่นซอร์ส

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

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


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


3. งานดัดแปลง
สัญญานั้นจะต้องอนุญาตให้ทำการแก้ไขหรือสร้างสรรค์งานดัดแปลงได้ และจะต้องอนุญาตให้เผยแพร่งานเหล่านั้นด้วยเงื่อนไขเดียวกันกับสัญญาของซอฟต์แวร์ต้นฉบับ


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


5. ไม่เลือกปฏิบัติเพื่อกีดกันบุคคลหรือกลุ่มใด ๆ
สัญญานั้นจะต้องไม่จงใจแบ่งแยกเพื่อละเว้นการคุ้มครองสิทธิต่อบุคคลหรือกลุ่มบุคคลใด


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


7. การเผยแพร่ของสัญญา
สิทธิที่พ่วงไปกับโปรแกรมจะต้องใช้กับทุกคนที่ได้รับโปรแกรมนั้น โดยไม่จำเป็นต้องอาศัยการดำเนินการสัญญาเพิ่มเติมจากบุคคลใด


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


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

กลับไปข้างบน


นิยามของ Free Software


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


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

คำว่า Free ใน Free Software นั้น มีความหมายถึง "เสรีภาพ" หรือ "อิสระ" ไม่ใช่ "ราคา (ถ้าเป็นภาษาอังกฤษ เค้าก็ว่า free แบบในคำว่า freedom หรือ free speech -- ไม่ใช่ free แบบในคำว่า free beer)

ดังนั้นเราจึงเรียก Free Software ว่า "ซอฟต์แวร์เสรี" อย่าสับสนระหว่าง Free Software กับ Freeware เพราะ free ใน Freeware นั้น หมายถึงแค่ "ราคา" แต่ไม่ได้พูดถึง "เสรีภาพ" ดูความหมายของ "ซอฟต์แวร์เสรี" (ภาษาอังกฤษ) ที่ The Free Software Definition ซอฟต์แวร์เสรีคือแนวคิดในแนวทางเดียวกับซอฟต์แวร์โอเพ่นซอร์ส

กลับไปข้างบน