Cách thực hành tốt nhất để sắp xếp giấy phép thư viện của bên thứ ba là giấy tờ giấy tờ là gì?


60

Tôi đang phát triển một dự án nguồn mở nhỏ. Ứng dụng sử dụng nhiều thư viện của bên thứ ba được phát hành với một loạt các giấy phép: Apache, MIT, BSD, LGPL và CDDL.

Mỗi giấy phép này đều có những yêu cầu riêng về giấy tờ trên giấy tờ. Ví dụ: Giấy phép Apache, v2.0 nói:

Nếu Tác phẩm bao gồm tệp văn bản "THÔNG BÁO" như một phần của bản phân phối, thì mọi Tác phẩm phái sinh mà bạn phân phối phải bao gồm một bản sao có thể đọc được của các thông báo ghi nhận có trong tệp THÔNG BÁO đó.

Giấy phép MIT chứa thông báo bản quyền và cho biết:

Thông báo bản quyền ở trên và thông báo cấp phép này sẽ được bao gồm trong tất cả các bản sao hoặc các phần quan trọng của Phần mềm.

Giấy phép BSD cũng chứa thông báo bản quyền và cho biết:

Phân phối lại ở dạng nhị phân phải sao chép thông báo bản quyền ở trên, danh sách các điều kiện này và tuyên bố từ chối sau đây trong tài liệu và / hoặc các tài liệu khác được cung cấp với bản phân phối.

LGPL v.3 nói:

(Bạn nên) đưa ra thông báo nổi bật với mỗi bản sao của Công việc kết hợp mà Thư viện được sử dụng trong đó và Thư viện và việc sử dụng nó được bảo vệ bởi Giấy phép này.

Giấy phép LGPL và CDDL cũng yêu cầu cung cấp mã nguồn cùng với dạng nhị phân của thư viện, vì vậy thông tin về cách lấy mã nguồn có thể được cung cấp ở đâu đó.

Thực hành tốt nhất để sắp xếp tất cả các dữ liệu này là gì? Tôi có nên tạo một tệp văn bản và sao chép nội dung của tất cả NOTICEcác tệp, giấy phép MIT và BSD, v.v. vào tệp đó không? ... Hoặc tôi nên tạo một thư mục riêng cho mỗi thư viện và đặt tất cả dữ liệu liên quan đến thư viện vào thư mục đó? Sầu hay cái gì khác?

Cũng rất thú vị khi xem bất kỳ ví dụ nào về công việc giấy tờ này của Pháp trong các dự án đã xuất bản.

CẬP NHẬT:

Tôi đã đọc Bạn có phải bao gồm thông báo cấp phép với mọi tệp nguồn không? , nhưng nó không giải quyết vấn đề của tôi. Câu hỏi của tôi là về các thư viện của bên thứ ba được sử dụng trong một dự án và câu hỏi đó là về các tiêu đề trong mã nguồn riêng của dự án.

Câu trả lời:


62

Đầu tiên, từ chối trách nhiệm tiêu chuẩn: IANAL nhưng là một người lạ ngẫu nhiên.

Tôi đã đóng gói một ứng dụng AGPL (*) gần đây. Nó sử dụng các thư viện bên thứ ba được phân phối theo giấy phép jQuery, MIT, BSD (và một số khác). Đây là cách tôi đã tiến hành.

Ý định chính của tôi khi tôi thiết kế này là: tuân thủcông bằng . Mặc dù điều thứ nhất là đủ, nhưng điều thứ hai đảm bảo rằng bất cứ ai cố gắng kiện tôi vì không hiểu đúng 100% phải thừa nhận tôi đã làm mọi việc một cách thiện chí.

1) Tệp nguồn: tất cả các tệp của tôi có tiêu đề AGPL. Tất cả các tệp của bên thứ 3 được để lại (hầu hết) không được sửa đổi, và do đó bao gồm tiêu đề giấy phép của riêng họ.

2) LICENSE.txt, ở phần gốc của gói, chứa văn bản giấy phép AGPL (như được giải thích trong phần "Cách áp dụng các điều khoản này cho các chương trình mới của bạn").

3) Tệp giấy phép thứ cấp, mà tôi đặt tên là LICENSE-3RD-PARTY.txt, cũng nằm ở thư mục gốc của gói, chứa các bản sao nguyên văn của TẤT CẢ các giấy phép. Đối với mỗi giấy phép, một tiêu đề cho biết đó là giấy phép nào và nó được áp dụng cho phần nào. Tôi cũng bao gồm tên của chủ sở hữu bản quyền ở đây - tôi sử dụng lại chúng ở một nơi khác sau đó để nó đáng để nỗ lực.

