Tôi có thể sử dụng phần mềm được cấp phép GPL trên máy chủ của mình không nếu tôi chỉ phân phối phần mềm máy khách?


15

Tôi hiểu các quy tắc của GPL nói rằng nếu tôi phân phối bất kỳ phần mềm nào sử dụng mã GPL, thì mã đó phải được cấp phép theo GPL .

Tuy nhiên, tôi tự hỏi những quy tắc trong trường hợp này là gì: Tôi đang tạo ra một dịch vụ nơi tôi sẽ bán và phân phối phần mềm phía khách hàng .

Phần mềm phía máy khách hoàn toàn không có mã GPL trong đó. Nó là 100% mã của riêng tôi.

Tuy nhiên, phần mềm máy khách sẽ được kết nối với máy chủ của tôi, sử dụng mã GPL bên trong.

Tôi không phân phối phần mềm phía máy chủ của tôi; phần mềm phía máy chủ sẽ sống trên một máy chủ chuyên dụng mà tôi điều khiển một mình, nhưng phần mềm phía máy khách sẽ không hoạt động nếu không kết nối với máy chủ nói trên.

Điều này có được tính là một phần mềm không? Nếu tôi làm điều này, tôi có được yêu cầu cấp phép mã nguồn phía khách hàng của mình dưới dạng GPL không? Hoặc, tôi có thể bán phần mềm phía khách mà không phát hành mã nguồn không?

Câu trả lời:


12

Đây không phải là một vấn đề rõ ràng. Hãy xem xét hai đầu cực của phổ:

  1. Phần mềm máy khách độc quyền của bạn là máy khách HTTP và nó hiển thị các phản hồi HTML. Nó có thể hoạt động với bất kỳ máy chủ HTTP nào. Máy chủ HTTP mà bạn sử dụng cho dịch vụ của mình tình cờ sử dụng các thành phần GPL.

  2. Bạn có một chương trình sử dụng các thành phần được cấp phép GPL. Bạn chọn một điểm tùy ý trong hoạt động của chương trình đó và chia chương trình thành hai chương trình. Hai chương trình giao tiếp qua một mạng hop hoàn toàn thừa. Bạn đặt tất cả các thành phần được cấp phép GPL trong chương trình và giấy phép đầu tiên theo GPL và bạn cấp phép cho chương trình khác theo giấy phép không tương thích GPL.

Trường hợp đầu tiên rõ ràng là ổn. Trường hợp thứ hai rõ ràng là không ổn. Bạn chưa cung cấp nhiều thông tin về trường hợp cụ thể của mình và ngay cả khi bạn đã làm, chỉ có phán quyết của tòa án có thể quyết định dứt khoát liệu bạn có đúng hay không.

Câu hỏi thường gặp về GPL có điều này để nói về các chương trình được cấp phép riêng biệt, có thể tương tác :

Tuy nhiên, trong nhiều trường hợp, bạn có thể phân phối phần mềm được bảo hiểm GPL cùng với hệ thống độc quyền của bạn. Để thực hiện điều này một cách hợp lệ, bạn phải đảm bảo rằng các chương trình miễn phí và không miễn phí giao tiếp với nhau , chúng không được kết hợp theo cách có thể khiến chúng trở thành một chương trình duy nhất một cách hiệu quả.

Sự khác biệt giữa phần mềm này và phần mềm kết hợp với phần mềm được bảo vệ bởi GPL một phần là vấn đề về bản chất và một phần hình thức. Phần thực chất là đây: nếu hai chương trình được kết hợp để chúng trở thành hai phần của một chương trình một cách hiệu quả, thì bạn không thể coi chúng là hai chương trình riêng biệt. Vì vậy, GPL phải bao gồm toàn bộ.

Bạn phải quyết định xem bạn có nghĩ rằng máy khách của mình là máy chủ đáp ứng tiêu chuẩn "hai phần của cùng một chương trình" (và do đó mỗi phần phải được cấp phép theo GPL) hay không. Câu hỏi thường gặp về GPL đưa ra một số giải thích thêm về chủ đề này cho một câu hỏi khác :

Đâu là ranh giới giữa hai chương trình riêng biệt và một chương trình có hai phần? Đây là một câu hỏi pháp lý, mà cuối cùng các thẩm phán sẽ quyết định. Chúng tôi tin rằng một tiêu chí phù hợp phụ thuộc cả vào cơ chế giao tiếp (exec, pipe, rpc, chức năng gọi trong một không gian địa chỉ dùng chung, v.v.) và ngữ nghĩa của giao tiếp (loại thông tin nào được hoán đổi cho nhau).

...

Ngược lại, đường ống, ổ cắm và đối số dòng lệnh là các cơ chế giao tiếp thường được sử dụng giữa hai chương trình riêng biệt. Vì vậy, khi chúng được sử dụng để liên lạc, các mô-đun thường là các chương trình riêng biệt. Nhưng nếu ngữ nghĩa của giao tiếp đủ thân mật, trao đổi các cấu trúc dữ liệu nội bộ phức tạp, thì đó cũng có thể là cơ sở để xem xét hai phần được kết hợp thành một chương trình lớn hơn .

Vì vậy, giao tiếp mạng chắc chắn vượt qua bài kiểm tra "cơ chế giao tiếp" nhưng không rõ cặp khách hàng / máy chủ của bạn rơi vào bài kiểm tra "ngữ nghĩa của giao tiếp".


