รหัสแหล่งที่มาที่เปิดตัวภายใต้ GPL ต้องอ่านได้หรือไม่


22

ในการตอบคำถามอื่นผู้โพสต์แนะนำว่าภายใต้ GPL:

... คุณต้องจัดเตรียม [code] ที่มนุษย์สามารถอ่านได้ไม่ใช่รุ่นที่เว้นช่องว่าง ...

การอ่านจะดูเหมือนว่าฉันจะเป็นอัตนัยและไม่น่าจะเป็นที่ต้องการอย่างชัดเจนโดย GPL ใช่ไหม?

คำตอบ:


37

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

"ความสามารถในการอ่าน" เป็นเรื่องส่วนตัวและไม่ได้กำหนดไว้ เป็นเรื่องถูกกฎหมายที่จะเผยแพร่โค้ดที่ไม่ดีจริงๆเข้าใจยากภายใต้ GPL มันไม่ถูกกฎหมายที่จะใช้รุ่นที่คุณทำการเปลี่ยนแปลงเอาช่องว่างออกหรือทำให้อ่านได้น้อยลงและเรียกแหล่งที่มาภายใต้ GPL


1
น่าสนใจมากขอบคุณ มีส่วนใดส่วนหนึ่งของใบอนุญาตที่ระบุสิ่งนี้หรือไม่?
Armand

12
GPLv2 ข้อตกลงและเงื่อนไขจากข้อ 3: "ซอร์สโค้ดสำหรับงานหมายถึงรูปแบบที่ต้องการของงานเพื่อทำการแก้ไข
David Thornley

4
ข้อ จำกัด นี้ใช้กับผู้ได้รับอนุญาตเท่านั้น สำหรับรหัสของคุณ (ไม่มีรหัส GPL ภายนอกวาดอยู่) คุณสามารถทำให้ยุ่งเหยิงได้มากเท่าที่คุณต้องการและยังคงวางสติ๊กเกอร์ GPL ไว้บนมัน (เพื่อให้สิทธิ์แก่ผู้อื่น) nVidia ทำสิ่งนี้พร้อมกับรหัสไดรเวอร์ในวันนั้น (1998 หรือมากกว่านั้น)
Patrick Georgi

2
ที่กล่าวว่าไม่มีความหมายที่จะ "ตบสติ๊กเกอร์ GPL" ในงานที่คุณไม่ได้ให้ซอร์สโค้ดที่ใช้งานได้ดังในตัวอย่าง nVidia คุณอาจใช้สิทธิ์การใช้งานเป็นเจ้าของเช่นกัน เห็นได้ชัดว่า nVidia ต้องการถูกมองว่าเป็นการแชร์รหัสโดยไม่แชร์รหัส
thomasrutter

1
เพิ่งออกมาจากความอยากรู้ จะเป็นอย่างไรถ้าคุณทำงานในเครื่องมือแก้ไขลิขสิทธิ์ที่บันทึกแหล่งที่มาในรูปแบบเข้ารหัส? ในทางทฤษฎีคุณมีรหัสในวิธีที่คุณทำงานกับมันอย่างไรก็ตามไม่มีใครสามารถทำงานกับมันได้เพราะมันเป็นเครื่องมือที่ไม่มีใครสามารถเข้าถึงได้
Aidiakapi

6

รับ GPL v3 ในส่วนที่ 1 คุณมี:

“ แหล่งที่มาที่สอดคล้องกัน” สำหรับงานในรูปแบบรหัสวัตถุหมายถึงซอร์สโค้ดทั้งหมดที่จำเป็นในการสร้างติดตั้งและ (สำหรับงานที่ปฏิบัติการได้) ใช้งานรหัสวัตถุและแก้ไขงานรวมถึงสคริปต์เพื่อควบคุมกิจกรรมเหล่านั้น

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

นอกจากนี้:

แหล่งที่มาที่สอดคล้องกันสำหรับงานในรูปแบบซอร์สโค้ดคืองานเดียวกัน

งานเดียวกันนั่นไม่ใช่งานที่ถูกดัดแปลง

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


4

คำถามไม่ได้รวมข้อมูลที่สำคัญบางอย่าง หากคุณเป็นผู้แต่งเพียงคนเดียวคุณสามารถปล่อยรหัสของคุณเองภายใต้ใบอนุญาตใด ๆ ที่คุณต้องการ (รวมถึง GPL) โดยไม่จำเป็นต้องปฏิบัติตามกฎทั้งหมดของมัน ดังนั้นคุณสามารถส่งรหัสในรูปแบบที่ไม่ต้องการให้แก้ไขได้และไม่ละเมิดกฎหมายลิขสิทธิ์ใด ๆ ไม่ว่าคนอื่นจะสามารถขยายรหัสของคุณด้วยจิตวิญญาณของมันภายใต้ใบอนุญาตซอฟต์แวร์เสรีเป็นที่น่าสงสัยหรือไม่ดังนั้นมีน้อยคนที่จะลอง

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

