Tránh vi phạm GPL bằng cách di chuyển thư viện ra khỏi quy trình


21

Giả sử có một thư viện được cấp phép theo GPL. Tôi muốn sử dụng nó là dự án nguồn đóng. Tôi làm như sau:

  1. Tạo ứng dụng trình bao bọc nhỏ xung quanh thư viện GPL đó lắng nghe ổ cắm, phân tích thông điệp và gọi thư viện GPL. Sau đó trả lại kết quả.
  2. Phát hành các nguồn của nó (để tuân thủ GPL)
  3. Tạo ứng dụng khách cho trình bao bọc này trong ứng dụng chính của tôi và không phát hành nguồn.

Tôi biết rằng điều này thêm chi phí rất lớn so với liên kết tĩnh / động, nhưng tôi quan tâm đến cách lý thuyết.


6
Trình bao bọc bạn viết sẽ được cấp phép theo GPL. Do đó, chương trình sử dụng trình bao bọc vẫn phải tuân theo các điều khoản của GPL để liên kết, v.v.
TZHX

4
tại sao không liên hệ với tác giả trước và xem bạn có thể cấp phép cho nó theo LGPL hoặc tương tự không.
jk.

8
@TZHX Tôi tin rằng anh ta có nghĩa là trình bao bọc sẽ là một ứng dụng riêng biệt hoạt động như một máy chủ - mã độc quyền của anh ta sẽ có trong máy khách
jk.

ứng dụng nguồn đóng cũng sẽ được phân phối? và phiên bản nào của GPL là giấy phép
jk.

2
@jwenting câu hỏi nói rõ rằng nó sắp hết quy trình
jk.

Câu trả lời:


32

Về mặt pháp lý , tôi muốn nói rằng nó sẽ ổn (nhưng tôi không phải là luật sư - hãy hỏi ý kiến ​​luật sư để được tư vấn pháp lý).

Về mặt đạo đức , nó khá đáng trách. Nếu bạn không thích GPL, thì giải pháp "phù hợp" là không sử dụng thư viện GPL.

Chỉnh sửa : Để làm rõ, bất kể vị trí pháp lý của GPL liên quan đến việc liên kết động có được phép hay không, LGPL được tạo riêng với mục đích cho phép liên kết động trong trường hợp thư viện. Vì vậy, dường như rõ ràng với tôi rằng bằng cách chọn GPL trên LGPL, tác giả của thư viện đã làm điều đó một cách rõ ràng để không cho phép liên kết động. Theo tôi, việc sử dụng một phương tiện kỹ thuật để khắc phục một hạn chế pháp lý thể hiện ý định rõ ràng của tác giả đối với mã của anh ta là điều đáng trách, theo ý kiến ​​của tôi.

Đối với hồ sơ, cá nhân tôi không phải là người hâm mộ GPL (tôi thích giấy phép dễ dãi hơn như MIT hoặc BSD). Tuy nhiên, tôi là một fan hâm mộ lớn của việc tôn trọng công việc của các nhà phát triển khác và nếu họ không muốn bạn liên kết thư viện của họ với phần mềm nguồn đóng, thì đó là đặc quyền.


12
Tôi không nghĩ rằng có một vấn đề đạo đức ở đây - GPL dường như cho phép rõ ràng trường hợp sử dụng của anh ta
jk.

3
@vartec ở đây được trích dẫn từ Câu hỏi thường gặp về GPL chính thức: "Liên kết tĩnh hoặc động với các mô-đun khác đang tạo ra một công việc kết hợp dựa trên. Do đó, các điều khoản và điều kiện của Giấy phép Công cộng GNU bao gồm toàn bộ kết hợp." Nếu Stallman có tầm nhìn khác về Nguồn mở là gì, điều đó không có nghĩa là anh ta ghét nó. Ông là một trong những nhà tư tưởng chính của phong trào này.
Andrey

8
@vartec: Tôi có ấn tượng rằng bạn không hiểu rằng, khi bạn sử dụng mã MỘT SỐ ELSE trong ứng dụng CỦA BẠN, BẠN bắt buộc phải tuân thủ các điều khoản mà HE đưa vào sử dụng mã NGÀI. Đừng như vậy? Đừng sử dụng mã GPL của người khác. Thật đơn giản.
John R. Strohm

