LGPL có cho phép tôi làm điều này không?


16

Tôi đang lên kế hoạch phát triển một phần mềm thương mại bằng phần mềm LGPL.

Trong phần mềm LGPL mà tôi đang sử dụng một số chức năng trong một lớp không được triển khai đầy đủ. Tôi muốn sửa đổi mã LGPL để các lớp và các hàm không được triển khai được hiển thị bên ngoài dll bằng cách thêm dllexport vào trước lớp và bằng cách thêm từ khóa ảo vào trước hàm.

Sau đó, tôi có kế hoạch thực hiện các chức năng đó trong phần mềm độc quyền của mình. Tôi sẵn sàng phân phối mã LGPL đã sửa đổi nhưng không phải là phần mềm độc quyền thực hiện các chức năng theo cách tôi muốn.

Điều đó có vi phạm các điều khoản và điều kiện của LGPL không?



6
Vấn đề với câu hỏi của bạn ở đây là bạn không cố gắng sử dụng giấy phép theo tinh thần đã được viết. Chúng tôi có thể trả lời các câu hỏi về ý nghĩa dự định của giấy phép, nhưng chúng tôi không thể tin vào chi tiết pháp lý một cách đáng tin cậy . Đối với điều đó, chúng tôi chỉ có thể đề nghị một luật sư. Hơn nữa, những gì bạn đang làm phụ thuộc vào một câu hỏi pháp lý (công việc xuất phát của phần mềm LGPLed là gì?) Chưa được giải quyết ở Hoa Kỳ trong luật án lệ và tôi đã thấy những ý kiến ​​khác nhau giữa các luật sư thực sự. (Tôi không phải là luật sư, nhưng tôi đã tình cờ theo dõi những vấn đề này.)
David Thornley

Khó nói. Đọc điều này: javalulk.org/java/forums/t15903.html - họ đang nói về Java, nhưng dường như nó có thể áp dụng cho bất kỳ ngôn ngữ OO nào.
Mike Baranczak

Câu trả lời:


26

Đây là một câu hỏi phức tạp, nhưng tôi tin rằng những gì bạn đề xuất không được phép.

Bạn đang đề xuất móc thêm vào thư viện để làm cho nó dễ dàng hơn để bạn có thể sub-class thư viện và do đó, ít nhất. để bỏ qua tinh thần của LGPL.

Vấn đề là, nếu bạn phân lớp một lớp tuân theo giấy phép LGPL trong mã của riêng bạn, thì công việc của bạn trở thành công việc dựa trên thư viện , thay vì công việc sử dụng thư viện có nghĩa là mã của bạn phái sinh công việc được đề cập trong phần 2 ( LGPL v2.1 ) chứ không phải là công việc được đề cập trong phần 6 ( LGPL v2.1 ). Tức là nó trở thành đối tượng của LGPL !

Tôi nghĩ rằng Stephen Colebourne cung cấp một bản tóm tắt tốt về javalulk.

Tôi không phải là một fan hâm mộ lớn của trò chuyện đầu gối với các đề nghị luật sư của bạn , nhưng trong trường hợp này tôi nghĩ sẽ rất tốt nếu bạn dự định tiến hành việc này, nếu không bạn có thể nhận được một lá thư khó chịu từ Phần mềm miễn phí Tổ chức pháp lý nền tảng .

Ngoài ra, bạn có thể hỏi trực tiếp FSF . Từ trang liên hệ của họ :

Đối với các câu hỏi về cấp phép và bản quyền phần mềm miễn phí

Vui lòng kiểm tra Câu hỏi thường gặp về cấp phép của chúng tôi , danh sách giấy phép , thông tin copyleft chungcác trang liên quan . Nếu câu hỏi vẫn còn, gửi email <cấp phép@gnu.org>.

Ngẫu nhiên, trong câu hỏi liên quan Reflection và LGPL , gbjbaanb trả lời với quan điểm LGPL 3.0 .


4
Tôi thích đề xuất "yêu cầu FSF"
ZJR

Tôi đọc được rằng họ muốn trưng ra nhiều chức năng hơn trong lib lib của LGPL. Miễn là lib kết quả vẫn là LGPL và người dùng phần mềm của OP có thể tự do thay thế lib bằng bản dựng của họ - tôi sẽ rất vui
Martin Beckett

3
@MartinBeckett - Không hẳn, người hỏi đang cố lách LGPL bằng cách sửa đổi thư viện để giúp anh ta dễ dàng lén lút sửa đổi thư viện trong mã nguồn đóng của mình. Nếu anh ta trực tiếp thêm chức năng thư viện mới của mình vào LGPL và sau đó sử dụng mã đó trong mã riêng của mình, sẽ không có vấn đề gì. Đó là thực tế rằng anh ta đang cố gắng giữ nguồn đóng chức năng mới của riêng mình nhưng vẫn là một phần của thư viện, đó là vấn đề.
Đánh dấu gian hàng

6
LGPL 3.0 nêu rõ: "Xác định một lớp con của một lớp được Thư viện xác định được coi là chế độ sử dụng giao diện do Thư viện cung cấp." Vì vậy, điều này nên được cho phép, ít nhất là theo LGPL 3.0.
David

3
@David - Tôi tin rằng bằng cách sửa đổi thư viện LGPL để cho phép bạn ghi đè một chức năng mà thông thường không thể bị quá tải, bạn phải thừa nhận rằng mã của bạn được kết hợp chặt chẽ rằng nó có 'dựa trên' chứ không phải là 'dựa trên' 'Được sử dụng bởi' mối quan hệ với thư viện, do đó, copyleft yếu kích hoạt.
Đánh dấu gian hàng