ในการทำให้ชัดเจนยิ่งขึ้นนี่คือตัวอย่างบางส่วน (IANAL):

  • หากคุณใช้ไลบรารี GPL ในรหัสของคุณคุณจะไม่ได้รับอนุญาตให้จัดส่งซอร์สโค้ดของคุณเองในรูปแบบที่สับสนเท่านั้นเว้นแต่ (ตามที่ David Thornley เขียน) ซึ่งจริง ๆ แล้วเป็นรูปแบบที่คุณเขียนและแก้ไข
  • หากคุณใช้ไลบรารี LGPL ในรหัสของคุณคุณจะได้รับอนุญาตให้ส่งซอร์สโค้ดของคุณเองเฉพาะในรูปแบบที่สับสน นี่เป็นเพราะ LGPL ต้องการให้คุณใช้งานที่ใช้ไลบรารีกับไลบรารีเวอร์ชันที่ใหม่กว่าเท่านั้น
  • หากคุณขยายไลบรารี LGPL สิ่งนี้จะเหมือนกับกรณี GPL และคุณจะต้องจัดส่งรหัสที่ไม่ยุ่งเหยิง (อีกครั้งเว้นแต่ว่าเป็นวิธีที่คุณแก้ไขจริง)

1
คุณต้องปฏิบัติตามกฎทั้งหมดของใบอนุญาตไม่ว่าใครจะเป็นเจ้าของลิขสิทธิ์ หากคุณตัดสินใจว่าคุณต้องการใช้ไลบรารี JS ของคุณบนเว็บไซต์ของคุณเองและเผยแพร่ภายใต้ GPL คุณอาจต้องการแยกจากกัน คำถามนี้ไม่เกี่ยวกับ LGPL แม้ว่าจะมีข้อ จำกัด คล้ายกันกับ LGPL เนื่องจาก GPL เกี่ยวกับความสามารถในการอ่านโค้ด
Armand

@Alison: เงื่อนไขการอนุญาตให้ใช้กับงานที่ใช้ (และการแจกจ่ายซ้ำในกรณีนี้) ผลงานไม่ใช่การสร้างสรรค์และการให้สิทธิ์ใช้งานแก่คุณ
Paŭlo Ebermann

1
@Alison ไม่เห็นด้วย หากคุณเป็นเจ้าของผลงานเพียงผู้เดียวคุณสามารถขออนุญาตทำงานได้ตามต้องการ ดังนั้นคุณสามารถแจกจ่ายได้ภายใต้เงื่อนไขของ (ใบอนุญาตวิเศษที่ไม่ได้ระบุไว้ที่นี่) และอนุญาตให้ผู้อื่นแจกจ่ายต่อภายใต้เงื่อนไขของ GPL - GPL จะเพิ่มสิทธิ์ในการอนุญาตให้ผู้อื่นเผยแพร่ผลงานของคุณเท่านั้น แน่นอนว่านี่ไม่ใช่สถานการณ์ที่น่าเป็นไปได้ราวกับว่าคุณไม่เชื่อใน GPL และเป็นเจ้าของ แต่เพียงผู้เดียวคุณจะไม่ใช้มัน
Michael Urman

คุณไม่จำเป็นต้องจัดส่งซอร์สโค้ดของคุณเองซึ่งใช้ไลบรารี LGPL หากภาษานั้นอนุญาตให้ใช้ไบนารี คุณต้องจัดส่งสิ่งที่จะอนุญาตให้ผู้ใช้เปลี่ยนชิ้นส่วน LGPLed และสร้างแอปขึ้นใหม่ (แม้ว่า GPLv2 จะช่วยให้คุณสามารถป้องกันผู้ใช้จากการติดตั้งเวอร์ชันที่เปลี่ยนแปลง) หากคุณทำแหล่งที่มาของเรือไม่ว่าจะจากความจำเป็นหรือความสะดวกสบายอาจเป็นเรื่องที่สับสน
David Thornley

จุดดี. ฉันจะแก้ไขโพสต์ของฉันไม่ให้พูดว่า LGPL ไม่ต้องการข้อกำหนดเกี่ยวกับงานที่ใช้งานอีกต่อไป
Michael Urman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.