GPL tại nơi làm việc?


12

Tôi đã từng phỏng vấn tại một công ty tư vấn, trong đó nói về cuộc trò chuyện rằng họ sử dụng các sản phẩm nguồn mở (thật tuyệt, tôi đã sử dụng rộng rãi Hibernate, JBoss, v.v.) Một điều làm tôi ngạc nhiên là khi tôi hỏi liệu họ đã sử dụng OSS được cấp phép GPL khi viết đơn cho khách hàng, họ nói "Chắc chắn, mọi lúc! Miễn là khách hàng có được những gì họ muốn và hạnh phúc." Bây giờ, tôi không phải là luật sư hay người có giấy phép lớn, nhưng tôi có ấn tượng rằng sử dụng mã GPL (giả sử một số thư viện mà bạn đưa vào), sau đó bạn được yêu cầu phát hành toàn bộ ứng dụng theo cùng một giấy phép. Khi tôi chỉ ra điều này, tôi đã nhận được phản hồi nhanh chóng, "Chà, chúng tôi cung cấp cho khách hàng tất cả mã nguồn khi chúng tôi hoàn thành, vì vậy đó thực sự không phải là vấn đề."

Không muốn nhấn mạnh vấn đề hơn nữa (các cuộc phỏng vấn không phải là nơi để tranh luận như vậy), tôi để nó trôi qua. Tuy nhiên, điều đó vẫn khiến tôi lo lắng về hoạt động kinh doanh đặc biệt đó. Từ chính thức về mã được cấp phép GPL là gì và nó cần phải mở như thế nào? Bạn có phải xuất bản nó và nói "Công ty của tôi đã sử dụng thư viện này vì vậy đây là trang web nơi bạn có thể tải xuống ứng dụng hệ thống thực hiện mua sắm và đặt hàng của chúng tôi mà chúng tôi chi hàng triệu đô la để xây dựng."? Trong tình huống này, công ty có quyền sử dụng mã GPL mà không có kiến ​​thức của khách hàng không? Có đủ để chỉ "cung cấp cho họ nguồn"?

Câu trả lời:


15

Từ chối trách nhiệm tiêu chuẩn áp dụng: Tôi không phải là luật sư và bạn cũng vậy.

GPL, cốt lõi, là về việc bảo vệ quyền của những người sử dụng chương trình để có được và sử dụng nguồn. Nó không uỷ quyền cho rằng bạn xuất bản nguồn gốc của bất kỳ chương trình bạn viết rằng sử dụng GPL mã, chỉ đơn thuần là nếu bạn xuất bản một chương trình như vậy, bạn cũng phải cung cấp nguồn.

Tôi có thể viết bất kỳ số lượng ứng dụng nào cho mục đích sử dụng cá nhân của mình, nhập mã GPL và không bao giờ cung cấp nguồn của bất kỳ ứng dụng nào cho bất kỳ ai. Tôi có thể viết các ứng dụng đó để sử dụng nội bộ bởi công ty của mình và chỉ cần cung cấp nguồn cho những người trong công ty tôi sử dụng chương trình (nói thực tế, tôi sẽ phải làm điều này nếu họ có bất kỳ lý do chính đáng nào để yêu cầu nó). Nếu tôi viết một chương trình như vậy cho một số thực thể khác, tôi chỉ phải cung cấp cho họ mã (và làm rõ rằng chương trình được cấp phép GPL) - nếu họ tiếp tục phân phối nó, thì họ cũng phải cung cấp nguồn, nhưng tôi ra khỏi bức tranh

Vì vậy, lo lắng duy nhất mà công ty tư vấn của bạn có thể có là họ đã không làm cho khách hàng của họ biết về giấy phép mà mã họ cung cấp rơi vào. Trên thực tế, tôi nói dối - nếu họ đã đàm phán một giấy phép khác với khách hàng của họ (khách hàng sở hữu tất cả các quyền đối với mã ...) thì họ cũng có thể gặp nước nóng về điều đó ... Nhưng điều này đúng với bất kỳ mã bên thứ ba nào : trừ khi đó là miền công cộng, bạn phải tuân thủ giấy phép và không được cấp phép lại trừ khi quyền đó đã được cấp bởi người giữ bản quyền.


1
Bạn đúng AGPL tuy nhiên nghiêm ngặt hơn về điều đó

@Pierre: chính xác, theo nghĩa là bạn không thể thoát khỏi việc cung cấp nguồn cho người dùng của mình bằng cách bám vào các ứng dụng máy chủ.
Shog9

1
Hấp dẫn. Vì vậy, trong GPL tiêu chuẩn, nếu bạn viết ứng dụng SaaS, thì bạn không bắt buộc phải cung cấp nguồn vì bạn không tự mình "phân phối" ứng dụng?
Ryan Hayes

