Mã nguồn phải được phát hành theo GPL phải có thể đọc được?


Câu trả lời:


37

GPL yêu cầu nó phải là phiên bản ưa thích để chỉnh sửa. Nếu bạn thường viết mã bị xáo trộn và thay đổi trực tiếp trong đó, thì đó là nguồn cho GPL. Nếu bạn làm việc trên một phiên bản có thể đọc được, và sau đó chạy nó thông qua bất kỳ loại obfuscator nào, phiên bản có thể đọc được là những gì GPL coi là nguồn.

"Khả năng đọc" là chủ quan và không được xác định. Nó là hợp pháp để phát hành thực sự xấu, khó hiểu, mã theo GPL. Sẽ không hợp pháp khi lấy phiên bản mà bạn thực hiện thay đổi, xóa khoảng trắng hoặc làm cho nó ít đọc hơn và gọi đó là nguồn theo GPL.


1
rất thú vị, cảm ơn Có một phần cụ thể của giấy phép nêu rõ điều này?
Armand

12
GPLv2, Điều khoản và Điều kiện, từ khoản 3: "Mã nguồn cho tác phẩm có nghĩa là hình thức ưa thích của tác phẩm để thực hiện sửa đổi cho nó.".
David Thornley

4
Hạn chế này chỉ áp dụng cho người được cấp phép. Đối với mã của riêng bạn (không có mã GPL bên ngoài được rút ra), bạn có thể làm xáo trộn bao nhiêu tùy ý và vẫn dán nhãn GPL lên nó (để cấp quyền cho người khác). nVidia đã làm điều này với mã trình điều khiển trở lại trong ngày (1998 hoặc lâu hơn)
Patrick Georgi

2
Điều đó nói rằng, thật vô nghĩa khi "tát một nhãn dán GPL" vào một tác phẩm mà bạn không cung cấp mã nguồn có thể sử dụng được, như trong ví dụ của nVidia. Bạn cũng có thể đã sử dụng một giấy phép độc quyền. Rõ ràng nVidia muốn được xem là chia sẻ mã của họ mà không thực sự chia sẻ mã của họ.
thomasrutter

1
Chỉ tò mò thôi. Điều gì xảy ra nếu bạn làm việc trong một trình soạn thảo độc quyền lưu nguồn dưới dạng được mã hóa? Về mặt lý thuyết bạn có mã theo cách bạn làm việc với nó, tuy nhiên, không ai khác có thể làm việc với nó vì đó là một công cụ độc quyền không ai có quyền truy cập.
Aidiakapi

6

Lấy GPL v3, trong phần 1 bạn có:

Mã nguồn tương ứng của Vik cho một tác phẩm ở dạng mã đối tượng có nghĩa là tất cả mã nguồn cần thiết để tạo, cài đặt và (cho một tác phẩm thực thi) chạy mã đối tượng và sửa đổi công việc, bao gồm các tập lệnh để kiểm soát các hoạt động đó.

Nếu các bình luận và khoảng trắng bị xóa, cũng như tên hàm và biến thay đổi, bạn sẽ không thể sửa đổi hợp lý tác phẩm.

Ngoài ra:

Nguồn tương ứng cho một tác phẩm ở dạng mã nguồn là cùng một tác phẩm.

Công việc đó cũng vậy, không phải là một công việc thay đổi.

Vì vậy, để làm rõ quan điểm trước đây của tôi, mã nguồn phải không được thay đổi, tôi giả sử văn bản của con người == con người có thể đọc được. Nhưng vâng, bạn có thể viết trực tiếp vào những gì có thể được coi là không thể đọc được.


4

