Viết lại mã GPL để thay đổi giấy phép


23

Tôi đã tìm thấy một thư viện GPL (không có giấy phép kép), nơi thực hiện chính xác những gì tôi cần. Thật không may, giấy phép GPL trên thư viện không tương thích với giấy phép của một thư viện khác mà tôi sử dụng. Do đó tôi đã quyết định viết lại thư viện GPL, vì vậy giấy phép có thể được thay đổi.

Câu hỏi của tôi là: Làm thế nào rộng rãi để thay đổi cần đến thư viện để có thể thay đổi giấy phép? Nói cách khác, cách rẻ nhất để làm điều này là gì?


3
Nó có thể rẻ hơn để trả cho tác giả của thư viện GPL để phát hành nó cho bạn theo một giấy phép khác.
quant_dev

3
Thay vì hỏi cách rẻ nhất, tại sao không kể cho chúng tôi toàn bộ câu chuyện và hỏi "Điều gì là đúng để làm?"
John R. Strohm

4
Nếu thư viện khác không tương thích với GPL, có lẽ đó là thư viện bạn cần thay đổi.
Paul Butcher

1
Thư viện khác có giấy phép gì?
Andres F.

Câu trả lời:


34

Tôi không phải là luật sư, nhưng AFAIK nếu bạn đã thấy mã thư viện GPLed, bất kỳ thư viện mô phỏng nào bạn viết sẽ bị vô hiệu và có thể được một thẩm phán tuyên bố là một tác phẩm xuất phát nếu nó quá giống với đánh giá của anh ta.

Vì vậy, quá trình sẽ là viết một đặc tả chức năng và có ai đó chưa thấy mã GPLed viết thư viện.

Chỉnh sửa: Lưu ý rằng với cách bạn hình thành câu hỏi của mình "Các thay đổi cần phải được mở rộng đến thư viện như thế nào để có thể thay đổi giấy phép?" câu trả lời là AFAIK rõ ràng: bất cứ điều gì bạn làm, nếu bạn chỉ sửa đổi thư viện, bạn phải tôn trọng thời hạn của giấy phép khiến bạn có thể sửa đổi nó ngay từ đầu.


3
Vấn đề mờ nhạt có lẽ không phải là một mối quan tâm rất nghiêm trọng trong thực tế. Trong trường hợp bạn thiết kế ngược mã của một thực thể thương mại, thì tường lửa giữa người đọc và người triển khai là cần thiết cho vụ kiện vi phạm (về cơ bản không thể tránh khỏi), vì vậy bạn có thể thấy rằng không thể sao chép mã từ phiên bản khác . Trong trường hợp của hầu hết mã GPL, trừ khi bạn vi phạm một cách trắng trợn sẽ không ai kiện bạn, vì họ không quan tâm đến việc đó.
Mark Bessey

1
Bạn có thể thích roulette Nga, sự lựa chọn của bạn. Nếu vì bất kỳ lý do nào - cạnh tranh kế thừa mã theo cách này hay cách khác, hoặc chỉ cạnh tranh quyết định tài trợ cho vụ kiện - bạn bị kiện và bị kết án, đó là điều có thể khiến công ty của bạn chết đuối. Ngay cả khi bạn không bị kiện, nếu biết thì tiếng xấu có thể là một vấn đề.
AProgrammer

2
Tôi nghĩ rằng vấn đề "vô vị" chủ yếu áp dụng cho NDAs. Đối với các vấn đề bản quyền, nó hầu như không có ý nghĩa. Hãy xem xét rằng bản quyền cũng áp dụng cho sách, báo mới, phim, v.v. George Lucas có thể đã xem loạt phim Star Trek trên TV trước khi tạo Star Wars, điều đó có khiến Star Wars trở thành một tác phẩm phái sinh không? Nếu một phóng viên báo chí nghe về một cái gì đó trên đài phát thanh, điều đó có ngăn cản anh ta viết về cùng một sự kiện?
user281377

6
Cách tiếp cận phòng sạch chỉ là một cách để chứng minh rằng bạn chưa vi phạm luật bản quyền. Theo tôi hiểu - và một lần nữa tôi không phải là luật sư - những thứ được phát triển mà không có kiến ​​thức về tác phẩm gốc có thể không vi phạm bản quyền (nhưng có thể vi phạm bằng sáng chế). Những điều được phát triển với kiến ​​thức đó có thể hoặc không vi phạm bản quyền - khó chứng minh rằng sự tương đồng là do các sự kiện ngẫu nhiên hoặc do bản chất của vấn đề khiến cách tiếp cận trở nên tự nhiên.
AProgrammer