3
Đây là gợi ý của tôi: rút ra từ mã GPL mà bạn dường như quá phụ thuộc và xem vụ kiện của tòa án diễn ra như thế nào. GPL3 được tạo ra để cắm một lỗ hổng hợp pháp như vậy vào GPL2, vì vậy có thể bạn sẽ thoát khỏi nó. Tôi nghi ngờ mọi người sẽ ném diễu hành để vinh danh bạn vì bạn đã thoát khỏi sự điều động hợp pháp và nếu bạn đủ hiệu quả, mọi người sẽ cấp phép cho mã của họ với nhiều điều khoản sử dụng hơn chỉ để chọc tức bạn. Cuối cùng, điều đó có thể cải thiện thế giới bằng cách tránh các chủ đề như thế này.
Godeke

3
Tôi MẠNH không đồng ý với tuyên bố rằng nó đáng bị khiển trách về mặt đạo đức. Điều đáng trách về mặt đạo đức là nói với mọi người rằng họ không có quyền làm những việc mà GPL cho phép họ làm. Khi tôi đặt một tác phẩm theo GPL, tôi làm như vậy vì tôi muốn áp dụng các quy tắc của GPL. Nói với mọi người rằng họ không nên thực hiện các quyền mà GPL cung cấp cho họ là đáng trách. Đây là điều mà GPL cho phép. Những người làm việc theo GPL làm như vậy vì họ muốn cho phép điều này.
David Schwartz

6

IANAL nhưng tôi tin rằng bạn ổn, phần có liên quan của GPL3 nằm ở cuối phần 5:

Một phần tổng hợp của một tác phẩm được bảo hiểm với các tác phẩm độc lập và riêng biệt khác, không phải là phần mở rộng bản chất của tác phẩm được bảo hiểm và không được kết hợp với nó như để tạo thành một chương trình lớn hơn, trong hoặc trên một khối lượng lưu trữ hoặc phân phối trung bình, được gọi là tổng hợp các ứng dụng, nếu việc biên dịch và bản quyền kết quả của nó không được sử dụng để giới hạn quyền truy cập hoặc quyền hợp pháp của người dùng biên dịch vượt quá những gì tác phẩm cá nhân cho phép. Việc đưa vào một tác phẩm được bảo hiểm trong một tổng hợp không khiến Giấy phép này áp dụng cho các phần khác của tổng hợp.

Điều này có lẽ sẽ phụ thuộc vào chính xác những gì 'khách hàng' của bạn làm, câu trả lời của mouviciel có lẽ là hướng dẫn tốt về cách thực hiện một cách an toàn

Nếu bạn nghĩ rằng ứng dụng của bạn là một phần mở rộng của thư viện chứ không phải là thứ gì đó được tổng hợp với nó thì có lẽ bạn đã đúng (bạn nên ở một nơi tốt để biết điều này) trong trường hợp đặt cược tốt nhất của bạn là liên hệ với tác giả và cố gắng để có được giấy phép khác nhau

điều này dường như ủng hộ quan điểm của tôi rằng điều này được GPL cho phép rõ ràng, giả sử được thực hiện đúng.


Tôi đọc nó, nhưng vấn đề là văn bản GPL được viết bằng ngôn ngữ pháp lý , không phát triển . Thủ thuật với trình bao bọc là làm cho ứng dụng thương mại "tổng hợp", chứ không phải "phái sinh". Nhưng tôi nghĩ nó thuộc "phần mở rộng tự nhiên của tác phẩm được bảo hiểm".
Andrey

tốt để được giúp đỡ về ngôn ngữ pháp lý, bạn sẽ cần một luật sư. Nếu bạn nghĩ rằng ứng dụng của bạn là một phần mở rộng của thư viện chứ không phải là thứ gì đó được tổng hợp với nó thì có lẽ bạn đã đúng (bạn nên ở một nơi tốt để biết điều này) trong trường hợp đặt cược tốt nhất của bạn là liên hệ với tác giả và cố gắng để có được giấy phép khác nhau
jk.

1
@Andrey: Nếu "bản chất" của chương trình của bạn được gắn trực tiếp với mã GPL, phần được trích dẫn ở trên sẽ không được áp dụng. Từ câu hỏi của bạn có vẻ như đó là trường hợp. Một ví dụ ngược lại có thể là một chương trình phân tích xâm nhập mạng, tình cờ sử dụng đường đọc GNU thông qua cơ chế bạn đề xuất. (Readline là một trường hợp thử nghiệm thú vị vì có một giải pháp thay thế thả vào được cấp phép BSD.)
Fred Nurk

