Có mã JavaScript nào chỉ được sử dụng cho các trang web, nguồn mở không?


12

Câu hỏi viết lại:

Tôi không hỏi một câu hỏi liên quan đến JavaScript, nhưng tất cả các ngôn ngữ "máy khách" được sử dụng trên web (HTML5, JavaScript, CSS, v.v.). Nếu tôi đặt mã JavaScript (đó là GPLed) trên trang web của mình và trang web này có thể truy cập được từ bất kỳ ai trên web, tôi có vi phạm GPL theo một cách nào đó không?

Điều gì xảy ra nếu tôi muốn bán mã máy khách (HTML, CSS, JavaScript) cho ai đó? Tôi có cần một giấy phép khác trong trường hợp này?

Không phải JavaScript (khi được sử dụng cho các trang web) luôn là nguồn mở? Khi bạn mở một trang web, bạn luôn có thể đọc nguồn.

Tôi cũng cần phải phát hành mã phía máy chủ của mình nếu tôi đang bán một trang web có chứa mã GPLed JavaScript?

Điều gì xảy ra nếu trang web này có thể truy cập một phần (một phần là miễn phí và phần khác yêu cầu bạn phải trả tiền) nhưng mã GPLed (cùng một phần) được sử dụng ở cả hai bên của trang web?

Điều gì xảy ra nếu mã GPLed chỉ nằm trong một phần của trang web yêu cầu bạn phải trả tiền để truy cập nó?

Nếu tôi đang bán một trang web cho khách hàng theo cách này:

  1. Tôi đang bán cho bạn (phí một lần) tất cả các mã liên quan đến máy khách (JavaScript, HTML và CSS)
  2. Tôi không bán cho bạn mã phía máy chủ, bạn đang thuê nó (Tôi không muốn cho phép bạn sử dụng lại mã phía máy chủ của tôi)

Nếu tôi đang sử dụng một số mã GPLed JavaScript, tôi có vi phạm điều gì không? (Trang web có thể truy cập từ bất kỳ ai trên web.)

Chỉnh sửa 2:

Đã thêm một câu hỏi cụ thể mới:

Điều gì sẽ xảy ra nếu trang web có thể hoạt động mà không cần mã phía máy chủ, ý tôi là, JavaScript chỉ gọi một số trang PHP có chứa dữ liệu ở định dạng JSON. Những người khác có thể xây dựng một trang web với phía khách hàng, nhưng họ sẽ cần cung cấp dữ liệu. Trong trường hợp này, JavaScript đang gọi mã "PHP" (nhưng không phải ngược lại) tôi nghĩ. Trong trường hợp này, tôi có vi phạm GPL không?


4
Khả năng "xem" mã không liên quan gì đến việc cấp phép nên JavaScript không khác gì so với bất kỳ thứ gì khác. Bạn sẽ được phục vụ tốt nhất bằng cách tham khảo ý kiến ​​một luật sư là một chuyên gia trong chuyên ngành này.
Sparky

Đối với javascript trên một trang web, đó có phải là nơi bạn đang nói cụ thể về mã GPL? tức là, mã được cấp phép rõ ràng theo GPL?
Philip

Chà, tôi không bán bất kỳ sản phẩm nào. Tôi chỉ hỏi điều này vì tôi không hiểu rõ về cách thức hoạt động của nó. Tôi đặc biệt hỏi liệu bất kỳ ngôn ngữ nào liên quan đến khách hàng chưa có tất cả "GPL" (bạn tải xuống nguồn bất cứ khi nào bạn truy cập trang web)
Fire-Dragon-DoL

Trong một ứng dụng không tầm thường, mã nguồn của bạn không chỉ là Javascript, đó cũng là mã phía máy chủ của bạn. Bạn có muốn phát hành tất cả cho công chúng? Bởi vì đó là những gì GPL nói. Nó không nói rằng bạn có thể phát hành một số và vẫn tuân thủ giấy phép.
Robert Harvey

Câu trả lời:


3

Khi nói đến GPL, đơn vị phát hành là đơn vị cấp phép.

Nếu trang web của bạn và javascript của nó là một thứ duy nhất hoạt động cùng nhau, thì toàn bộ có một giấy phép hiệu quả. Nếu bất kỳ phần nào là GPL, giấy phép hiệu quả của toàn bộ là GPL. (Điều này không đúng với LGPL, MIT, v.v.)

Nếu bạn đang lưu trữ trang web và khách hàng của bạn đang mua quyền truy cập vào dịch vụ, thì bạn đã không phân phối hoặc truyền tải mã phía máy chủ, do đó GPL không liên quan. (AGPL thay đổi điều này và khẳng định rằng Phần mềm là một dịch vụ phải được phát hành nguồn.)

