Gói phụ thuộc Rcpp có yêu cầu giấy phép GPL không?


8

Tôi đang viết một gói thương mại sử dụng R (GPL) cho tính toán của nó. Câu hỏi thường gặp về GPL nêu rõ rằng các thông dịch viên ngôn ngữ lập trình GPLed không áp đặt các hạn chế cấp phép đối với "chương trình" (tệp văn bản có mã R). Càng xa càng tốt.

Một phần của gói được biên dịch bằng Rcpp, cũng sử dụng GPL. Đoạn tiếp theo trong Câu hỏi thường gặp là:

Tuy nhiên, khi trình thông dịch được mở rộng để cung cấp "các ràng buộc" cho các cơ sở khác (thường, nhưng không nhất thiết là các thư viện), chương trình thông dịch được liên kết hiệu quả với các phương tiện mà nó sử dụng thông qua các ràng buộc này.

Có thể hiểu rằng R đang cung cấp một ràng buộc cho các thư viện Rcpp ( Rcpp.dlltrong gói windows). Giả định an toàn là điều này làm mờ mã của tôi với GPL, nhưng đây có thực sự là kết luận đúng?

Một phần của sự không chắc chắn của tôi là sự chặt chẽ của liên kết giữa mã của tôi và Rcpp.dll. Có các tham chiếu đến Rcpp trong dll, nhưng tôi không đủ thành thạo để biết liệu đây là các tham chiếu đến môi trường phát triển hay các cuộc gọi được đặt vào các biểu tượng trong thư viện Rcpp. Nếu trước đây, thì tôi tin rằng thư viện Rcpp đang được liên kết bởi R chứ không phải bởi thư viện của tôi. Tuy nhiên, tôi nghi ngờ điều thứ hai vì Rcpp cung cấp một loại keo (đường, thực tế) để đơn giản hóa việc viết mã và thực thi.

Có vô số các cuộc thảo luận liên quan đến GPL trong phân phối mã. Đến tên một vài:

Lưu ý: Tôi nói chung là một người ủng hộ lớn của OSS và đã tham gia phát triển và phân phối trong quá khứ. Các câu hỏi về "mã bảo vệ" thường đưa ra các bản lập trình mã nguồn mở, thường dẫn đến các cuộc tranh luận sôi nổi về triết lý phần mềm. Tôi nhận ra giá trị từ cả hai phía và muốn đảm bảo rằng tôi đang đáp ứng thư và (nếu có thể) tinh thần của luật pháp. Tôi không câu cá cho một lỗ hổng trong giấy phép; Tôi đang tìm kiếm sự giúp đỡ để giải thích và đặt nó vào bối cảnh.

Các gói R phụ thuộc vào Rcpp có cần thiết để sử dụng GPL không?


Tại sao bạn đăng bài ở đây, thay vì tại nơi những người thực sự tham gia với Rcpp sẽ thấy nó sớm hơn?
Dirk Eddelbuettel

1
Tôi đã làm (qua email), và bạn đã trả lời ngay sau khi tôi đăng câu hỏi này. Cảm ơn bạn. Và vì trang web này là về "tạo, phân phối và bảo trì phần mềm một cách có trách nhiệm" (trong đó việc cấp phép bị ràng buộc), nên cũng không thích hợp để hỏi ở đây. Tôi đã không tránh khỏi địa điểm "hoàn hảo", Dirk, tôi đã hỏi từ nhiều hướng.
r2evans

Ok, tiếp cận trực tiếp chắc chắn là hữu ích, và tôi không nhớ rằng bạn đã làm. Tôi chỉ quan tâm đến việc bạn có được một đối tượng có liên quan cho câu hỏi của bạn và tôi không biết bất kỳ ai trong nhóm của chúng tôi đọc trang web này.
Dirk Eddelbuettel

1
Hỏi ở đây là về khía cạnh "kế thừa GPL" của nó hơn là lập trình Rcpp. Có một số phương ngữ khác của câu hỏi này (không được hỏi): (1) thừa kế GPL nói chung, (2) cấp phép cho các gói R không có mã được biên dịch và (3) cấp phép cho các gói R với mã C / C ++ (cho dù Rcpp hay nói cách khác). Nhìn nhận lại, vấn đề của tôi là vấn đề thứ ba nhiều hơn so với Rcpp. Tôi đang trở nên tốt hơn một chút trong những ngày này về cách đặt câu hỏi rõ ràng và rõ ràng hơn.
r2evans