1
@ammoQ: Ở Mỹ, đã có một vụ kiện vi phạm bản sao từ lâu (gói phần mềm thống kê?), nơi một công ty bị giữ đã vi phạm mặc dù mọi dòng mã đã được viết lại. Lưu ý rằng Chiến tranh giữa các vì sao không đặc biệt giống với Star Trek và một phóng viên báo chí sẽ không viết một câu chuyện chỉ từ những gì anh ấy hoặc cô ấy nghe trên radio.
David Thornley

21

Cách thông thường để giải quyết vấn đề này là trước tiên hãy liên hệ với chủ sở hữu của thư viện và hỏi xem họ có giải phóng nó cho bạn theo một giấy phép khác không.

Nếu bạn đang làm việc trong một dự án nguồn mở mà GPL không tương thích, thì rất có thể họ sẽ làm điều này, một số dự án kết thúc với giấy phép GPL chỉ vì nó có vẻ là sự lựa chọn tốt nhất.

Tất nhiên, điều này áp dụng cho cả hai thư viện. Lấy giấy phép kép giấy phép cho phép dưới một giấy phép ít cho phép hơn không phải là một vấn đề.

Nếu bạn đang làm việc với một sản phẩm thương mại, thì nhiều tác giả thư viện sẽ cung cấp cho bạn một bản phát hành theo một giấy phép khác, nếu bạn đền bù cho họ một cách thích hợp.


8
Nó đáng để thử, nhưng điều này không hiệu quả nếu chủ sở hữu của thư viện đã chấp nhận hoặc sử dụng các đóng góp GPLed, đó là trường hợp của nhiều thư viện.
Brian

^ Trừ khi họ có thỏa thuận "người đóng góp" đã phân công lại bản quyền cho các tác giả gốc: softwareengineering.stackexchange.com/a/225577/93511
Jonathan

17

Sự hiểu biết của tôi là nếu bạn bắt đầu với một tác phẩm và sửa đổi nó, bất kể sửa đổi bao nhiêu, kết quả cuối cùng là một tác phẩm xuất phát của bản gốc. Bạn sẽ cần phải viết thư viện từ đầu. Nếu bạn viết thư viện từ đầu, nhưng đã thấy mã, thì nếu nó quá giống nhau, bạn có thể lại bị kiện vì vi phạm bản quyền.

Các quy tắc này không dành riêng cho phần mềm, chúng áp dụng cho những thứ có bản quyền thuộc mọi loại.

Tôi không phải là một luật sư, và đây không phải là tư vấn pháp lý. Tôi cũng hoàn toàn có thể không thuộc thẩm quyền của bạn và bạn nên luôn luôn nghi ngờ về lời khuyên pháp lý được cung cấp trên Internet. Nếu bạn muốn có lời khuyên pháp lý đáng tin cậy, bạn sẽ cần phải trả tiền cho một luật sư.


4

IANAL, nhưng tôi biết rằng ở Hoa Kỳ, không có mức độ sửa đổi nào sẽ tạo ra một tác phẩm không phái sinh. Nếu nó có bất kỳ mã nào được sao chép từ thư viện cũ hoặc nó có đủ sự tương đồng bên trong đến mức nó sẽ khiến bạn gặp rắc rối vì bị ăn cắp trong lớp Đại học, thì bạn sẽ không ở đâu gần một tác phẩm mới. Thay đổi một số tên hàm hoặc biến sẽ không làm gì cả, cũng sẽ không di chuyển các đoạn mã xung quanh trong nguồn. Bạn sẽ phải độc lập tạo lại nó để thậm chí có cơ hội. IOW, bạn chỉ cần nhìn vào các giao diện mà nó cung cấp và quyết định cách cung cấp chức năng đó và tạo lại nó theo cách đó để có cơ hội. Thậm chí sau đó bạn vẫn có thể không ra khỏi rừng nếu ai đó thực sự quan tâm và nổi điên.