Javascript là một phần của ứng dụng của bạn không được cấp phép tự động dưới bất kỳ hình thức nào. Nói đúng ra, tải xuống javascript để chạy nó trong trình duyệt là vi phạm bản quyền. Tất nhiên, đó là ngớ ngẩn. Có lẽ có một giấy phép ngụ ý để chạy mã, nhưng đó là tất cả.

Nếu bạn sử dụng thư viện Javascript, thì bạn phải tuân theo giấy phép của thư viện đó. Nếu giấy phép đó là GPL, tôi hiểu điều đó có nghĩa là toàn bộ ứng dụng của bạn là GPL. Đây có lẽ là lý do tại sao jQuery có giấy phép kép - sự lựa chọn của bạn, MIT hoặc GPL. Nếu không có tùy chọn sử dụng giấy phép MIT, ứng dụng GPL chỉ có thể được sử dụng.


4

Thứ nhất: Bạn hoàn toàn có quyền sử dụng mã nguồn mở trong các dự án thương mại miễn là bạn tuân thủ các hạn chế về giấy phép (chủ yếu là bạn để tất cả các phân bổ tại chỗ và bạn thực hiện bất kỳ thay đổi nào có sẵn theo giấy phép tương tự).

GPL, tôi hiểu, là một trong những giấy phép hạn chế hơn khi cố gắng ép buộc giấy phép của nó trên các phần khác của dự án. Tôi không nghĩ rằng nó đã từng được thử nghiệm tại tòa án nhưng một cách giải thích chung mà tôi luôn thấy là nếu mã GPL được để lại trong các mô-đun riêng biệt chỉ được tham chiếu (nghĩa là chúng được coi là sản phẩm hoàn toàn độc lập mà bạn chỉ đang sử dụng), bạn sẽ ổn thôi.

Nếu bạn không chắc chắn về điều này mặc dù và / hoặc muốn an toàn hơn, có những giấy phép ít quy định khác.

Thứ hai: Khả năng xem mã và quyền sử dụng nó hoàn toàn riêng biệt . Tôi không thể tắt JavaScript khỏi bất kỳ trang web nào và sử dụng nó chỉ vì tôi có thể thấy nó. Nếu tôi có quyền truy cập vào nguồn Windows, thậm chí về mặt pháp lý, điều đó không làm cho nó trở thành của tôi. Web yêu cầu rất nhiều mã có thể nhìn thấy, bạn vẫn có thể cấp phép cho nó theo cách bạn muốn.

Thứ ba: Về mặt giấy phép, phần còn lại của trang web nằm dưới, rất khó có khả năng khách hàng của bạn sẽ vui lòng trả tiền cho bạn cho một cái gì đó sau đó bạn biến nó thành nguồn mở . Ngoài "lý do tại sao chúng tôi đã trả tiền cho một thứ gì đó mà bạn vừa cho đi", nó có thể sẽ gây ra hậu quả cho thiết kế và thương hiệu và cho phép người khác mượn các yếu tố nhận dạng công ty của họ. Nếu bạn đang bán nó cho họ thì họ sẽ muốn nó là của họ . Nếu bạn định bán cho họ bitcoin mặc dù bạn cần phải nói với họ rằng có OSS trong đó vì bạn không thể bán nó, chỉ là mã khác sử dụng mã đó.

Thứ tư: Đó là một mô hình rất kỳ quặc bán một bit mã và cho thuê mã kia . Họ dường như phụ thuộc lẫn nhau rất nhiều đến nỗi người này phần lớn là vô giá trị nếu không có người kia. Tôi cho rằng về mặt kỹ thuật họ có thể lấy thiết kế mặt trước mà bạn đã thực hiện và vá nó vào một thứ khác nhưng nói chung khi điều đó xảy ra mọi người chỉ cần bắt đầu lại.

Cho rằng hai phần không thực sự hữu ích khi không có nhau, tôi đề nghị họ trả tiền để tùy chỉnh phần mềm dưới dạng sản phẩm dịch vụ mà bạn sở hữu. Đó là bạn sở hữu tất cả các mã, bạn chỉ cần tùy chỉnh nó theo đặc điểm kỹ thuật của họ (đó là thương hiệu phía trước theo cách của họ). Làm cho nó xa hơn và đơn giản hơn.


