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:
Đ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í).
Đ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?
Đ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.