วิธีเช็กสิทธิ์ Open Source ก่อน Copy โค้ดไปใช้ เพราะโค้ดที่อยู่บน GitHub ไม่ได้แปลว่าใครก็เอาไปใช้ได้ สิ่งสำคัญคือ ต้องรู้ก่อนว่าโค้ดนั้นใช้ License อะไร ถ้าไม่เช็กให้ดี อาจนำโค้ดไปใช้ผิดเงื่อนไขโดยไม่รู้ตัว
หลายคนเข้าใจว่า Open Source หมายถึงซอฟต์แวร์ที่เปิด Source Code ให้ทุกคนเข้าไปดูและนำไปใช้งานได้อย่างอิสระ ขอเพียงค้นเจอโค้ดบน GitHub ก็สามารถ Copy ไปแก้ไข ต่อยอด หรือแม้แต่นำไปใช้ในผลิตภัณฑ์เชิงพาณิชย์ได้ทันที
แต่ในความเป็นจริง สิ่งที่เรียกว่า “Open Source” ไม่ได้หมายถึงเพียงการเปิดเผย Source Code เท่านั้น เพราะหัวใจสำคัญอีกอย่างคือ License หรือใบอนุญาตการใช้งาน ซึ่งเป็นตัวกำหนดว่าผู้อื่นมีสิทธิ์ทำอะไรกับซอฟต์แวร์นั้นได้บ้าง
ประเด็นนี้จึงสำคัญอย่างมากทั้งสำหรับ นักพัฒนา บริษัท และองค์กรที่นำ Open Source ไปใช้ในผลิตภัณฑ์ เพราะคำว่า “ฟรี” ไม่ได้หมายความว่า “ไม่มีเงื่อนไข”
Open Source คืออะไร? แค่เปิด Source Code ก็เรียกว่า Open Source จริงหรือ?
คำว่า Open Source มักถูกเข้าใจผิดว่าเป็นเพียงการนำ Source Code มาเผยแพร่ให้คนอื่นมองเห็น แต่ตามนิยามของ Open Source Initiative หรือ OSI การเป็น Open Source มีข้อกำหนดมากกว่านั้น โดย License จะต้องเปิดสิทธิ์ให้ผู้ใช้นำซอฟต์แวร์ไปใช้ แจกจ่าย และสร้างงานดัดแปลงได้ ภายใต้เงื่อนไขที่สอดคล้องกับ Open Source Definition ซึ่งมีทั้งหมด 10 ข้อดังนี้
- แจกจ่ายได้อย่างเสรี: License ต้องไม่ห้ามการขายหรือแจกจ่ายซอฟต์แวร์ และห้ามเรียกเก็บค่าลิขสิทธิ์เพิ่มเติมจากการแจกจ่าย
- ต้องมี Source Code: ต้องเปิดให้เข้าถึง Source Code ในรูปแบบที่โปรแกรมเมอร์สามารถนำไปศึกษาและแก้ไขได้จริง
- อนุญาตให้สร้างงานดัดแปลง: ผู้ใช้ต้องสามารถแก้ไข ต่อยอด และเผยแพร่ซอฟต์แวร์ที่ดัดแปลงได้ตามเงื่อนไขของ License
- คุ้มครองความสมบูรณ์ของโค้ดต้นฉบับ: License สามารถกำหนดให้เวอร์ชันดัดแปลงใช้ชื่อหรือหมายเลขเวอร์ชันใหม่ได้ แต่ต้องไม่ห้ามการเผยแพร่การแก้ไขอย่างเหมาะสม
- ห้ามเลือกปฏิบัติต่อบุคคลหรือกลุ่ม: License ต้องไม่จำกัดสิทธิ์การใช้ซอฟต์แวร์ของคนหรือกลุ่มใดกลุ่มหนึ่ง
- ห้ามจำกัดประเภทการใช้งาน: ต้องไม่ห้ามนำซอฟต์แวร์ไปใช้ในกิจการหรือสาขาใดเป็นพิเศษ เช่น ธุรกิจ การวิจัย หรือการใช้งานเชิงพาณิชย์
- สิทธิ์ต้องส่งต่อไปกับซอฟต์แวร์: ผู้ที่ได้รับซอฟต์แวร์ต่อจากผู้ใช้เดิมต้องได้รับสิทธิ์ตาม License โดยไม่ต้องไปทำสัญญาอนุญาตเพิ่มเติม
- License ต้องไม่ผูกกับผลิตภัณฑ์ใดโดยเฉพาะ: สิทธิ์ของผู้ใช้ต้องยังคงอยู่ แม้นำซอฟต์แวร์ออกจากชุดผลิตภัณฑ์หรือแพ็กเกจเดิม
- ห้ามจำกัดซอฟต์แวร์อื่น: License ของ Open Source ต้องไม่บังคับให้ซอฟต์แวร์อื่นที่ถูกแจกจ่ายมาพร้อมกันต้องเป็น Open Source ด้วย
- ต้องไม่ผูกกับเทคโนโลยีใดโดยเฉพาะ: License ต้องไม่กำหนดว่าซอฟต์แวร์ต้องใช้กับเทคโนโลยี แพลตฟอร์ม หรือรูปแบบอินเทอร์เฟซใดเท่านั้น
ดังนั้น Public Source Code กับ Open Source จึงไม่ใช่เรื่องเดียวกัน การตั้ง Repository เป็น Public บน GitHub ทำให้คนอื่นสามารถเข้าไปดู Source Code ได้ และภายใต้เงื่อนไขของ GitHub ผู้ใช้สามารถ Fork Repository ได้ แต่ไม่ได้หมายความว่าเจ้าของโค้ดได้มอบสิทธิ์ทั่วไปในการนำโค้ดไปใช้ ดัดแปลง หรือเผยแพร่ในโครงการอื่น
License คืออะไร? ทำไม Open Source ถึงขาดสิ่งนี้ไม่ได้
ถ้า Copyright คือสิทธิ์ที่เจ้าของผลงานได้รับตามกฎหมาย License ก็คือเครื่องมือที่เจ้าของใช้กำหนดว่า จะอนุญาตให้คนอื่นใช้สิทธิ์บางอย่างกับผลงานนั้นได้อย่างไร
ในกรณีของซอฟต์แวร์ License อาจกำหนดว่า ผู้ใช้งานสามารถ Copy Source Code ได้หรือไม่ สามารถแก้ไขได้หรือไม่ สามารถนำไปใช้ในธุรกิจได้หรือไม่ สามารถแจกจ่ายต่อได้หรือไม่ รวมถึงต้องแสดง Copyright Notice หรือเผยแพร่ Source Code ของงานที่ดัดแปลงหรือไม่
หลักการนี้สอดคล้องกับกฎหมายลิขสิทธิ์ของไทย ซึ่งกำหนดให้ โปรแกรมคอมพิวเตอร์เป็นงานอันมีลิขสิทธิ์ และให้เจ้าของลิขสิทธิ์มีสิทธิ์แต่เพียงผู้เดียวในเรื่องต่าง ๆ เช่น การทำซ้ำ ดัดแปลง สื่อสารต่อสาธารณะ รวมถึงการอนุญาตให้ผู้อื่นใช้สิทธิดังกล่าว
นี่จึงเป็นเหตุผลว่าทำไม Open Source จึงต้องมี License เพราะแนวคิดของ Open Source คือการ มอบสิทธิ์บางอย่างให้คนอื่นอย่างชัดเจน ไม่ใช่เพียงนำโค้ดออกมาเผยแพร่บนอินเทอร์เน็ต
ถ้าไม่มี License แล้วเกิดอะไรขึ้น? “โค้ดสาธารณะ” ไม่ได้แปลว่า “ใช้ได้ฟรี”
นี่คือจุดที่นักพัฒนาหลายคนเข้าใจผิดมากที่สุด ลองนึกภาพว่ามีคนสร้าง Library ขึ้นมาและนำ Source Code ไปไว้บน GitHub โดยตั้ง Repository เป็น Public แต่ไม่มีไฟล์ LICENSE ไม่มีข้อความอนุญาตให้ใช้ และไม่มีเงื่อนไขอื่นที่บอกว่าผู้อื่นสามารถนำโค้ดไปใช้อย่างไร
หลายคนอาจคิดว่า
“ในเมื่อเจ้าของเอามาเปิดให้ทุกคนดู ก็น่าจะ Copy ไปใช้ได้”
แต่หลักการทางลิขสิทธิ์ไม่ได้ทำงานแบบนั้น
GitHub ระบุว่า หาก Repository ไม่มี License กฎหมายลิขสิทธิ์โดยปริยายยังคงใช้บังคับ ซึ่งหมายความว่าเจ้าของยังคงสงวนสิทธิ์ใน Source Code และผู้อื่นไม่ได้รับสิทธิ์ทั่วไปในการทำซ้ำ แจกจ่าย หรือสร้างงานดัดแปลงจากโค้ดนั้นเพียงเพราะ Repository เป็น Public
ในประเทศไทย หลักการก็มีความสำคัญเช่นกัน เพราะกฎหมายลิขสิทธิ์กำหนดให้โปรแกรมคอมพิวเตอร์อยู่ภายใต้การคุ้มครอง และการทำซ้ำหรือดัดแปลงโปรแกรมโดยไม่ได้รับอนุญาตจากเจ้าของสิทธิ์อาจเข้าข่ายการละเมิดลิขสิทธิ์ เว้นแต่จะมีข้อยกเว้นตามกฎหมาย
ดังนั้นคำว่า “ไม่มี License” จึงไม่ได้หมายความว่าเจ้าของทำผิดกฎหมายเพราะเปิด Source Code โดยไม่มี License แต่หมายความว่า เจ้าของไม่ได้มอบสิทธิ์ Open Source ให้ผู้อื่นโดยอัตโนมัติ และในทางกลับกัน คนที่หยิบโค้ดนั้นไปใช้ก็ไม่ควรตีความว่า “Public = Free to Use”
MIT, Apache 2.0, GPL ต่างกันอย่างไร? เลือก License ผิด ชีวิตเปลี่ยน
ปัจจุบันมี Open Source License อยู่เป็นจำนวนมาก โดย SPDX มีฐานข้อมูล License และ Identifier สำหรับใช้ระบุ License อย่างเป็นมาตรฐาน เช่น Apache-2.0, MIT และ GPL-3.0 เป็นต้น
MIT License มักถูกมองว่าเป็น License ที่มีเงื่อนไขค่อนข้างเรียบง่ายและเปิดกว้าง ผู้ใช้สามารถนำโค้ดไปใช้ แก้ไข และแจกจ่ายได้ โดยต้องคงข้อความเกี่ยวกับ Copyright และ License ตามเงื่อนไขที่กำหนด
Apache License 2.0 ก็เปิดให้ใช้ แก้ไข และแจกจ่ายได้ แต่มีรายละเอียดด้านเงื่อนไขและการให้สิทธิ์เกี่ยวกับสิทธิบัตรเพิ่มเติม ซึ่งเป็นหนึ่งในเหตุผลที่องค์กรเลือกใช้ License นี้ในโครงการขนาดใหญ่
ส่วน GPL มีแนวคิดที่แตกต่างออกไป โดยให้เสรีภาพในการใช้ แก้ไข และแจกจ่ายซอฟต์แวร์ แต่มีเงื่อนไขด้านการเผยแพร่ต่อที่เข้มกว่า License แบบ Permissive โดย GNU อธิบายว่า GPL ถูกออกแบบมาเพื่อคงเสรีภาพในการแบ่งปันและแก้ไขซอฟต์แวร์เอาไว้
ดังนั้นการเลือก License ไม่ใช่แค่เรื่องว่า “อยากให้คนใช้โค้ดฟรีหรือไม่” แต่เป็นการตัดสินใจว่า อยากให้คนอื่นนำโค้ดของเราไปใช้ต่อได้อย่างไร และต้องทำอะไรตอบแทนเมื่อมีการนำไปแจกจ่ายหรือดัดแปลง
และถ้าในโปรเจกต์หนึ่งมีหลาย License การระบุ License ก็อาจซับซ้อนขึ้น เช่น SPDX รองรับการเขียน License Expression เพื่อบอกว่าชิ้นส่วนหนึ่งอยู่ภายใต้หลาย License หรือให้ผู้ใช้เลือก License ตามเงื่อนไขที่กำหนด
ใช้ Open Source อย่างไรไม่ให้ผิด License? เช็ก 4 เรื่องก่อนนำโค้ดไปใช้
ก่อนนำ Library, Framework หรือ Source Code จากอินเทอร์เน็ตไปใช้ในโปรเจกต์ จึงควรตรวจอย่างน้อย 4 เรื่อง
- ตรวจว่ามี License หรือไม่ อย่าเห็น Repository เป็น Public แล้วสรุปทันทีว่าใช้ได้ ควรมองหา LICENSE, LICENSE.md, Copyright Notice หรือข้อมูล License ใน Repository ก่อน
- อ่านเงื่อนไขของ License คำว่า MIT, Apache หรือ GPL ไม่ได้เป็นเพียงชื่อ แต่แต่ละ License มีเงื่อนไขแตกต่างกัน โดยเฉพาะเมื่อซอฟต์แวร์ถูกนำไปแจกจ่ายหรือดัดแปลง
- เก็บ Copyright และ License Notice ให้ครบ License บางประเภทกำหนดให้ต้องคงข้อความ Copyright และเงื่อนไขของ License ไว้เมื่อมีการเผยแพร่ซอฟต์แวร์ต่อ
- ตรวจ Dependency ทั้งหมด ปัญหาไม่ได้เกิดเฉพาะ Source Code ที่เรา Copy มาโดยตรง เพราะซอฟต์แวร์หนึ่งตัวอาจประกอบด้วย Library และ Dependency จำนวนมาก ซึ่งแต่ละส่วนอาจมี License แตกต่างกัน การตรวจสอบจึงควรครอบคลุมทั้ง Software Supply Chain
อ้างอิง gnu.org spdx.org wipo.int opensource.org และ cover iT24Hrs
อ่านบทความและข่าวอื่นๆเพิ่มเติมได้ที่ it24hrs.com
วิธีเช็กสิทธิ์ Open Source ใครใช้ได้บ้าง
อย่าลืมกดติดตามอัพเดตข่าวสาร ทิปเทคนิคดีๆกันนะคะ Please follow us
Youtube it24hrs
Twitter it24hrs
Tiktok it24hrs
facebook it24hrs
ติดต่อโฆษณา [email protected] โทร 080234502
