Tại sao tôi phải giữ giấy phép phần mềm nguồn mở của mình trong thư mục gốc?


10

Gần như tất cả các giấy phép phần mềm nguồn mở đều yêu cầu (hoặc ít nhất là luật sư thường đề nghị họ yêu cầu) người dùng bao gồm toàn bộ giấy phép trong thư mục gốc của dự án mà họ đang bảo vệ.

Một luật sư mà tôi đã nói để gợi ý rằng đây là một di sản của thời đại CD, khi cần phải có giấy phép đầy đủ trong một hộp trang sức.

Nhưng ngày nay, chúng ta đang sống trong thời đại đám mây. Ví dụ, tại sao tôi không thể lưu trữ giấy phép đầy đủ tại trang web của mình và bao gồm tiêu đề + URL của giấy phép đó trong tiêu đề của các tệp nguồn của tôi?

Phần thưởng: Nếu thường đồng ý rằng các giấy phép đã thiết lập phải được giữ nguyên trong thư mục gốc, tại sao OSI của FSF không phê duyệt giấy phép mà bạn có thể tham khảo bằng URL và điều gì khiến ai đó không tạo ra giấy phép đó?


4
Một vấn đề xuất hiện trong đầu là URL có thể thay đổi hoặc bị ngừng.
Aaron Kurtzhals

6
'Internet không phổ biến' sẽ là lý do rõ ràng nhất (ngay cả khi ai đó có internet khi họ tải xuống phần mềm của bạn, nó có thể không có sẵn cho họ khi họ muốn mở rộng / sửa đổi nó).
TZHX

9
Bạn đang hỏi tại sao GIẤY PHÉP WHOLE CẦN ĐƯỢC BAO GỒM trong thư mục gốc, hoặc tại sao toàn bộ giấy phép cần phải được đưa vào ROOT?
DougM

Chỉ cần chỉ ra rằng chúng ta dường như đang nói lên một sự phân đôi giả ở đây; Bạn hỏi tại sao giấy phép phải ở gốc và tại sao nó không thể trực tuyến tại một URL? Có một lựa chọn thứ ba mà không ai được nhắc đến; giấy phép được gói cùng với phần mềm nhưng trong thư mục "docs" hoặc thứ gì đó và nhận xét trong tiêu đề của tệp mã phản ánh điều đó. Tôi đồng ý với những lý do chính đáng được đưa ra tại sao Giấy phép phải được gói cùng với phần mềm, nhưng điều đó không dừng lại ở một thư mục tài liệu.
James

4
Lý do nó hầu như luôn luôn ở gốc là rất dễ tìm. Khi tôi tải xuống dự án của bạn, tôi duyệt root và một trong những điều đầu tiên tôi thấy là giấy phép. Đơn giản như vậy
JohnL

Câu trả lời:


24

Từ Câu hỏi thường gặp về GPL (nhưng lời khuyên có thể áp dụng cho tất cả các giấy phép):

Tại sao GPL yêu cầu bao gồm một bản sao GPL với mỗi bản sao của chương trình?

Bao gồm một bản sao của giấy phép với công việc là rất quan trọng để mọi người có được một bản sao của chương trình có thể biết các quyền của mình là gì.

Có thể bao gồm một URL đề cập đến giấy phép, thay vì chính giấy phép. Nhưng bạn không thể chắc chắn rằng URL vẫn sẽ hợp lệ, năm năm hoặc mười năm kể từ bây giờ. Hai mươi năm kể từ bây giờ, các URL như chúng ta biết ngày nay có thể không còn tồn tại.

Cách duy nhất để đảm bảo rằng những người có bản sao của chương trình sẽ tiếp tục có thể xem giấy phép, bất chấp mọi thay đổi sẽ xảy ra trong mạng, là đưa bản sao của giấy phép vào chương trình.

(nhấn mạnh của tôi)

Thời điểm trang web lưu trữ giấy phép của bạn bị hỏng hoặc thay đổi đường dẫn URL của nó, những người có bản sao phần mềm của bạn không còn có thể xác minh quyền nào họ có thể thực hiện một cách an toàn. Giả sử thậm chí bạn có thể bằng cách nào đó đảm bảo rằng URL chính xác đó sẽ trực tuyến mãi mãi: khả năng người dùng xác minh rằng việc sử dụng phần mềm của bạn là hợp pháp vẫn phụ thuộc vào khả năng kết nối với URL cụ thể đó. Mặc dù yêu cầu này có thể không phù hợp ở thành phố / quốc gia / hành tinh cụ thể của bạn, nhưng nó có thể không phù hợp ở nơi khác. Bạn không nên áp đặt yêu cầu này, đặc biệt khi cách giải quyết (bao gồm cả văn bản giấy phép đầy đủ) là không đáng kể.