Cuối cùng, cách tốt nhất của bạn là liên hệ với tác giả của thư viện và hy vọng rằng bạn có thể tìm thấy một sự sắp xếp để cấp phép dễ dàng hơn cho thư viện của anh ta.


1

Nếu mọi thứ khác được đề xuất ở đây (yêu cầu giấy phép kép, viết lại) không được chấp nhận, xin nhớ rằng đây vẫn chưa phải là một trường hợp rõ ràng cho dù liên kết động với chương trình / thư viện độc quyền có được coi là công việc phái sinh hay không. FSF cho biết là có, nhưng nhiều luật sư (bao gồm cả Lawrence Rosen) đã đặt câu hỏi này.

Vì vậy, bạn có thể liên kết phần mềm của mình với thư viện GPLed, sau đó đảm bảo mã nguồn cho phần mềm được phân phối với mọi bản sao của phần mềm của bạn. Nếu bất cứ ai kiện bạn, họ phải chứng minh rằng sự hiểu biết của họ về khía cạnh GPL khó hiểu và mờ ám này là chính xác. Khi nó xuất hiện (ví dụ: Galoob vs Nintendo), bạn không thể tuyệt đối chắc chắn điều gì làm cho công cụ phái sinh hoạt động và điều gì không.


hoặc ít nhất là hỏi xem lib có thể là LGPL không.
Johan

2
Vấn đề liên kết động là một vấn đề khó khăn, nhưng đừng tin vào một thẩm phán phán quyết theo cách của bạn. Thẩm phán có thể phán quyết rằng bạn chấp nhận các định nghĩa Gnu nếu bạn sử dụng giấy phép Gnu và có lẽ bạn không muốn căn cứ vào sản phẩm phần mềm của mình dựa trên kết quả của một vụ kiện chưa xảy ra.
David Thornley

1

Cách duy nhất nó sẽ không bắt nguồn từ công việc, là nếu bạn tự viết lại toàn bộ mã mà không sử dụng bất kỳ mã gốc nào. Mà có lẽ là không khả thi.

Có nhiều cách dễ dàng hơn xung quanh GPL:

  • rõ ràng: làm cho nó vào dịch vụ, truy cập nó thông qua một ổ cắm. Ổ cắm là một ranh giới đối với giấy phép GPL (trừ khi GPLv3 khét tiếng với điều khoản Affero );
  • trong vùng màu xám: tự động liên kết nó. Có rất nhiều tranh cãi nếu liên kết động là hoặc không phải là ranh giới với công việc xuất phát. Vài điểm nhìn ở đây . Điều này cũng có thể phụ thuộc vào quyền tài phán mà bạn tham gia.

Cũng lưu ý rằng GPL là giấy phép phân phối , vì vậy bạn chỉ cần cấp phép cho công việc của mình nếu bạn phân phối nhị phân cho bên thứ ba. Và bạn chỉ có nghĩa vụ phát hành nguồn cho họ, không có nghĩa vụ phải phát hành nó ra công chúng, trừ khi bạn phát hành nhị phân ra công chúng. Nếu bạn chỉ sử dụng mã của mình trên các máy chủ của mình, bạn không có nghĩa vụ phải phát hành bất kỳ mã nào. Đây là cách Google lấy ví dụ với các nhân Linux đã được tinh chỉnh của họ.


Tôi không chắc chắn rằng ổ cắm là một rào cản. Theo các luật sư của chúng tôi, các kỹ sư quá tập trung bởi các biện pháp kỹ thuật trong khi hiệu ứng toàn cầu là những gì được kiểm tra bởi luật pháp. Xuất bản một giao diện ổ cắm và đưa ra một ví dụ sử dụng trong emacs lisp là OK đối với họ. Nhưng cho khả năng tự động cài đặt emacs cùng với chương trình của chúng tôi thì không. Bạn đúng cho việc phân phối. Nhưng lưu ý rằng bạn không thể ngăn người mà bạn phân phối tiếp tục phân phối.
Lập trình viên

@AProgrammer: ngay cả FSF cũng nói rằng, nếu đó là quy trình riêng biệt thì đây là những chương trình riêng biệt, do đó không tạo ra công việc. Câu hỏi thường gặp về các plugin, nhưng logic vẫn được áp dụng: gnu.org/licenses/gpl-faq.html#NFUseGPLPlugins
vartec

