open source software licensing
DESCRIPTION
About Open Source Software licenses: GPL, BSD, MIT, LGPLTRANSCRIPT
Software LicensingIsriya Paireepairit
Thailand Open Source Festival #7 - http://www.ossfestival.in.th3 August 2007
License
สัญญา “อนุญาต” ให้
• ใช้งาน• พัฒนา/ปรับปรุง/แก้ไข• แจกจ่าย/หาผลประโยชน์ซอฟต์แวร์
License to “Use”EULA - End-User License Agreement
License to Modify/Distribute
• สัญญาจ้างระหว่างหน่วยงานกับ Software House
• สัญญาประมูลงานของหน่วยงานภาครัฐ• สัญญาใช้ component ระหว่าง Software House
• สัญญาจัดจำหน่ายซอฟต์แวร์/เกม• Etc.
Open Source License
• เป็น สัญญา เช่นเดียวกับสัญญาชนิดอื่นๆ
• เพียงแต่อนุญาตให้• ใช้• พัฒนาแก้ไข• แจกจ่าย/หาผลประโยชน์• ได้อย่างอิสระ
Misconception
ผิด: Open Source ไม่มีลิขสิทธิ์
ถูก: Open Source มีลิขสิทธิ์เช่นเดียวกับซอฟต์แวร์ทั่วไป
แต่ อนุญาต ให้คนอื่นนำไปใช้/พัฒนา/แจกจ่ายได้
ผู้เขียนซอฟต์แวร์ยังเป็นเจ้าของลิขสิทธิ์ของซอฟต์แวร์อยู่เสมอ
How to Apply Open Source License
1. เขียนเอง
2. ใช้สัญญาที่มีคนเขียนไว้แล้ว
Common Open Source Licenses
• GPL/LGPL
• BSD
• MIT X11
• Apache
• Mozilla Public License
• Sun CDDL
• Eclipse Public License
• PHP License
• Python License
• etc.
GPL
• GNU General Public License
• Version 1: 1985
• Version 2: 1991
• Version 3: 2007
• Free Software Foundation (www.fsf.org)
GPL Key Concept
•สามารถพัฒนาและแจกจ่ายต่อได้อย่างอิสระ
•ตราบเท่าที่คนอื่นๆ ได้สิทธิ์นั้นแบบเดียวกัน
Right to Get Source
Company A
User B
ขาย/แจก
สร้าง
ใช้
compile
GPL Misconception
ผิด: โปรแกรมที่เป็น GPL ขายไม่ได้
ถูก: โปรแกรมที่เป็น GPL ขายได้
แต่ผู้ซื้อ ต้องได้ ซอร์สโค้ดเมื่อร้องขอ
(ในทางปฏิบัติ ตัวโปรแกรมจึงไม่มีราคา เพราะคนอื่นนอกจากเจ้าของสามารถแจกจ่ายได้เช่นกัน)
How to Get Money from Open Source
ซอร์สโค้ดสามารถแจกจ่ายได้ แต่อย่างอื่นแจกจ่ายไม่ได้
• support/training
• ความเชี่ยวชาญในการแก้ไขโปรแกรม (Ubuntu)
• วิธีการ compile/build โปรแกรม (Red Hat/RHEL)
• เพิ่มความสามารถลงในโปรแกรม (Mozilla/Google)
RHEL/CentOS Case
• Red Hat Enterprise Linux (RHEL)
• บริษัท Red Hat แจกซอร์สโค้ดของ RHEL แต่ไม่แจก Binary
• บริษัท Red Hat ขาย Binary ของ RHEL
• ลูกค้าซื้อความสะดวกในการ build ซอร์สของ RHEL
• โครงการ CentOS นำซอร์สของ RHEL มา build แล้วแจก binary
RHEL/CentOS Case (2)
• Red Hat ได้เงินจากการขาย RHEL binary
• ลูกค้ามี 3 ทางเลือก
• ซื้อ RHEL binary จาก Red Hat
• ดาวน์โหลด CentOS binary จากอินเทอร์เน็ต
• ดาวน์โหลด RHEL Source มา build เอง
RHEL/CentOS Case (3)
• Source Code ของ RHEL แจกจ่ายได้อิสระ
• Trademark ของ RHEL เป็นของ Red Hat
• CentOS จึงต้องใช้ชื่ออื่น
• กรณีเดียวกับ Firefox/IceWeasel
Derivatives
• งานที่พัฒนาต่อ (derivative) จากซอร์สที่เป็น GPL ต้องเป็น GPL ด้วย
Recursive Distribution
A Bcompile Cdevelop modify modify
GPL Virus
• โค้ดที่เป็น GPL เมื่อผสมกับโค้ดอื่น โค้ดทั้งหมดต้องเป็น GPL ด้วย
• เป้าหมายเพื่อส่งเสริมให้เกิดโปรแกรม GPL มากๆ
• (ไม่รวมกรณี library linking)
+
Strong Linking
A Bcompile Cdevelop modify modify
+
D
LGPL
GNU Lesser General Public License
LGPL = GPL - GPL Virus
LGPL
• ผสมรวมกับซอฟต์แวร์อื่นที่ไม่ใช่ LGPL/GPL ได้
• Derivative ต้องเป็น LGPL หรืออัพขึ้นเป็น GPL
+
Weak Linking
A Bcompile Cdevelop modify modify
+
D
Other License
• MIT License
• BSD License
• Mozilla Public License
MIT License
• เดิมใช้กับ X11
• นำซอร์สโค้ดไปทำอะไรก็ได้ ตราบเท่าที่ไม่ฟ้องผู้พัฒนา
BSD License
• เดิมใช้กับ Unix ของ Berkley
Mozilla Public License
• คล้ายกับ LGPL
• มีเงื่อนไขเพิ่มขึ้นสำหรับ Mozilla
License Comparison
source - http://www.dwheeler.com/essays/floss-license-slide.html
License Comparison
http://en.wikipedia.org/wiki/Comparison_of_free_software_licences
License Comparison
• More comparison matrix
http://developer.kde.org/documentation/licensing/licenses_summary.html
GPLv3
• เวอร์ชันอัพเดตของ GPLv2
• ใจความหลักเหมือนเดิม• แก้ปัญหาบางอย่างของ GPLv2
Tivoization
• แจกซอร์สโค้ด แต่ไม่ยอมให้แก้ไขโปรแกรมที่รันอยู่
• อุปกรณ์ต่างๆ เช่น• เครื่อง set-top box ของ TiVo
• Wireless Router
• DRM
Patent
• แจกซอร์สโค้ด (ลิขสิทธิ์) แต่ไปฟ้องสิทธิบัตร
• กรณีสัญญา Microsoft-Novell
• คุ้มครองเฉพาะลูกค้าของ Novell
• แก้ให้: คุ้มครองสิทธิบัตรแก่ผู้ใช้ทุกคน
Other Changes
• กรณีแจกจ่ายผ่าน P2P
• การปรับใช้ในประเทศอื่นๆ นอกจากสหรัฐ (Internationalization)
• เข้ากันได้กับ Apache 2.0 License
• ปรับคำศัพท์ เช่น• เปลี่ยน distribute เป็น propagate/convey
GPLv2 vs GPLv3
• GPLv2 ไม่ compat กับ GPLv3
• เพราะแต่ละ license ระบุว่าต้องแจกจ่ายผลงานที่แก้ไข ใต้ License เดิม
• แก้ปัญหา: ใช้ประโยค GPLv2 or later
Upgrade Path
source - GPLv3 FAQ
before
later
GPLv3 Adoption
source - http://gpl3.palamida.com
GPLv2 370,000
GPLv3 550
Number of Projects using GPLv2 and v3
Major Open Source Projects and GPLv3
Yes Considering (Probably) No
SambaSugarCRM
Sun Solaris/JDK Linux Kernel
Anyway, we still can use GPLv2 and GPLv3 programs together e.g. Running Samba on Linux