Bạn có thể trả lời khiếu nại này bằng cách nói: "Vậy thì sao? Nếu URL không hoạt động hoặc không truy cập được, một mô tả rõ ràng như 'GNU GPL v3' là đủ. Bản sao đầy đủ của GPL rất phong phú, người dùng có thể tra cứu bản thân giấy phép. " Một vài vấn đề ngay lập tức nảy ra trong đầu:

  1. Điều này không khái quát cho các định danh giấy phép ít rõ ràng hơn (cụm từ "giấy phép BSD" xuất hiện trong tâm trí).

  2. Điều này không khái quát tốt cho các giấy phép ít phổ biến hơn hoặc đã được tùy chỉnh ("GPL với các ngoại lệ liên kết" xuất hiện trong tâm trí: liên kết ngoại lệ nào?). Làm thế nào phổ biến một giấy phép cần phải có trước khi nó hợp lý để mong đợi người dùng tìm thấy nó đáng tin cậy theo tên?

  3. Điều này vẫn yêu cầu người dùng phải có kết nối Internet, có thể không phải như vậy, ngay cả khi họ có kết nối tại thời điểm họ có phần mềm. (Và họ có thể không có quyền truy cập Internet khi họ có phần mềm: "thời đại CD" vẫn chưa kết thúc ở nhiều nơi trên thế giới. Như một trường hợp khác, hãy xem xét các quần thể quốc gia có quyền truy cập Internet rộng rãi nhưng kiểm duyệt phần lớn của nó .) Hậu quả của phần mềm có thể phân phối lại tự do là người nhận có thể không nhận được bản sao phần mềm của bạn trực tiếp từ bạn hoặc thông qua kênh phân phối mà bạn dự đoán ban đầu.

Một lập luận cuối cùng chống lại các liên kết giấy phép được ghi nhận bởi nhận xét của MichaelT bên dưới: nó có thể cho phép bạn thay đổi giấy phép một cách linh hoạt, hồi tố. Điều này có thể được thực hiện một cách có chủ ý, nhưng cũng có thể được thực hiện một cách tình cờ, nếu bạn thay đổi giấy phép giữa các phiên bản phần mềm, nhưng sử dụng cùng một liên kết giấy phép cho cả hai phiên bản, do đó làm mất giấy phép cũ của bạn. Việc chuyển đổi như vậy sẽ gây khó khăn hơn cho những người cần chứng minh rằng họ đã có bản sao cũ hơn theo một giấy phép khác so với phiên bản hiện tại.

Vậy tại sao tôi phải giữ giấy phép trong root dự án?

Tôi không phải là một luật sư, nhưng tôi chưa bao giờ thấy bất kỳ lý lẽ thuyết phục rằng bạn làm cần phải giữ giấy phép trong thư mục gốc của dự án. Ngay cả GPL, trong đó quy định rằng giấy phép phải đi kèm với mỗi bản sao của tác phẩm, im lặng về cách nó phải đi kèm với tác phẩm. (Điều này có thể là do GPL có thể được áp dụng trong bối cảnh không phải phần mềm, trong đó khái niệm "thư mục gốc" không có ý nghĩa.)

Giữ giấy phép trong thư mục gốc có lẽ là một ý tưởng tốt vì nó tối đa hóa khả năng người dùng sẽ nhìn thấy nó, và do đó giảm thiểu cả sự thất vọng của người dùng và khả năng khiếu nại chống lại bạn vì đã cố giấu giấy phép trong một thư mục tối nghĩa. Nếu bạn có nhiều giấy phép, có thể có ý nghĩa hơn khi đặt tất cả chúng vào thư mục riêng của chúng và bao gồm một README dự án rõ ràng có chứa đường dẫn tệp để tìm giấy phép cho từng thành phần.

Đặt giấy phép của bạn trong thư mục gốc cũng là một cách hữu ích vì nó có thể phân tán giấy phép của các mô-đun được cấp phép khác nhau mà toàn bộ công việc. Giả sử dự án của tôi FooProj sử dụng mô-đun độc lập BarMod. FooProj có thể được cấp phép GPL, trong khi mô-đun độc lập có thể được MIT cấp phép. Khi tôi lần đầu mở FooProj, tôi thấy một bản sao của GPL trong thư mục gốc và hiểu rằng toàn bộ công việc được cấp phép GPL. Khi tôi vào thư mục cho BarMod, tôi thấy một tệp giấy phép mới ở đó và tôi hiểu rằng nội dung của thư mục này được MIT cấp phép. Tất nhiên, đây chỉ là một trợ giúp hữu ích; bạn phải luôn luôn chỉ rõ việc cấp phép cho các mô-đun của mình một cách rõ ràng trong tệp README, THÔNG BÁO hoặc tệp tương tự.