Câu hỏi là về trình cắm và trình cắm là bản chất không thể thiếu. Tôi sẽ không đặt cược cho công ty của mình rằng cấu trúc một chương trình theo hai quy trình, một GPLed vì nó sử dụng các thư viện GPL còn lại không phải vì chúng tôi muốn giữ nguồn riêng tư là hợp pháp. Đặc biệt là khi cả hai được phân phối cùng nhau. Nhưng đó là cuộc gọi của bạn.
AProgrammer

1
@A: phân phối với các chương trình khác là "tổng hợp" và được GPL cho phép rõ ràng. Và không, đó không phải là cuộc gọi của tôi. Cá nhân, tôi sẽ không chạm vào thư viện GPL ngay cả với cây gậy dài 10 feet.
vartec

1

IANAL và, trong mọi trường hợp, điều này có thể không có nghĩa gì về mặt pháp lý, nhưng, tôi tin rằng trong cuốn sách "Hacker" của Steven Levy, ông đã mô tả làm thế nào, tại một thời điểm, RMS đã viết mã * nix cho tiền vào ban ngày và ban đêm những thứ ở nhà để nó có thể là một phần của ... GNU? ... đây là trước Linux ... một số hệ thống loại Unix miễn phí. Tôi tin rằng anh ta phải làm cho mã nhà khác với mã ngày, nhưng về cơ bản anh ta đang làm chính xác những gì bạn đang đề xuất.

Điều này có lẽ không quan trọng về mặt pháp lý, nhưng ... Tôi không chắc liệu Apple và / hoặc Microsoft có được phép / giấy phép hay không, nhưng các phòng thí nghiệm chuông đã phát minh ra giao diện máy tính để bàn / biểu tượng / chuột, được sử dụng cho máy Mac (hoặc Lisa?) mà sau đó đã được Microsoft sử dụng.


Đó sẽ là Xerox PARC, không phải Bell Labs.
Marnen Laibow-Koser

Và Jobs đã thỏa thuận với Xerox cho phép Apple đi xem phòng thí nghiệm ở Palo Alto. Không ai ở Xerox quan tâm đến công nghệ đó vào thời điểm đó.
aledalgrande

0

Không có câu trả lời cho điều này ngoại trừ một phiên tòa trước một thẩm phán trong khu vực tài phán cụ thể của bạn. Nhưng bạn có muốn mạo hiểm không? Hoặc đi đến nỗ lực viết lại thư viện GPL, các bài kiểm tra, v.v. Bạn có chắc thư viện kia không tương thích với GPL không? Điều này thực sự khá bất thường, trừ khi bạn muốn phân phối cả hai thư viện theo các điều khoản của thư viện không phải GPL.


Bạn có thể lấy danh sách giấy phép Gnu tại gnu.org/licenses/license-list.html và bạn sẽ nhận thấy rằng nó được chia thành các giấy phép tương thích GPL miễn phí, giấy phép không tương thích GPL miễn phí và giấy phép không miễn phí. GPL có một số yêu cầu cụ thể mà các giấy phép khác thường không tuân thủ và một trong những mục tiêu của GPLv3 là làm cho khả năng tương thích dễ dàng hơn.
David Thornley

0

Làm thế nào rộng rãi để thay đổi cần phải đến thư viện để có thể thay đổi giấy phép?

Ở hầu hết các nơi trên thế giới, bạn cần bắt đầu lại từ đầu, không cắt và vượt qua bất cứ điều gì. Bạn cần tên mới cho các hàm / lớp / biến, v.v. và cấu trúc nên khác nhau. Sau đó, bạn được an toàn.

Mặt khác, nếu một công cụ khác không thể tìm thấy bất kỳ điểm tương đồng nào thì ...


2
Nếu một công cụ tìm khác biệt không thể tìm thấy bất kỳ sự tương đồng thì nó vẫn có thể là một vi phạm bản quyền. Nhìn nó từ quan điểm phi lập trình: Tôi viết một cuốn sách, bạn dịch nó sang tiếng Thụy Điển và theo luật bản quyền của Hoa Kỳ (và có thể là tiếng Thụy Điển) mà bạn đã thực hiện một tác phẩm phái sinh.
David Thornley

@David Thornley Vâng, bạn nói đúng về công việc phái sinh.
Johan
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.