Sẽ là hợp lý nếu căn cứ vào sự khác biệt về mức độ giao thoa giữa các chương trình được công khai? Ví dụ: nếu tôi triển khai hệ thống chơi cờ sử dụng chương trình giao diện người dùng GPL giao tiếp với công cụ cờ vua độc quyền và tôi ghi lại cách bất kỳ ai khác muốn viết công cụ cờ vua của riêng họ có thể sử dụng cùng giao diện người dùng đó, tôi sẽ nghĩ rằng điều đó sẽ thỏa mãn tinh thần (và hy vọng là thư) của GPL mặc dù, trừ khi có ai đó viết một công cụ thay thế, giao diện người dùng sẽ không có mục đích nào khác ngoài việc nói chuyện với chương trình độc quyền.
supercat

Hừm. Tôi đã hỏi câu hỏi này rất mơ hồ vì tôi chỉ tò mò về GPL nói chung. Tuy nhiên, tôi nghĩ rằng tôi hiểu sự khác biệt bây giờ. Nếu máy chủ của tôi có thông tin tài khoản người dùng mà phần mềm máy khách của tôi cần chạy, thì điều đó rõ ràng vi phạm GPL. Nếu máy chủ của tôi giống như một máy chủ chuyển tiếp gói chỉ cho phép hai phiên bản phần mềm máy khách của tôi giao tiếp với nhau, thì điều đó sẽ ổn. Tôi có đúng trong những giả định này không?
Steven Jeffries

4

Hai quy trình giao tiếp qua mạng không đòi hỏi phải tạo ra một tác phẩm phái sinh theo cách liên kết của một tệp thực thi với một thư viện. Vì vậy, mã GPL trên máy chủ không áp dụng cho mã máy khách.

Theo GPL, bạn được yêu cầu phân phối mã nguồn đã sửa đổi khi bạn phân phối nhị phân. Vì bạn không phân phối nhị phân máy chủ, nên bạn không bắt buộc phải phân phối mã nguồn máy chủ.

GNU Affero GPL là một giấy phép tương tự như GPL với các verbage bổ sung được thiết kế để đóng lỗ hổng vòng lặp này mà bạn muốn tận dụng (xem: http://www.gnu.org/licenses/why-affero-gpl.htmlhttp://en.wikipedia.org/wiki/Affero_General_Public_License#Examples_of_web_appluggest_under_GNU_AGPL ).

Tuyên bố miễn trừ trách nhiệm: Tôi là nhà phát triển, không phải luật sư.


3
Chỉ cần một lưu ý cảnh báo: Nếu khách hàng được thiết kế để đặc biệt giao tiếp với này phần mềm máy chủ, sau đó nó là hoàn toàn có thể là FSF không xem xét máy chủ và phần mềm máy khách như một sản phẩm. Xem thêm tại đây trong Câu hỏi thường gặp về GPL
Bart van Ingen Schenau

Mặt khác, nếu một bên thứ ba viết phần mềm máy khách để liên lạc với máy chủ của bạn mà không bao giờ thấy phần mềm máy chủ hoặc giấy phép, thì lập luận đó có vẻ vô lý. Và điều đó có nghĩa là Microsoft có thể kiện bất cứ ai viết phần mềm kết nối với máy chủ Outlook chẳng hạn.
gnasher729

2

Phần mềm máy khách có phụ thuộc vào phần mềm máy chủ để hoạt động đúng không? Nói cách khác, phần mềm máy khách có hoạt động mà không được kết nối với máy chủ không?

Nếu câu trả lời là "có" và máy chủ chỉ cung cấp một tính năng bổ sung chứ không phải hỗ trợ cốt lõi cho phần mềm máy khách của bạn, thì có lẽ bạn đã rõ. Nếu phần mềm máy chủ là một phần không thể thiếu của phần mềm máy khách và cung cấp chức năng cốt lõi cho phần mềm máy khách (tức là phần mềm máy khách sẽ không hoạt động nếu không có máy chủ), thì sự kết hợp là một công việc xuất phát, được bảo vệ theo GPL.


Tôi sẽ cảnh giác và không sử dụng mã GPL trong máy chủ của mình.
Steven Jeffries

2
@StevenJeffries Câu trả lời này phù hợp với cả thực tiễn hiện tại và các yêu cầu của GPL. Miễn là tôi không phân phối phần mềm hoặc tác phẩm phái sinh, tôi có thể tự do sử dụng phần mềm GPL trên máy chủ, ví dụ: Linux hoặc GCC hoặc WordPress. Chỉ sử dụng một phần mềm không tạo ra một tác phẩm có nguồn gốc. Trong trường hợp của GPL, nó được coi là ổn khi có ít nhất sự phân tách ở cấp độ quy trình (không có bộ nhớ dùng chung, không có cấu trúc dữ liệu dùng chung). Xem câu trả lời của J. Lenthe cho một giải pháp chính xác và để tham khảo.
amon

@amon: Nếu bạn thậm chí không chia sẻ cấu trúc dữ liệu giữa máy chủ và máy khách, thì bạn đã đúng. Tôi nghi ngờ đó là trường hợp, mặc dù. Sự khác biệt mà tôi đang vẽ (là phần mềm máy khách phụ thuộc vào phần mềm máy chủ để thực hiện đúng) không phải là tùy ý; đó là một trong hai yêu cầu thiết yếu đối với những gì mà FSF coi không phải là "công việc xuất phát;" khác là "giao tiếp chiều dài cánh tay." Đừng hiểu ý tôi; đọc nó cho chính mình trên trang web của FSF.
Robert Harvey

@amon: Bạn có thể đọc thêm về điều đó ở đây .
Robert Harvey

@amon Một mục Câu hỏi thường gặp về GPL rất phù hợp (tốt như theo dõi sau khi đọc liên kết của Robert) là mục này, đặc biệt là ba đoạn cuối: gnu.org/licenses/gpl-faq.html#MereAggregation
apsillers
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.