Câu hỏi không bao gồm một số thông tin quan trọng. Nếu bạn là tác giả duy nhất, bạn có thể phát hành mã của riêng mình theo bất kỳ giấy phép nào bạn muốn (bao gồm GPL) mà không nhất thiết phải tuân theo tất cả các quy tắc của nó. Do đó, bạn có thể gửi mã theo hình thức không được ưa thích để chỉnh sửa mã đó và không vi phạm bất kỳ luật bản quyền nào. Việc người khác có thể mở rộng mã của bạn theo tinh thần của nó theo giấy phép Phần mềm Tự do hay không là điều đáng nghi ngờ, vì vậy rất ít người có thể thử.

Tuy nhiên, hầu hết thời gian bạn sẽ không phải là tác giả duy nhất của một tác phẩm. Bạn sẽ tận dụng mã hiện có, tạo ra một tác phẩm phái sinh. Một tác phẩm như vậy phải tuân theo các quy tắc kết hợp của dòng dõi của nó hoặc bạn sẽ không được phép phân phối nó mà không vi phạm bản quyền.

Để làm cho điều này rõ ràng hơn, đây là một số ví dụ (IANAL):

  • Nếu bạn sử dụng thư viện GPL trong mã của mình, bạn sẽ không được phép gửi mã nguồn của riêng mình ở dạng bị xáo trộn trừ khi (như David Thornley viết) thực sự là hình thức bạn viết và chỉnh sửa nó.
  • Nếu bạn sử dụng thư viện LGPL trong mã của mình, bạn sẽ chỉ được phép gửi mã nguồn của riêng mình ở dạng bị xáo trộn. Điều này là do LGPL chỉ yêu cầu bạn có thể sử dụng công việc sử dụng thư viện với phiên bản mới hơn của thư viện.
  • Nếu bạn mở rộng thư viện LGPL, đây sẽ giống như trường hợp GPL và bạn sẽ phải gửi mã không bị xáo trộn (một lần nữa trừ khi đó là cách bạn thực sự chỉnh sửa nó).

1
bạn phải tuân theo tất cả các quy tắc của giấy phép, bất kể ai sở hữu bản quyền. Nếu bạn quyết định bạn muốn sử dụng thư viện JS của mình trên trang web của riêng bạn và cũng phát hành nó theo GPL, bạn có thể muốn làm điều đó một cách riêng biệt. Câu hỏi này không phải là về LGPL, mặc dù nếu các hạn chế tương tự áp dụng cho LGPL vì GPL liên quan đến khả năng đọc mã thì điều đó sẽ hữu ích khi đề cập ở đây.
Armand

@ Alison: Các điều kiện cấp phép áp dụng cho người sử dụng (và phân phối lại, trong trường hợp này) các tác phẩm, không áp dụng cho điều kiện ban đầu tạo ra nó và cấp phép cho bạn.
Paŭlo Ebermann

1
@ Alison Không đồng ý. Nếu bạn là chủ sở hữu duy nhất của tác phẩm, bạn có thể xem lại nó theo ý muốn. Do đó, bạn có thể phân phối nó theo các điều khoản (giấy phép không xác định ma thuật ở đây) và cho phép người khác phân phối lại theo các điều khoản của GPL - GPL chỉ thêm quyền để cho phép người khác phân phối lại các tác phẩm có nguồn gốc từ bạn. Tất nhiên đây không phải là một tình huống có thể xảy ra, vì nếu bạn không tin vào GPL và là chủ sở hữu duy nhất, bạn sẽ không sử dụng nó.
Michael Urman

Bạn không phải gửi mã nguồn của riêng mình sử dụng thư viện LGPL, miễn là ngôn ngữ cho phép nhị phân. Bạn phải gửi những gì sẽ cho phép người dùng thay đổi phần LGPLed và xây dựng lại ứng dụng (mặc dù GPLv2 cho phép bạn ngăn người dùng cài đặt phiên bản đã thay đổi). Nếu bạn làm nguồn tàu, từ sự cần thiết hoặc thuận tiện, nó có thể bị xáo trộn.
David Thornley

Điểm tốt. Tôi sẽ chỉnh sửa bài đăng của mình để không còn nói rằng LGPL không yêu cầu công việc sử dụng nó.
Michael Urman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.