2009-08-06 33 views
67

Nếu tôi sử dụng các thành phần JavaScript được cấp phép GPL trên trang web của tôi, nó sẽ được coi là bản phát hành cho công chúng (vì mã phía máy khách của các thành phần được tải lên trình duyệt của người dùng qua http) và Tôi phải "nguồn mở" toàn bộ trang web?Hạn chế của GPL trên thư viện javascript

Vì vậy, chúng ta có thể nói rằng việc sử dụng các thành phần JavaScript trên một trang web là phân phối mã và nó liên quan đến việc phân phối toàn bộ mã trang web?

Hy vọng, câu hỏi là rõ ràng và bạn có thể giúp tôi hiểu khía cạnh này của GPL.

+5

Ai đó có thể trả lời đúng cách này không? Câu hỏi đặt ra là, khi tôi sử dụng JavaScript GPL từ JavaScript độc quyền của công ty tôi, GPL có làm lây nhiễm JavaScript độc quyền của chúng tôi và có lẽ toàn bộ ứng dụng web không? Sau đó, chúng tôi có phải phát hành toàn bộ phần phía ứng dụng của ứng dụng dưới dạng GPL nếu nó được cung cấp cho khách hàng không? Thực tế là chúng tôi phải hỏi điều này thực sự cho thấy GPL là điên rồ, theo ý kiến ​​của tôi. Tôi khá chắc chắn câu trả lời là "có, toàn bộ ứng dụng của bạn bị nhiễm", vì đó là trường hợp với mọi ngôn ngữ lập trình khác. Không phát hành thư viện javascript theo GPL để sử dụng chung. –

+1

@SamWatkins Có JavaScript GPL'ed không lây nhiễm JavaScript độc quyền của bạn (trừ khi bạn không sử dụng hoặc tham khảo mã GPL trong mã của bạn). Mã phụ trợ không bị nhiễm. Chi tiết hơn trong [bài viết này] (http://greendrake.info/#nfy0). – Greendrake

Trả lời

4

Bạn đã phân phối thư viện JavaScript cho người dùng; bạn phải tuân thủ các yêu cầu của GPL về phân phối. Cho dù điều này yêu cầu bạn phân phối phần còn lại của trang web là nơi mọi thứ trở nên phức tạp - tôi khuyên bạn nên nói chuyện với một luật sư có thẩm quyền về tình huống chính xác của bạn nếu bạn đang nghĩ về việc đi tuyến đó, và ghi nhớ rằng đây là ít nhất vi phạm tinh thần của giấy phép, dù có vi phạm bản quyền của giấy phép hay không.

+5

+1 - trao đổi với luật sư. – Quentin

+1

@Quentin: tại sao chúng ta cần phải nói chuyện với một lớp mỗi lần về vấn đề này? Bây giờ là một câu hỏi thường gặp. –

1

Điều này thực sự trở nên phức tạp. Tôi sẽ cho bạn một ví dụ. Điều gì xảy ra nếu bạn đang sử dụng giấy phép GPL của jQuery (tôi biết it's dual licensed, nhưng hãy bỏ qua điều đó chỉ trong một giây).

Google có một phân phối công cộng của jQuery (trong khuôn khổ javascript khác) mà họ phân phối trên CDN của họ, ví dụ:
http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js

Vì vậy, trong trường hợp này, bạn không phải là một trong đó là phân phối javascript thư viện cho người dùng, google là ;-)

xin lưu ý: như @bdonlan mô tả, chỉ có một luật sư có kinh nghiệm nên là một thực sự cân nhắc ở trên này. Tôi chỉ đóng góp câu trả lời này để cung cấp ngữ cảnh cho những điều bạn có thể nói với luật sư.

+0

Quảng cáo „Vì vậy, trong trường hợp này, bạn không phải là người phân phối thư viện javascript cho người dùng, google là“ Tôi không quan trọng ai đang phân phối - mã của bạn phụ thuộc vào thư viện được cấp phép GPL (nó giống như sử dụng C/Các tệp tiêu đề C++) nên nó cũng phải theo GPL. Vì vậy, javascript phía máy khách của bạn là theo GPL nhưng đó là câu hỏi, nếu mã phía máy chủ của bạn phải được cấp phép GPL. – Franta