Mệnh đề "tổng hợp" là để làm rõ rằng trên cùng một bản phân phối CD-Rom hoặc Linux không tạo ra đạo hàm.
Sean McMillan

6

Xem phần Tôi muốn kết hợp phần mềm được bảo hiểm GPL trong hệ thống độc quyền của tôi. Tôi có thể làm điều này?

Câu hỏi là, ứng dụng trình bao bọc của bạn có sử dụng riêng không? Nếu bạn tạo phiên bản dòng lệnh của chương trình là GPL, bạn có thể phát hành GUI theo một giấy phép khác. Ví dụ: bạn có thể tạo IDE cho gcc là nguồn đóng hoặc công cụ tìm khác biệt dựa trên diff.

Tuy nhiên, nếu thư viện của bạn không có thư mục nào khác ngoài việc được sử dụng bởi chương trình của bạn và chương trình bạn sẽ không sử dụng được nếu không có thư viện này, đó là một tác phẩm xuất phát và sẽ cần được phát hành theo GPL.


Hiểu biết của tôi là bạn có thể cấp phép cho trình bao bọc theo MIT và vẫn ổn.
Máy nướng bánh mì

2
Colin, hoàn toàn không. Trình bao bọc được kết hợp rõ ràng với thư viện GPL thành một tệp nhị phân duy nhất. Để sử dụng mã GPL trong một nhị phân, bạn phải GPL mã của riêng bạn để tuân thủ giấy phép.
Bê tông Gannet

5

IMO, về mặt pháp lý là ổn. (IANAL) Để cải thiện khía cạnh đạo đức của vấn đề, đừng gọi nó là "Trình bao bọc FooBar giúp FooBar legaly có sẵn cho MyClosesApp", hãy gọi nó là máy chủ. Làm cho nó trở thành một chương trình mã nguồn nhỏ tuyệt vời "cho phép thực hiện FooBar qua mạng". Đặt nó trên SourceForge hoặc dành một trang web cho nó, với trang dự án và hướng dẫn và công cụ. Sau đó, hãy để "MyClosesApp" chỉ sử dụng "máy chủ FooBar".


2

Theo tôi hiểu, bạn có thể để phần mềm của mình đóng nguồn miễn là nó có thể thực hiện công việc của nó mà không cần thư viện GPL. Xem thư viện GPL như một plugin mà sự vắng mặt không làm cho phần mềm của bạn trở nên vô dụng.


1
điều đó chắc chắn là sai sử dụng nó làm plugin (còn gọi là liên kết động) làm cho ứng dụng kết quả là "phái sinh" và chủ đề của GPL.
Andrey

Tôi không chắc plugin luôn đồng nghĩa với liên kết động. Và chắc chắn trong trường hợp này, OP không đề xuất liên kết linh hoạt bất cứ điều gì nên tôi nghĩ rằng lời khuyên của
mouviciel

@jk tốt, nếu bạn chỉ tạo một plugin và nó dựa trên giấy phép GPL thì điều này có mùi vi phạm.
Andrey

4
AGPL sẽ không cấm điều này trừ khi ổ cắm qua mạng. Nó khá cụ thể. Ngoài ra, đây không phải là một thử nghiệm về tính hữu dụng, mà là mức độ chặt chẽ của phần mềm GPLed và độc quyền. Liên kết tĩnh chắc chắn là quá gần, các ổ cắm (trừ trường hợp AGPL cụ thể) chắc chắn vẫn ổn, liên kết động có thể hoặc không (Tôi đã nghe thấy các đối số nghe có vẻ hợp pháp ở mỗi bên và chưa có luật án lệ của Hoa Kỳ).
David Thornley

1
@Andrey: vì vậy bây giờ bạn đang nói chừng nào một phần mềm nguồn đóng như Photoshop có thể thực hiện công việc của mình mà không cần thành phần GPL, người ta có thể phân phối nó mà không cần biến nó thành GPL. Đó là chính xác những gì câu trả lời này nói.
Doc Brown