13

Tiêu chuẩn Tôi không phải là một luật sư từ chối trách nhiệm.

LGPL yêu cầu sửa đổi mã nguồn thư viện để được phân phối cho bất kỳ ai sử dụng mã của bạn. Nó không đòi hỏi mã của bạn, trong đó sử dụng thư viện, là nguồn mở và phát hành theo giấy phép y hệt.

Wikipedia cho một mô tả chi tiết hơn, nhưng không phải luật sư của LGPL, bao gồm một phần về kế thừa lớp .


+1. Tóm lại: chúng tôi nghĩ rằng nó không vi phạm LGPL (nhưng IANAL)
MarkJ

@MarkJ - Như tôi đã giải thích trong câu trả lời của mình , tôi không chắc rằng như đã đặt ra, câu hỏi chỉ đơn giản là vấn đề kế thừa lớp.
Đánh dấu gian hàng

9
Tôi nghĩ mọi người chỉ thích gõ IANAL vì nó chứa "ANAL".
g33kz0r

5

"Tôi muốn sửa đổi mã LGPL ..." điều này đủ nói rằng bạn phải phát hành bất kỳ mã sửa đổi nào. Sau đó, việc mở rộng cho dù việc mở rộng mã sửa đổi đó có phải là một công việc phái sinh hay không là tranh chấp và nếu vậy nó sẽ trở thành đối tượng của LGPL.

Những gì có vẻ như bạn đang cố gắng làm là phá vỡ LGPL, trong trường hợp này với những kỹ thuật này bạn không thể làm được.

Nếu đó là một tác phẩm phái sinh, thì các điều khoản của chương trình phải cho phép "sửa đổi cho việc sử dụng của chính khách hàng và kỹ thuật đảo ngược để gỡ lỗi các sửa đổi đó." Việc một tác phẩm sử dụng chương trình LGPL có phải là tác phẩm phái sinh hay không là một vấn đề pháp lý.

Nhưng nếu những gì bạn đang cố làm là phá vỡ LGPL, tôi sẽ liên hệ với FSF theo khuyến nghị của Mark Booth .


1
Vấn đề là, LGPL cho phép một số hình thức của các tác phẩm phái sinh , trong khi không cho phép các hình thức khác. Tôi đã cập nhật câu trả lời của mình để phân biệt giữa các tác phẩm xuất phát thuộc danh mục công việc dựa trên thư viện (yêu cầu phải là LGPL) và công việc sử dụng thư viện (không có).
Đánh dấu gian hàng

@MarkBooth Tôi đồng ý với bạn và những người khác, rằng trong trường hợp này là work based ondo họ đang thực hiện các thay đổi đối với LGPL để lộ mã riêng tư trước đó.

1

Tôi đoán: (nhưng IANAL) bạn nên phát hành dưới dạng nguồn mở thư viện đã sửa đổi dưới dạng mã LGPL và sau đó thả nó vào một chương trình thương mại. Rằng sẽ làm việc. Thực tế, cuối cùng bạn sẽ có một ngã ba nguồn mở của thư viện xung quanh và sau đó bạn sẽ bán mặt trước cho nó.

Nhưng như nhiều người khác đã nói một cách đúng đắn, hãy hỏi FSF : đó là một kịch bản bảo tồn hấp dẫn mà bạn có ở đó; họ có thể tự hỏi nhiều như bạn làm nếu nó có áp dụng hay không. (hoặc ít nhất là bận tâm về nó đủ để xuất bản một câu hỏi thường gặp về chủ đề này)


1

https://www.gnu.org/licenses/lgpl-java.html

Nếu bạn phân phối một ứng dụng Java nhập thư viện LGPL, việc tuân thủ LGPL sẽ dễ dàng. Giấy phép ứng dụng của bạn cần cho phép người dùng sửa đổi thư viện và thiết kế ngược mã của bạn để gỡ lỗi các sửa đổi này. Điều này không có nghĩa là bạn cần cung cấp mã nguồn hoặc bất kỳ chi tiết nào về nội bộ trong ứng dụng của bạn. Tất nhiên, một số thay đổi người dùng có thể thực hiện đối với thư viện có thể phá vỡ giao diện, khiến thư viện không thể hoạt động với ứng dụng của bạn. Bạn không cần phải lo lắng về việc những người sửa đổi thư viện có trách nhiệm làm cho nó hoạt động.

Nói tóm lại, không có vấn đề gì với tính kế thừa miễn là bạn không tự thay đổi mã thư viện, nhưng ngay cả khi bạn thay đổi, bạn chỉ được yêu cầu phát hành mã sửa đổi thư viện, không phải mã ứng dụng của bạn.


1
Câu trả lời của bạn mâu thuẫn với một số câu trả lời khác nhưng không cung cấp nhiều để hỗ trợ cho yêu cầu của bạn. Các câu trả lời khác chi tiết hơn và thực hiện công việc tốt hơn để giải thích các xác nhận của họ. Vui lòng chỉnh sửa câu trả lời của bạn để cung cấp báo giá có liên quan từ giấy phép hoặc FSF để sao lưu khiếu nại của bạn.

Làm thế nào thực sự câu trả lời của tôi không cung cấp nhiều để ủng hộ yêu cầu của tôi? Tôi đã đặt liên kết đến trang GNU chính thức để xóa sự nhầm lẫn về LGPL và kế thừa lớp. Nó thậm chí còn được cập nhật để bao gồm LGPL v3.
Nik.B

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.