Bây giờ tôi có một nghi ngờ: khi tôi tạo một trang web cho một khách hàng, ai là khách hàng: người mà tôi bán trang web của tôi hoặc người dùng sẽ truy cập vào nó? Nếu tôi bán tất cả trang web dưới dạng sản phẩm GPL (có nguồn như vậy) cho khách hàng của mình, tôi có cần phải phát hành mã nguồn ngay cả cho tất cả mọi người điều hướng trên trang web đó không?
Rồng lửa-DoL

@ Fire-Dragon-DoL - Khách hàng của bạn là người thanh toán hóa đơn của bạn. Nếu bạn GPL mã của mình, bạn cần cung cấp mã công khai cho mọi người, ở mọi nơi , không chỉ khách hàng và / hoặc người dùng của bạn (và mọi người đều có quyền sử dụng lại mã đó).
Jon Hopkins

Về phần cuối cùng (giải thích của bạn thực sự thông minh, cảm ơn): Cho rằng hai phần đó không thực sự hữu ích nếu không có mỗi trường hợp: trong trường hợp này nếu tôi đang sử dụng mã GPLed thì tôi vẫn nên phát hành các nguồn chứ? Bởi vì tôi có thể đọc câu của bạn là "Tôi đang bán cho bạn dịch vụ tùy chỉnh phần mềm, chứ không phải phần mềm vẫn là của tôi"
Fire-Dragon-DoL

Để trả lời bình luận cuối cùng của bạn: Tôi không chắc, ý tôi là GPL nói rằng bạn phải phát hành mã bằng phần mềm của mình, nhưng nếu một người đang điều hướng trên trang web của tôi thì tôi không đưa cho anh ta chương trình của tôi, anh ta đang sử dụng chương trình của tôi , Tôi nghĩ nó khác. GPL không nói bạn phải phát hành chương trình của bạn.
Rồng lửa-DoL

1
@Jon Bạn chỉ cần cung cấp nguồn cho những người có nhị phân; không cho bất cứ ai hỏi. (Tất nhiên, họ có quyền đưa cho bất kỳ ai họ muốn, nhưng bạn không bắt buộc phải làm như vậy.)
Sean McMillan

3

Nói chung, nếu bạn đang sử dụng mã GPL ở bất cứ đâu trong dự án của bạn và bạn phân phối lại dự án của mình (tức là bán nó hoặc cung cấp cho người khác), bạn phải phát hành toàn bộ mã nguồn của dự án của mình để tuân thủ giấy phép GPL.

Nếu bạn đang cung cấp trang web công khai của riêng mình dưới dạng dịch vụ sử dụng phía máy chủ mã GPL, bạn có thể ổn, vì điều này không được coi là phân phối lại.

Mã Javascript trong trình duyệt có vẻ như là một khu vực màu xám đối với tôi. Về mặt kỹ thuật, bạn đang phân phối lại mã GPL cho trình duyệt của mọi người, điều này sẽ kích hoạt yêu cầu phát hành nguồn của riêng bạn.

Chỉnh sửa: Để chứng minh quan điểm của mình, bây giờ tôi sẽ bao gồm văn bản từ Câu hỏi thường gặp về cấp phép của trang web ExtJS. ExtJs là một khung Javascript được cấp phép theo GPL. Đây là cách giải thích của họ về cách thức hoạt động của giấy phép đối với khuôn khổ của họ (chữ nghiêng của tôi):

Tác phẩm được tạo ra
Khi một chương trình phần mềm gọi mã được cấp phép theo GPLv3, thì chương trình phần mềm đó trở thành tác phẩm phái sinh của mã GPL và do đó phải tuân theo giấy phép bản quyền GPLv3. Nếu chương trình phần mềm sau đó được chuyển giao cho người dùng, GPLv3 yêu cầu mã nguồn của chương trình phần mềm đó cũng được truyền tải. Truyền tải đối với ứng dụng web được kích hoạt khi người dùng bên ngoài pháp nhân tạo ra ứng dụng sử dụng ứng dụng.

Định nghĩa chương trình
phần mềm Đối với các chương trình phần mềm được xây dựng bằng kiến ​​trúc web ngày nay sử dụng giao diện dịch vụ dựa trên mạng từ xa để liên lạc nội bộ thay vì liên kết tĩnh hoặc liên kết động, chương trình phần mềm có liên quan là toàn bộ mã ứng dụng, bao gồm cả mã được thực thi trên máy chủ và mã được thực thi trên máy khách, miễn là mã máy chủ không thể tách rời với ứng dụng.

