ฉันสามารถขาย PyQt4 แอพของฉันโดยไม่ต้องมีใบอนุญาต PyQt หรือไม่?


18

ฉันต้องการขายแอปพลิเคชั่น Python ที่ใช้ PyQt4 ใบอนุญาตการค้าสำหรับ Qt PyQt มีค่าใช้จ่ายหลายพันยูโรด้วยกัน ฉันจำเป็นต้องซื้อใบอนุญาตประกอบการค้าหรือไม่?

พิจารณาสิ่งนี้จากมุมมอง "แบบแพคเกจ" ที่ฉันจัดทำแพคเกจ Ubuntu ผ่านศูนย์ซอฟต์แวร์ แพ็คเกจของฉันจะ "พึ่งพา" กับแพ็คเกจ Ubuntu Python และ PyQt ที่มีอยู่ดังนั้นฉันจะต้องให้สิทธิ์ใช้งานบางอย่างที่ Ubuntu แจกจ่ายซ้ำหรือไม่

ในทางกลับกันถ้าฉันรวมไลบรารี่ GPL / LGPL Python ไว้ในแพ็คเกจของฉันแพคเกจของฉันจะยังคงอยู่ได้หรือไม่? ฉันไม่สามารถทำให้แหล่งที่มาไปยังไลบรารี GPL พร้อมใช้งาน (ถ้าแก้ไข) ได้ไหม


หากคำตอบคือ "คุณต้องมีใบอนุญาตประกอบการค้า" มีทางเลือกอื่นที่ราคาถูกกว่าที่คุณรู้จัก


5
ฉันได้แก้ไขสิ่งนี้เพื่อพูดคุยเกี่ยวกับอูบุนตูอย่างชัดเจนเพื่อที่เราจะได้นำสิ่งที่เขียนด้วยมือข้างหลังพวกเราและตอบคำถามของผู้คน ฉันได้ลบล้างการอภิปรายจากความคิดเห็นและได้เปิดคำถามอีกครั้ง
Oli

โปรดทราบว่าคำถามนี้เกี่ยวกับPyQt4ซึ่งมีอยู่ในทั้ง GNU GPL เมื่อเร็ว ๆ นี้PyQt5เป็น GNU GPLv3 เท่านั้น ความแตกต่างทางเทคนิคที่เหมาะสมมากเกี่ยวกับรหัส "การเชื่อมโยง" นั้นใช้ได้น้อยกว่า (= ไม่เหมาะสำหรับบรรจุภัณฑ์เพื่อการค้า)
มาริโอ

คำตอบ:


18

ฉันไม่ใช่ทนายความและนี่ไม่ใช่คำแนะนำทางกฎหมาย โพสต์นี้เกี่ยวกับตัวเลือกที่คุณมีดังนั้นจึงเป็นเครื่องมือการวิจัยที่มีจุดประสงค์เพื่อใช้ร่วมกับเครื่องมือการวิจัยอื่น ๆ แม้จะใช้ร่วมกับเครื่องมือการวิจัยอื่น ๆ สิ่งนี้ไม่สามารถทดแทนการปรึกษาทนายความเกี่ยวกับกฎหมายใด ๆ ที่คุณต้องการคำตอบที่เหมาะสม

หนึ่งในตัวเลือกใบอนุญาตสำหรับ Qt ( ไม่ PyQt ) คือแอลจี 2.1ซึ่งช่วยให้คุณในการแจกจ่ายโปรแกรมที่เป็นกรรมสิทธิ์ที่ใช้ Qt ห้องสมุดให้ที่คุณปฏิบัติตามข้อกำหนดทั้งหมดของแอลจี 2.1