1
  1. cố gắng tìm giải pháp thay thế Nguồn mở, nếu không có, hãy tìm GPL;
  2. kiểm tra xem đó có phải là GPLv3 với mệnh đề Affero không, không có gì phải làm cả;
  3. nếu đó là GPLv2, bạn có thể làm chính xác như bạn đề xuất;

Ngoài ra còn có một số lựa chọn gây tranh cãi. Theo hầu hết các cơ quan lập pháp, liên kết động phải là ranh giới của "công việc xuất phát". Logic đằng sau điều này là, trong khi liên kết động, bạn chỉ bao gồm các tệp tiêu đề trong chương trình của mình. Trong nhiều tệp tiêu đề lập pháp được coi là định nghĩa API và được loại trừ rõ ràng khỏi bị bản quyền. Mặt khác, với liên kết động, liên kết thực tế với thư viện GPL được thực hiện trên hệ thống của người dùng cuối. Nhưng như tôi đã nói, có rất nhiều tranh cãi với nó, Stallman rất mạnh mẽ chống lại điều này.


sự khác biệt giữa GPL v2 và v3 khiến cho việc hack của tôi là không thể? Những gì tôi làm nó không liên kết động, tôi tách chúng ra càng nhiều càng tốt.
Andrey

Một trong những mục tiêu của GPLv3 là ngăn chặn phương pháp 'lách luật' đó.
vartec

4
Đầu tiên, các biến thể GPL là giấy phép Nguồn mở chính thức, được OSI phê chuẩn (giống như giấy phép BSD không có điều khoản quảng cáo là giấy phép Phần mềm Tự do được Stallman phê duyệt). Thứ hai, không có phiên bản GPL (bao gồm cả Affero) hạn chế khả năng GPLed và phần mềm độc quyền của bạn giao tiếp với các phương thức giao tiếp giữa các quy trình tiêu chuẩn, như ổ cắm.
David Thornley

IMO GPLv3 cho phép ví dụ mệnh đề DRM vi phạm điểm 6. của Định nghĩa nguồn mở opensource.org/docs/osd
vartec

1
@vartec: DRM không phải là "Lĩnh vực nỗ lực". Xem phần "Ví dụ, nó có thể không hạn chế chương trình được sử dụng trong [liên doanh thương mại] hoặc không được sử dụng cho nghiên cứu di truyền." OSI rõ ràng tin rằng GPL3 là Nguồn mở và đáp ứng tất cả các điểm trong định nghĩa của họ, vì họ đã chấp thuận nó.
Thomas Edleson

0

Sẽ là hợp pháp khi Adam Brown viết một chương trình sử dụng thư viện GPL và hoạt động như một "máy chủ", nếu anh ta phát hành tất cả mã nguồn cho mọi thứ liên quan đến nó, nhưng mã khách hàng duy nhất anh ta phát hành là khá yếu vì đó là tất cả ông đã viết phía khách hàng? Tôi thấy không có cơ sở nào để nghĩ rằng nó sẽ không.

Nếu Charles Dover tìm thấy "máy chủ" của Adam Brown và quyết định viết một chương trình nguồn đóng để liên lạc với nó, liệu GPL có hạn chế hành động của anh ta theo bất kỳ cách nào không? Không phải tôi có thể thấy, vì việc sử dụng phần mềm GPL'ed duy nhất của anh ta sẽ giống như các nhị phân anh ta nhận được từ Adam Brown. Nếu anh ta phân phối nhị phân của Adam, anh ta cũng phải bao gồm một liên kết đến nguồn, nhưng không có gì khác trong GPL sẽ ảnh hưởng đến bất kỳ mã nào của Charles.

Đối với một người viết một máy chủ được cấp phép GPL, và sau đó sử dụng máy chủ cho mục đích nguồn đóng của riêng mình, tôi sẽ không nghĩ rằng sẽ có bất kỳ vấn đề pháp lý nào nếu viết máy chủ mà anh ta đã nỗ lực hết sức để thực hiện hữu ích cho những người khác có thể muốn sử dụng mã GPL được cung cấp theo cách tương tự. Cụ thể, tài liệu được phát hành công khai của giao diện phải đủ để cho phép lập trình viên có thẩm quyền viết mã cho máy chủ được chương trình khách chấp nhận như bản gốc và viết chương trình máy khách sẽ sử dụng máy chủ theo cách tương tự như ứng dụng của tác giả.

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.