Ví dụ
Giả sử ứng dụng có giao diện người dùng (tạo các trang web được liên kết với Ext JS JavaScript) giao tiếp qua JSON / HTTP bằng dịch vụ phụ trợ. Dịch vụ phụ trợ này chứa logic phê duyệt và xác thực cho riêng ứng dụng này. Ngay cả khi chỉ có giao diện người dùng sử dụng mã Ext JS, bạn nên xem xét rằng sự kết hợp giữa mặt trước và mặt sau tạo thành ứng dụng và mã nguồn cho cả mặt sau và mặt trước sẽ cần được cung cấp cho người dùng cuối của ứng dụng theo GPLv3 nếu ứng dụng được sử dụng bởi người dùng cuối không phải là thành viên của cùng một pháp nhân nắm giữ giấy phép GPLv3 cho mã Ext JS.


2
Điều này là sai, GPL không hoạt động theo cách này. Việc bao gồm một liên kết đến tệp JS GPL trong đầu ra của mã PHP của bạn không bằng cách nào đó làm cho mã PHP của bạn trở thành nguồn mở.
dùng229044

@meager: Xem chỉnh sửa của tôi.
Robert Harvey

Điều đó dường như hoàn toàn sai. Điều gì xảy ra nếu back-end của tôi hướng đến một trang web bên thứ ba sử dụng các tệp JS của GPL? Sau đó tôi có phải mở nguồn toàn bộ ứng dụng của mình không? Tôi không nghĩ rằng điều này sẽ giữ trong bất kỳ tòa án. Lấy làm tiếc.
Cướp

1

Đối với một trang web có javascript phía máy khách, họ vẫn sở hữu mã. Nếu bạn chỉ đơn giản là lấy mã đó và sử dụng nó làm mã của riêng bạn, đó có thể là vi phạm IP. Tôi đoán tôi không biết nếu họ không bao gồm giấy phép với nó. Có những vấn đề không thể thi hành quá. Nói chuyện với một luật sư tôi đoán, nhưng có lẽ họ sẽ không nói với bạn bất cứ điều gì hữu ích.

Các dự án với sự pha trộn của giấy phép là phức tạp. Mã GPL tương tác với các thư viện khác, có lẽ bao gồm các đầu cuối phía máy chủ, cũng yêu cầu chúng phải là GPL'd. Các giấy phép nguồn mở khác ít nghiêm ngặt hơn, như LGPL và giấy phép BSD.

Và không, nếu bạn không muốn anh ta sử dụng lại mã php của mình, thì điều đó không phù hợp với mô hình GPL. Nếu bạn phát hành mã của mình theo GPL, thì bạn ĐƯỢC NGH OBA VỤ để bàn giao mã nguồn.

Vì vậy, có vẻ như bạn đang tạo một trang web cho một ai đó và bạn không muốn trao mã cho bất kỳ ai. Tại sao bạn nhìn vào nguồn mở ở tất cả? Nếu đó là nguồn mở, bạn đang cho đi mã.


Hiện tại tôi không bán bất cứ thứ gì, tôi chỉ hỏi điều này vì tôi nghĩ một trang web gồm 2 phần khác nhau, trang web của khách hàng và trang web của máy chủ. Phần thứ nhất là miễn phí trong khi phần thứ hai thì không. Nếu một trang web là "mã nguồn mở", bạn có nên phát hành mã nguồn phía máy chủ không? Tôi thấy một chút khó khăn, nó sẽ tạo ra thảm họa về an ninh!
Lửa-Rồng-DoL

2
Điều này không đúng. Nếu một phần của dự án là GPL, toàn bộ dự án phải được phát hành theo giấy phép tương thích GPL (giả sử tất cả được coi là cùng một chương trình và không thể chia thành nhiều phần). Và việc trở thành GPL không ngăn bạn bán nó, điều đó chỉ có nghĩa là bạn phải cung cấp nguồn với bất kỳ nhị phân nào và không thể hạn chế phân phối lại.
KeithB

Điều gì sẽ xảy ra nếu trang web có thể hoạt động mà không có mã phía máy chủ, ý tôi là, javascript chỉ đang gọi một số trang php có chứa dữ liệu ở định dạng json. Những người khác có thể xây dựng một trang web với phía khách hàng, nhưng họ sẽ cần cung cấp dữ liệu. Trong trường hợp này, javascript đang gọi mã "php" (nhưng không phải ngược lại) tôi nghĩ vậy. Trong trường hợp này, tôi có vi phạm GPL không?
Rồng lửa-DoL

@KeithB ACK! Bạn đúng. Tôi đã nghĩ về GTK và SDL, nhưng đó là LGPL. Cảm ơn.
Philip

Yea LPGL là một giấy phép tốt, nhân tiện tôi muốn hiểu GPL bởi vì ... chà, tôi nghĩ nó khó hiểu hơn
Fire-Dragon-DoL
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.