อย่างไรก็ตาม PyQt ในปัจจุบันมีเพียงสองตัวเลือกสิทธิ์ใช้งาน (เว้นแต่คุณจะเจรจาอย่างอื่นกับผู้พัฒนาซอฟต์แวร์ของตน มันมีอยู่ภายใต้GPL --then เพื่อแจกจ่ายโปรแกรมของคุณมันจะต้องเป็นฟรีซอฟต์แวร์โอเพ่นซอร์ส ; โดยเฉพาะอย่างยิ่งเวอร์ชันใด ๆ ของโปรแกรมของคุณที่คุณเสนอให้ผู้อื่นและที่ใช้ไลบรารี PyQt จะต้องได้รับอนุญาตภายใต้ GPL เช่นกัน

ทางเลือกเดียวสำหรับ GPL สำหรับโปรแกรมที่ใช้ PyQt คือชำระค่าลิขสิทธิ์การค้า ตามที่คุณระบุสิ่งนี้มักจะมีราคาแพงมาก (แต่สำหรับบางแอปพลิเคชั่น

ถ้าเป้าหมายของคุณคือการเขียนGPL-เข้ากันไม่ได้โปรแกรมในหลามที่ใช้ Qt, คุณอาจต้องการที่จะต้องพิจารณาPySide เช่นเดียวกับ PyQt PySide เป็น Python binding สำหรับ Qt ซึ่งให้คุณเขียนโปรแกรม Python ที่ใช้ Qt ไม่เหมือนกับ PyQt PySide มีให้บริการภายใต้ LGPL (เช่น Qt เอง) และสามารถใช้งานได้โดยโปรแกรมที่เป็นกรรมสิทธิ์หากคุณอ่านและปฏิบัติตามข้อกำหนดของ LGPL อย่างระมัดระวัง

บางครั้ง PyQt มีข้อได้เปรียบที่สำคัญเหนือ PySide บ่อยครั้งที่มันไม่ได้ นอกจากนี้ยังมีองค์ประกอบของการกระทำที่คุณอาจต้องการใช้; โปรแกรมเมอร์ที่แตกต่างกันมีการตั้งค่าที่แตกต่างกัน สำหรับข้อมูลเพิ่มเติมโปรดดูที่ความแตกต่างระหว่าง PySide และ PyQt


แอปพลิเคชั่น PyQt4 ไม่จำเป็นต้องมีใบอนุญาต GPL PyQt4 มีข้อยกเว้น GPL ที่อนุญาตเฉพาะใบอนุญาตที่ไม่ใช่ GPL ดู: riverbankcomputing.com/software/pyqt/licenseและgithub.com/Werkov/PyQt4/blob/master/GPL_EXCEPTION.TXT
Mario

1
@Mario ขอบคุณสำหรับข้อมูล! แต่ฉันขอแนะนำให้คุณโพสต์คำตอบที่อธิบายสิ่งนี้อย่างน้อยและอธิบายให้ชัดเจนว่ามันใช้ได้กับ OP ของคำถามนี้อย่างไร (ผู้ที่ต้องการกระจายซอฟต์แวร์ที่เป็นกรรมสิทธิ์ของ PyQt) นี่คือเหตุผล: riverbankcomputing.com/software/pyqt/licenseแสดงว่า PyQt อาจได้รับใบอนุญาตภายใต้ GPL (อนุญาตให้ใช้สองรุ่น) หรือใบอนุญาตการค้า (สองรุ่น) ที่นักพัฒนาจ่าย Riverbank เพื่อจำหน่ายซอฟต์แวร์ PyQt ที่เป็นกรรมสิทธิ์
Eliah Kagan

@Mario การแก้ไขคำตอบหลักของฉันน่าจะอยู่ที่github.com/Werkov/PyQt4/blob/master/GPL_EXCEPTION.TXTซึ่งมีตัวเลือกเพิ่มเติม แต่ดูเหมือนไม่มีใครอนุญาตให้สร้างกรรมสิทธิ์ซอฟต์แวร์ PyQt - เป็นสิทธิ์การใช้งาน FOSS อื่น ๆ นอกจากนี้ยังจะมีหน้าอย่างเป็นทางการกับการเชื่อมโยงไปยังแฟ้มที่หรือข้อมูลอื่น ๆ เพื่อชี้แจงว่าจริงๆมันเป็นเอกสารที่ออกใบอนุญาตอย่างเป็นทางการ? (ฉันเชื่อว่าเป็นไปได้มากที่สุด แต่ฉันไม่แน่ใจว่าฉันจะสาธิตให้ซีอีโอหรือผู้มีส่วนได้ส่วนเสียอื่น ๆ ) เป็นเรื่องแปลกที่ตัวเลือกเพิ่มเติมที่ไม่ได้กล่าวถึงในหน้าการให้สิทธิ์ใช้งานครั้งแรกในเว็บไซต์ Riverbank อย่างเป็นทางการ
Eliah Kagan

ฉันสามารถสร้างโปรแกรมติดตั้งของแอปพลิเคชันที่ใช้ PyQt5 ที่ได้รับสิทธิการใช้งานภายใต้ GPL ได้หรือไม่
Niklas R

1
สวัสดี @EliahKagan! สิ่งที่เกี่ยวกับ PySide 2เหมือนกันใช้?
Francesco Pegoraro

5

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


เช่นเดียวกับเอลียาห์ฉันไม่ใช่ทนายความและเมื่อคุณถูกฟ้องตามคำแนะนำของฉันคุณไม่สามารถพูดได้ว่าฉันไม่ได้เตือนคุณ โดยทั่วไปฉันเห็นด้วยกับ Eliah แต่ฉันคิดว่าในกรณีนี้ Python แตกต่างกันเล็กน้อย

ซอฟต์แวร์ GPL อนุญาตให้คุณแจกจ่ายต่อได้ตราบเท่าที่คุณให้สิทธิ์ภายใต้ใบอนุญาตเดียวกัน ในกรณีนี้คุณจะแจกจ่าย PyQT ซึ่งคุณสามารถทำได้ คุณต้องการกระจายสินค้าของคุณ โดยส่วนตัวฉันไม่เห็นว่าทำไมคุณไม่สามารถทำทั้งสองอย่างตราบใดที่คุณทำให้แหล่งที่มาพร้อมใช้งานสำหรับสิ่งที่คุณกำลังใช้ GPL คุณไม่ได้รวมมันเข้ากับ Python ของคุณคุณแค่ใช้มัน

หากต้องการอธิบายเพิ่มเติมเกี่ยวกับสิ่งที่ฉันกำลังพูดถึงหากคุณรวมไลบรารีในโครงการ C และรวบรวมมันลงไปคุณจะได้รหัส GPL ในไบนารีของคุณหรือคุณจะสร้างห้องสมุดคงที่รหัสของคุณเชื่อมโยงกับ ( แบบคงที่หรือแบบไดนามิก) FSF จะเรียกร้องให้คุณทำให้รหัสของคุณพร้อมใช้งานโดย GPL หากคุณแจกจ่ายรหัสที่ป้องกันของพวกเขาใหม่

ดูความแตกต่าง? การแจกแจงข้อความตามไพ ธ อนหมายความว่าการเชื่อมโยงนั้นค่อนข้างมีพลวัต: ไม่มี "ลิงก์" ไปยังรหัส GPL และการอ้างอิงไปยัง PyQT อาจถูกทดแทนในสภาพแวดล้อมที่แตกต่างกัน คุณเพิ่งใช้ API

หากคุณค้นหา "python import gpl" คุณจะพบข้อโต้แย้งมากมายทั้งสองทิศทางจากทนายความที่ไม่ใช่ทนายความจำนวนมาก นี่ไม่ใช่การโต้แย้งที่ง่ายและหากมีการฟ้องร้องคุณสามารถสาปแช่งได้ว่าทุกคนในด้านซอฟต์แวร์เสรีของผู้พิพากษาจะขว้างทุกอย่างที่อยู่เพื่อให้แน่ใจว่ามีการตั้งค่าก่อนหน้าเชิงลบ

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

การเพิกเฉยการออกใบอนุญาตจะมีราคาแพงกว่ามาก


2
«คุณไม่ได้รวมมันเข้ากับ Python ของคุณคุณแค่ใช้มัน»ถ้าคุณนำเข้าโมดูล Python ของ GPLed ทั้งหมดจะกลายเป็น GPL
Andrea Lazzarotto
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.