Tóm lại, sử dụng tập tin gốc là một vấn đề thuận tiện và rõ ràng. Tôi chưa thấy bất kỳ văn bản giấy phép nguồn mở ràng buộc nào về mặt pháp lý yêu cầu nó, tôi cũng không biết bất kỳ lý do nào khiến nó được yêu cầu về mặt pháp lý. Giấy phép của bạn phải dễ dàng hợp lý để người nhận khám phá; bao gồm giấy phép trong gốc dự án là đủ, nhưng không cần thiết, để đáp ứng tiêu chí này.


3
Cũng xem xét khả năng bạn liên kết đến một trang web từ xa cho site.com/foo/license.txt mà bạn có theo giấy phép BSD, nhưng kể từ đó, nó đã được cấp lại theo GPL v3 và đó là trang web.com/foo/license. Txt bây giờ có chứa. Nhưng phiên bản bạn đã tải xuống có các quyền khác nhau.

Tôi đã đánh dấu câu trả lời này đúng vì nó dường như đưa ra sự khôn ngoan thông thường & hợp pháp xung quanh việc cấp phép OSS. Điều đó nói rằng , suy nghĩ này gây cho tôi một chút hoang tưởng đối với thế giới được kiểm soát phiên bản được sao lưu này mà chúng ta đang sống. Tôi không chắc nguy cơ giả mạo nội dung URL chính là lớn hơn nguy cơ ai đó vô tình xóa một phần của một giấy phép có trong thư mục gốc. Và ngay cả khi rủi ro lớn hơn, tôi vẫn nghi ngờ rằng thật tuyệt vời khi bắt buộc các nhà phát triển phải bao gồm đầy đủ giấy phép trong phần mềm của họ, trái ngược với việc trích dẫn các giấy phép được lưu trữ bên ngoài trong các nhận xét mã.
samthebrand

FYI, có lẽ là dấu hiệu của việc cấp phép OSS: Creative Commons 4.0 cho phép người được cấp phép liên kết đến một trang riêng có chứa thông tin phân bổ.
samthebrand

6

Nhưng ngày nay, chúng ta đang sống trong thời đại đám mây. Ví dụ, tại sao tôi không thể lưu trữ giấy phép đầy đủ tại trang web của mình và bao gồm tiêu đề + URL của giấy phép đó trong tiêu đề của các tệp nguồn của tôi?

Có tồn tại giấy phép cho phép điều đó. Apache 2.0 chẳng hạn. Apache 2.0 chỉ yêu cầu mỗi tệp nguồn chứa một tiêu đề nhỏ trỏ đến URL chính tắc của Giấy phép Apache 2.0. Không cần phải sao chép toàn bộ giấy phép trong cây nguồn.

Từ chính giấy phép Apache 2.0:

APPENDIX: How to apply the Apache License to your work

To apply the Apache License to your work, attach the following boilerplate
notice, with the fields enclosed by brackets "[]" replaced with your own 
identifying information. (Don't include the brackets!) The text should be  
enclosed in the appropriate comment syntax for the file format. We also 
recommend that a file or class name and description of purpose be included 
on the same "printed page" as the copyright notice for easier identification 
within third-party archives.

    Copyright [yyyy] [name of copyright owner]

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

Tôi nghĩ rằng phụ lục không đầy đủ hoặc ít nhất hoạt động với giả định rằng bạn đã bao gồm một bản sao của giấy phép. Từ chính văn bản 2.0 , khi phân phối công việc được cấp phép của Apache:4.(a) You must give any other recipients of the Work or Derivative Works a copy of this License;
apsillers

3

Không có yêu cầu rằng nó phải nằm trong thư mục gốc của dự án. Nó đơn giản là nơi phổ biến nhất, và do đó, nơi đầu tiên mọi người sẽ tìm để tìm giấy phép. Đối với vấn đề đó, ngay cả khi nó không phổ biến, vẫn có khả năng là nơi đầu tiên mọi người sẽ nhìn. Vì giấy phép tồn tại để thông báo, việc ẩn thông tin không có ý nghĩa nhiều.

Nếu bạn ẩn nó đằng sau một URL, không có gì đảm bảo tuyệt đối rằng URL đó sẽ luôn khả dụng. Nếu đó là một tập tin trong thư mục gốc của dự án, theo định nghĩa, nó sẽ luôn có sẵn.

Nói tóm lại, đây là nơi hiệu quả nhất, thân thiện với người dùng nhất để đặt nó.


Rễ dự án là nơi đầu tiên người ta sẽ nhìn: nó là đỉnh của cây, gốc của hệ thống phân cấp thư mục. Tất cả các tài liệu cấp cao nhất nên có ở đó: readme, giấy phép, v.v. Những tệp đó có thể hướng người đọc đào sâu hơn vào nơi khác trong dự án, nhưng gốc là nơi đầu tiên tôi tìm kiếm bất cứ thứ gì.
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.