2
@Ryan: đúng rồi. Chà, bạn không cần phải cung cấp nó cho người dùng của bạn . Bất cứ ai có được mã biên dịch vẫn nhận được nguồn.
Shog9

7

Là một nhà tư vấn, tôi đưa ra quan điểm về việc sớm đưa ra các vấn đề về giấy phép với khách hàng của mình để họ có thể đưa ra lựa chọn sáng suốt. Nếu công nghệ tốt nhất để áp dụng cho vấn đề của họ là theo GPL nhưng họ không tuân thủ giấy phép, thì tôi không thể sử dụng nó. Trong thực tế, điều này đã có hai tác dụng.

Đầu tiên, nhiều người rất vui khi trả tiền cho một sản phẩm thương mại đặc biệt để tránh vấn đề này. Điều này đặc biệt phổ biến trong thế giới hệ thống nhúng, nơi việc tuân thủ GPL sẽ yêu cầu xuất bản một cách hiệu quả thiết kế phần cứng hoàn chỉnh và ghi lại cách thức tất cả hoạt động để đáp ứng tinh thần của GPL, đó là một nỗ lực để người dùng cuối có thể thay đổi sản phẩm . Mặc dù có thể tạo ra các sản phẩm mở, nhưng nó đòi hỏi rất nhiều cam kết ở tất cả các cấp của công ty. Vấn đề lớn hơn là nhiều thành phần của một thiết kế được các nhà sản xuất của họ theo NDA ghi lại cho chúng tôi và thực sự không thể tạo mã tuân thủ GPL sử dụng tài liệu được phát hành theo NDA.

Thứ hai, hiện tại chúng tôi có ưu tiên cho giấy phép MIT và nhiều người thân của nó (điều này cho thấy rõ rằng việc sử dụng thương mại có thể chấp nhận được) so với GPL ở bất kỳ sửa đổi nào. Tôi chưa có đối tượng khách hàng nào để phát hành các bản sửa lỗi và cải tiến cho cộng đồng sản phẩm có liên quan. Vì giấy phép được cho phép, tôi có thể tuân thủ các nghĩa vụ NDA của mình, giữ cho khách hàng của tôi hài lòng và đóng góp cho các cộng đồng liên quan.


2

Nguồn mở không nhất thiết có nghĩa là miễn phí.

IANAL, nhưng nói chung, yêu cầu đối với GPL là cung cấp mã nguồn cho dự án của bạn. Bạn chắc chắn có thể bán một sản phẩm cho người khác. Tuy nhiên, tôi tin rằng bạn không thể ngăn họ cho đi. Đó có lẽ là điều làm cho hầu hết các phần mềm GPL miễn phí, như trong bia. Tôi khá chắc chắn rằng bạn không phải xuất bản mã của mình lên world + dog chỉ vì đó là GPL'd.

Từ lời mở đầu đến v3 của GPL (nhấn mạnh riêng của tôi):

Giấy phép cho hầu hết các phần mềm và các công việc thực tế khác được thiết kế để lấy đi sự tự do của bạn để chia sẻ và thay đổi công việc. Ngược lại, Giấy phép Công cộng GNU nhằm đảm bảo quyền tự do của bạn để chia sẻ và thay đổi tất cả các phiên bản của chương trình - để đảm bảo rằng nó vẫn là phần mềm miễn phí cho tất cả người dùng. Chúng tôi, Quỹ Phần mềm Tự do, sử dụng Giấy phép Công cộng GNU cho hầu hết các phần mềm của chúng tôi; nó cũng áp dụng cho bất kỳ tác phẩm nào khác được phát hành theo cách này của các tác giả. Bạn cũng có thể áp dụng nó vào chương trình của bạn.

Khi chúng ta nói về phần mềm miễn phí, chúng ta đang đề cập đến tự do, không phải giá cả. Giấy phép công cộng chung của chúng tôi được thiết kế để đảm bảo rằng bạn có quyền tự do phân phối các bản sao của phần mềm miễn phí (và tính phí cho chúng nếu bạn muốn), rằng bạn nhận được mã nguồn hoặc có thể lấy nó nếu bạn muốn, rằng bạn có thể thay đổi phần mềm hoặc sử dụng các phần của nó trong các chương trình miễn phí mới và bạn biết bạn có thể làm những việc này.

( nguồn )

Trong tình huống này, công ty có quyền sử dụng mã GPL mà không có kiến ​​thức của khách hàng không? Có đủ để chỉ "cung cấp cho họ nguồn"?