Cảm ơn đã theo dõi, và tôi hy vọng bạn đã có câu trả lời của mình. Tôi nghĩ (1) và (3) được hiểu khá rõ vì khía cạnh mã / liên kết đối tượng. (2) là một chút khác nhau.
Dirk Eddelbuettel

Câu trả lời:


6

Có, nếu bạn liên kết mã của mình với thư viện Rcpp và phân phối tác phẩm phái sinh, gói của bạn gần như chắc chắn phải tuân theo GPL. Các câu trả lời cho câu hỏi liên quan này áp dụng cho tình huống của bạn.

Đôi khi, tác giả của một tác phẩm sẽ đưa ra lựa chọn giữa giấy phép thương mại và nguồn mở (với một khoản phí thường được yêu cầu cho tùy chọn thương mại), nhưng có vẻ như đây không phải là trường hợp của Rcpp.


Đây cũng là điều tôi nghi ngờ, cảm ơn bạn đã cân nhắc. Câu hỏi liên quan không giải quyết được vấn đề bắt đầu với một thông dịch viên, nhưng tôi nghĩ rằng có các liên kết trong mã của tôi đến Rcpp.dllthư viện niêm phong thỏa thuận. Cảm ơn, @sifferman.
r2evans

1
Tôi nghĩ rằng câu trả lời này là một chút đơn giản hóa quá mức; xin vui lòng xem câu trả lời của tôi dưới đây.
usεr11852 04/05/2015

12

Tôi tin rằng các gói R phụ thuộc vào Rcpp không bắt buộc phải sử dụng GPL mà là sử dụng giấy phép tương thích GPL.

Đọc Rcpp-FAQ Phần 1.5 nêu rõ rằng:

bạn có thể tự do cấp phép cho công việc của mình theo bất kỳ điều khoản nào bạn thấy phù hợp (miễn là chúng tương thích với GPL, xem trang web của FSF để biết chi tiết ).

Điều đó có nghĩa là nếu một người chọn sử dụng ví dụ như giấy phép mệnh đề BSD-3, anh ta hoàn toàn ổn để làm điều đó.

Để thêm một cảnh báo quan trọng: Như Dirk đã chỉ ra trong các bình luận, tổng hợp mã được cấp phép tương thích GPL và mã được cấp phép GPL sẽ phải là GPL-ed. Người ta có thể tìm thấy trong gnu.org một lời giải thích tốt về cái gì là tổng hợp và cái gì không. Lưu ý rằng khi bạn phát hành một gói bạn chỉ phân phối mã của mình, đó là lý do tại sao bạn có thể sử dụng bất kỳ giấy phép tương thích GPL nào và không chỉ riêng GPL.


Phần này của Câu hỏi thường gặp về FSF làm rõ: tổng hợp luôn chuyển sang GPL; tuy nhiên bạn được tự do cấp phép mã của mình theo bất kỳ giấy phép tương thích nào .
Dirk Eddelbuettel

Ngoài ra, một lần quét CRAN ngẫu nhiên với hàng trăm gói sử dụng CRAN sẽ minh họa điều này đủ nhanh.
Dirk Eddelbuettel

Câu trả lời được trích dẫn có phần chọn lọc từ [Câu hỏi 1.5 của Câu hỏi thường gặp về Rcpp] (). Tốt hơn nên đọc toàn bộ - nó là ngắn.
Dirk Eddelbuettel

@DirkEddelbuettel: Xin lỗi, tôi không hiểu chính xác những gì bạn đang bình luận. Là câu trả lời của tôi rằng bất kỳ giấy phép tương thích GPL là đủ, sai? Bạn có muốn thu hút sự chú ý đến thực tế là hàng trăm gói sử dụng Rcpp không phải lúc nào cũng sử dụng GPL nhưng có thể sử dụng các giấy phép khác nhau? (ví dụ: BSD-3, Giấy phép nghệ thuật 2.0, MIT, v.v.)
usεr11852

Câu trả lời của bạn phục hồi khá chính xác những gì tôi nói trong phần 1.5 của Câu hỏi thường gặp về Rcpp . Tôi chỉ không hiểu tại sao bạn chọn trích dẫn một nửa câu khi phần này rõ ràng cần nhiều hơn một câu. Tổng hợp tất cả những điều này là đúng; bạn chỉ không nói phần quan trọng. Trong khi "có, bạn có thể" (sử dụng giấy phép không GPL tương thích), điều quan trọng là công việc tổng hợp vẫn là GPL theo thiết kế của GPL.
Dirk Eddelbuettel
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.