-----------------------------------------------------------------------------
                        The MIT License (MIT)
        applies to: 
        - AJAX Upload, Copyright (c) Andrew Valums
        - jQuery hashchange event, Copyright (c) 2010 "Cowboy" Ben Alman
        - jquery.hotkeys, Copyright (c) 2010 John Resig
-----------------------------------------------------------------------------

Permission is hereby granted, free of charge [...]

4) README.txt, cũng ở phần gốc, giải thích rằng phần mềm là AGPL (xem LICENSE.txt) và sử dụng các thư viện bên thứ ba được phân phối theo các điều khoản của riêng họ (xem LICENSE-3RD-PARTY.txt)

5) Trong tài liệu trực tuyến, tôi có trang Cấp phép lặp lại thông tin từ readme: phần mềm của tôi là AGPL và nó sử dụng các thành phần của bên thứ 3 là BSD / MIT / [...]. Tôi đã quyết định giữ cho trang này sạch hơn và dễ đọc hơn, do đó chỉ cung cấp tên của giấy phép, với một liên kết đến toàn văn và tên của chủ bản quyền có liên kết đến trang web của riêng họ.

jQuery
    Copyright 2013 jQuery Foundation and other contributors
    http://jquery.com
    MIT License
Data Driven Documents (D3)
    Copyright (c) 2013, Michael Bostock    <-- link to personal website, if any
    http://d3js.org                        <-- link to software website
    BSD-like license                       <-- link to license full text
[...]

6) Cũng trong tài liệu trực tuyến, tôi có trang Tín dụng , nơi tôi liệt kê những người đóng góp chính trực tiếp và gián tiếp. Ví dụ, tôi đã trích dẫn nhóm PostgreSQL, mặc dù PostgreSQL không được bao gồm trong quá trình tải xuống, nhưng bạn cần nó để chạy phần mềm. Đây sẽ là một nơi tốt để đặt tất cả các xác nhận được yêu cầu hoặc mong muốn bởi các tác giả của các công cụ / thư viện / bên thứ 3.

7) Bên trong phần mềm, danh sách các thư viện cùng với giấy phép và chủ bản quyền, được lặp lại trong hộp thoại Giới thiệu .

Để giải quyết các câu hỏi cụ thể của bạn về việc bao gồm mã nguồn và bố cục tệp:

  • nó thường được chấp nhận để chỉ liên kết đến mã nguồn đầy đủ của các gói bên thứ 3. Tham khảo từng giấy phép cụ thể để chắc chắn, nhưng IMHO cung cấp liên kết là đủ. Ví dụ: nếu bạn sử dụng một phiên bản rút gọn của thư viện, bạn có thể cung cấp liên kết đến bản tải xuống tiêu chuẩn và sẽ ổn.

  • trừ khi thành phần bên thứ 3 yêu cầu rõ ràng rằng các bản phân phối giữ bố cục tệp giống hệt nhau, bạn có thể sắp xếp lại mọi thứ theo ý muốn. Hãy tưởng tượng bạn sử dụng các thư viện web, có mỗi thư mục css / và js /, bạn có thể hợp nhất chúng lại với nhau thành một thư mục lib /, chứa css / và js /, hoặc thậm chí phân tán chúng xung quanh cây nguồn của bạn - lựa chọn của bạn.

Và như một lưu ý cuối cùng, tôi rất muốn chào đón những người bình luận vẫy tay nói rằng "bạn đang làm sai điều này " và / hoặc "bạn cũng nên làm điều đó ".

(*) Đây không phải là liên kết spam, mà chỉ để trả lời phần "vui lòng cung cấp ví dụ" của câu hỏi. Hãy thoải mái, các mod thân yêu, để xóa liên kết này nếu điều này trái với quy tắc.


2
Cảm ơn bạn cho một câu trả lời tuyệt vời! Đó chính xác là loại thông tin mà tôi đang tìm kiếm. Tôi sẽ không chấp nhận nó để xem người khác có gì để nói không.
Alexey

8
Đối với những người sẽ đến đây sau, FireFox có một tài liệu tương tự như LICENSE-3RD-PARTY.txttệp được mô tả trong câu trả lời này. (Click Licensing Informationvào Abouthộp.) Có một tài liệu tương tự như trong Google Chrome quá.
Alexey

1
Đây là một tài liệu tương tự liệt kê phần mềm của bên thứ ba được IntelliJ IDEA sử dụng: confluence.jetbrains.com/display/IDEADEV/ Kẻ
Alexey
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.