Đây là một câu hỏi hơi khác nhau. Nếu khách hàng có một số kỳ vọng và kỳ vọng đó được quyết định trong hợp đồng, công ty có thể có vấn đề. Mặt khác, tùy thuộc vào họ để xác định cách tốt nhất để thực hiện công việc. Tuy nhiên, chúng được cho là bao gồm một thông báo trong mã nguồn liên quan đến giấy phép. Tôi không chắc chắn nếu họ phải tiết lộ điều này cho khách hàng của họ theo bất kỳ cách nào khác.


2
GPL không yêu cầu bạn chủ động xuất bản nguồn, nhưng nó yêu cầu bạn xuất bản cho người dùng thực tế rằng chương trình là GPL và bạn sẽ cung cấp nguồn theo yêu cầu (có thể phải trả phí xử lý hợp lý và hợp lý). Trong thực tế, yêu cầu sau thường được xử lý bằng tarball hoặc zip tại một URL có thể được cung cấp theo yêu cầu. Là một nhà tư vấn, bạn có nghĩa vụ phải cho khách hàng của bạn biết gánh nặng của họ sẽ là gì nếu họ phân phối công việc của bạn cho người khác, bởi vì họ trở thành nhà xuất bản theo GPL.
RBerteig

@RBerteig Cảm ơn bạn đã làm rõ. Đã được một thời gian kể từ khi tôi tìm hiểu các điều khoản của giấy phép.
George Marian

"Bạn chắc chắn có thể bán một sản phẩm cho người khác. Tuy nhiên, tôi tin rằng bạn không thể ngăn họ từ bỏ nó." Phụ thuộc vào việc bạn cung cấp cho họ thứ gì đó theo GPL hoặc nếu bạn là chủ bản quyền gốc và cấp phép lại cho họ theo giấy phép khác.
endolith

-5

Không, bạn đúng. Đây là lý do tại sao:

Xem xét nếu chúng tôi có một ứng dụng theo GPL. Bây giờ, sau đó nó không thể được sử dụng bởi mã độc quyền.

Nếu nó chỉ đủ để mở mã nguồn sử dụng GPL, tôi có thể mở một dự án dựa trên nó dưới dạng BSD.

Sau đó, phần mềm độc quyền có thể sử dụng sản phẩm GPL.


4
Điều này không có ý nghĩa. GPL không nói rõ rằng mã độc quyền không thể sử dụng nó. GPL là tất cả về phân phối, như câu trả lời của ông C nói rõ. Nói tóm lại, bạn không được phép phân phối phần mềm sử dụng mã GPL trừ khi bạn cũng phân phối mã nguồn cho phần mềm đó theo giấy phép tương thích.
dash-tom-bang

1
Mã độc quyền không thể sử dụng mã GPL. Đó là một phần lý do cho sự tồn tại của giấy phép.
thay thế

Tất cả phụ thuộc vào ý của bạn là "mã độc quyền". Nếu bạn có nghĩa là "mã mà bạn sở hữu" thì điều này vô nghĩa - GPL không thể lấy đi bản quyền của bạn, vì vậy trừ khi bạn gán nó cho FSF theo ý muốn của riêng bạn, bạn vẫn sở hữu mã mà bạn viết . OTOH, nếu bạn có nghĩa là "mã bạn muốn phân phối theo giấy phép không tương thích với GPL" thì bạn đã đúng - giống như bạn có thể lấy và sử dụng nguồn bạn đang xây dựng, bạn có nghĩa vụ phải cấp cho người dùng của bạn quyền này đến nguồn của bạn. Một lần nữa, đó là về phân phối - không ai có thể có được chương trình của bạn có quyền đối với mã của bạn.
Shog9

@Ông. C theo mã độc quyền Tôi có nghĩa là mã không tương thích với GPL. Và mã được phân phối cho khách hàng nên ... Nhưng vâng, tôi không phải là luật sư nên tôi có thể sai.
thay thế

2
-1, câu trả lời sai lệch. Điều này chỉ đúng với một số định nghĩa về "sử dụng" và "độc quyền". Ví dụ: tôi có thể tạo một sản phẩm Linux nhúng và chỉ phát hành hạt nhân Linux và mã liên kết trực tiếp đến mã hạt nhân, nhưng không phải giao diện người dùng hoặc các ứng dụng khác của tôi chỉ chạy trên nhân GPLed. Nhiều mối quan hệ như vậy tồn tại. Sự mơ hồ trong việc sử dụng "độc quyền" này đã được đề cập. Ngoài ra, trong hầu hết các khu vực pháp lý, một "công việc cho thuê" chỉ được trao cho bên đã thuê một nhà phát triển để mã hóa nó không giống như phân phối. IANAL, v.v.
HedgeMage
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.