13

Tôi không phải là luật sư. Tôi đã nói chuyện với các luật sư về việc sử dụng GPL và LGPL để mã được giải thích/liên kết động với phần mềm không phải là miễn phí. Tất cả chúng ta đều có những cơn đau đầu lớn. Câu hỏi đặt ra không chỉ là bạn có phải giải phóng phần còn lại của trang web của mình theo GPL hay không. Đó là liệu một trình duyệt không miễn phí có thể chạy một cách hợp pháp mã GPL hay không.

Lời khuyên hữu ích nhất của tôi là không bao giờ cố gắng sử dụng GPL trên mã Javascript. Tôi không bao giờ phát hành một thư viện Javascript theo GPL, và nếu tôi tìm thấy một số mã tôi muốn sử dụng tôi sẽ cố gắng để có được tác giả để cho tôi một ngoại lệ. LGPL may be là lựa chọn tốt hơn, nhưng giấy phép đó quá phức tạp, tôi cũng khuyên bạn nên tránh nó.

Bản thân FSF có câu trả lời cho bạn trong Câu hỏi thường gặp của họ If a programming language interpreter has a license that is incompatible with the GPL, can I run GPL-covered programs on it?. Câu trả lời chính là khó hiểu, nhưng nó gợi ý các đường dẫn nơi bạn có thể chạy mã GPL trong một trình duyệt không phải là GPL. Bạn cũng có thể tìm thấy bài luận FSF The Javascript Trap thú vị, mặc dù một lần nữa nó không thực sự đưa ra một câu trả lời rõ ràng cho câu hỏi của bạn.

Đối với ngữ cảnh, nó giúp nhớ rằng GPL và LPGL được viết trong thời đại Unix khi hầu hết mọi thứ đều được liên kết tĩnh. Không liên kết động, không có ngôn ngữ giải thích nơi các kịch bản tự được coi là sở hữu trí tuệ có giá trị, vv

+9

IANAL, nhưng tôi muốn nói rằng vì trình duyệt và tập lệnh không phải là các tác phẩm phái sinh của nhau và kết hợp không được phân phối, khi đó bất kỳ trình duyệt nào cũng có thể chạy mã GPL. –

+11

Hoàn toàn OK để chạy phần mềm GPL (GIMP chẳng hạn) trên Windows. Mã Javascript GPL trong Internet Explorer sẽ khác nhau như thế nào? Câu hỏi thường gặp đó từ FSF mà bạn liên kết có vẻ hoàn toàn rõ ràng và không mơ hồ chút nào. – Pointy

+2

Vì Javascript tự động móc vào/liên kết vào các sự kiện DOM do IE cung cấp. Tôi thực sự nghĩ rằng nó là một trường hợp cực đoan, nhưng đó là những gì FSF dường như tranh luận trong bài luận "Trap Javascript". – DeepSpace101

2

Và chỉ đổ thêm dầu hơn để lửa ...

Đọc gpl v3 rõ ràng là nếu bạn bao gồm một công việc gpl'd, bạn cần cung cấp nguồn với văn bản giấy phép ở đầu tệp và tuyên bố bản quyền.Vì vậy, nếu tôi tách nhận xét và khoảng trắng khỏi tệp và rút ngắn tên biến, sau đó 'phân phối' nó cho trình duyệt của một người nào đó (trong biểu mẫu nguồn của khóa học), tôi có thể vi phạm giấy phép. BTW, một giải pháp có thể là một uuid nhị phân viết tắt của giấy phép thích hợp cho các tệp bị xé. Suy nghĩ?

Nếu tôi cung cấp nguồn của thư viện và 'nguồn' của riêng tôi bằng thư viện có phần mở rộng trên đó, việc phân phối nó đến trình duyệt có tạo nguồn tự do không?

Tôi nghĩ rằng có đủ sơ hở trong điều này để làm cho giấy phép không thể thi hành.

2cents của tôi/không phải luật sư.

0

anh chàng này đã viết một bài viết về nó: http://stuck-in-windows.blogspot.com/2009/02/fud-over-javascript-and-gpl.html

Trong bài viết của mình, ông đã trích dẫn các trang web gnu FAQ, trong đó có Q & A:

(Q) Một công ty đang chạy một sửa đổi phiên bản của chương trình GPL trên trang web . GPL có nói rằng họ phải phát hành các nguồn đã sửa đổi của họ không?

(A) GPL cho phép bất kỳ ai thực hiện phiên bản sửa đổi và sử dụng phiên bản mà không bao giờ phân phối nó cho người khác. Công ty này đang làm là một trường hợp đặc biệt. Do đó, công ty không phải phát hành các nguồn đã sửa đổi.

Câu hỏi thường gặp sẽ tham chiếu đến GNU Affero GPL yêu cầu phát hành tất cả mã nguồn trang web.

+10

Javascript khác với mã web phụ trợ, bởi vì nó được "phân phối" cho người dùng cuối bằng cách tải xuống. Tôi sẽ diễn giải phần Hỏi & Đáp này đề cập đến mã back-end không được phân phối. – Nils

-2

Ví dụ: Magento sử dụng ExtJS thuộc GPLv3. Bây giờ, khi Magento được tải xuống và cài đặt bởi các chủ cửa hàng mua sắm, bạn có nghĩa là chủ cửa hàng phải cung cấp liên kết đến 'toàn bộ trang web-nguồn' của họ cùng với Sản phẩm của họ? Vì vậy, theo tôi, một thư viện Javascript được cấp phép theo GPL v3 là tốt cho bất kỳ dự án nào trừ khi bạn đang cố gắng sửa đổi thư viện Javascript và bán nó thương mại-dịch vụ thương mại hoặc liên quan.

+1

ExtJS cũng được cấp phép thương mại mặc dù ... bạn có biết liệu Magento có sử dụng phiên bản trả tiền không? Tôi nghĩ nhóm ExtJS sẽ tranh luận rằng bạn phải mở các phần khác nếu bạn sử dụng phiên bản gplv3, đó là một phần của cách họ thu hút mọi người trả tiền. – Nils

+0

GPL không cấm bạn tính phí cho thư viện của bạn, nhưng nó không cho phép bạn hạn chế người mua tiếp tục phân phối nó. –

2

Ứng dụng của bạn + thư viện GPL + phát hành -> ứng dụng GPL đã nguồn mở.

Đây là ý định của FSF và GPL, và nó áp dụng bất kể bạn đang sử dụng ngôn ngữ lập trình nào.

Một JavaScript GPL'd sẽ lây nhiễm tất cả mã JavaScript của bạn. Có thể sẽ không lây nhiễm mã HTML, nội dung trang hoặc mã phía máy chủ của bạn.

Vì vậy, vui lòng không phát hành JavaScript libs theo GPL, nếu bạn định sử dụng chúng cho mục đích chung.

+1

Không thể tự do trộn mã GPL với nhiều mã copyleft khác, chẳng hạn như mã được cấp phép Apache. Nếu bạn muốn có giấy phép miễn phí, hãy xem giấy phép MIT hoặc BSD. Mã theo các giấy phép này có thể được sử dụng tự do trong bất kỳ dự án phần mềm nào. Điều này là tốt! Bạn cũng có thể phát hành mã của mình lên miền công cộng, như tôi. Tôi thà sở hữu độc quyền hơn phần mềm GPL. Ít nhất nó không giả vờ là miễn phí, và hút rất nhiều nỗ lực đi từ phần mềm miễn phí thực sự. Nếu bạn muốn có hạt nhân miễn phí, hãy loại bỏ Linux và xem * BSD. Linux không bao giờ có thể là phần mềm miễn phí, cho đến khi GPL được cai trị bất hợp pháp. –

+2

Điều gì về ngoại lệ rõ ràng này đối với JavaScript được liệt kê trong Câu hỏi thường gặp về GPL? http://www.gnu.org/licenses/gpl-faq.html#WMS – BigOmega

+2

Ngoại lệ đó chỉ hợp lệ nếu tác giả thêm nó vào giấy phép. Dù sao, nó vẫn làm ô nhiễm mã javascript khác của bạn. Cũng có thể thêm "Là một ngoại lệ đặc biệt, hãy quên đi GPL, và làm bất cứ điều gì bạn thích với mã này". Tôi gọi nó là "miền công cộng". –