052.2 Bài 1
Chứng chỉ: |
Open Source Essentials |
---|---|
Phiên bản: |
1.0 |
Chủ đề: |
052 Giấy phép dành cho Phần mềm Mã nguồn Mở |
Mục tiêu: |
052.1 Giấy phép Phần mềm Copyleft |
Bài học: |
1 trên 1 |
Giới thiệu
Tầm quan trọng của giấy phép đối với cả việc sử dụng lẫn phát triển phần mềm đã được nhắc tới ở bài trước. Do đó, không có gì đáng ngạc nhiên khi phần mềm tự do cũng được đặc tả bởi các phương pháp tiếp cận mới trong cấp phép ngay từ đầu: Các điều kiện cho việc sử dụng không hạn chế hoặc việc hợp tác phát triển phần mềm phải được định nghĩa một cách hợp pháp để có thể được bảo vệ và thực thi.
Nhận thức được rằng luật bản quyền được thể hiện một cách chặt chẽ trong hầu hết các hệ thống pháp luật trên toàn thế giới và không thể bị nghi ngờ hay thay thế, ngay từ những năm 1980, các nhà phát triển phần mềm đã áp dụng một cách tiếp cận nhằm tôn trọng các quy định về bản quyền nhưng đồng thời cũng bổ sung vào các quy định mới nhấn mạnh về nguyên tắc “tự do”: copyleft.
Copyleft và Giấy phép Công cộng Chung GNU (GPL)
Richard Stallman, khi đó là một nhà phát triển nổi tiếng tại MIT, đã thành lập Dự án GNU vào năm 1983 để phát triển thứ mà ông coi là một hệ điều hành “tự do”. Rất nhanh sau đó mọi người đều nhận ra rằng mã do dự án phát triển phải được bảo vệ về mặt pháp lý để nó không thể bị các nhà cung cấp thương mại chiếm lấy và từ đó trở thành “không tự do”.
Do đó, Stallman đã thành lập tổ chức phi lợi nhuận Tổ chức Phần mềm Tự do (FSF) vào năm 1985. Tổ chức này tóm tắt sứ mệnh của mình trên trang web của họ như sau: “Tổ chức Phần mềm Tự do đang làm việc để đảm bảo quyền tự do cho người dùng máy tính bằng cách thúc đẩy sự phát triển và sử dụng phần mềm và tài liệu tự do…”
Công cụ trọng yếu đối với sứ mệnh này là một giấy phép một mặt tôn trọng các điều luật hiện hành (đặc biệt là luật bản quyền) và mặt khác thực hiện các ý tưởng tự do của chính nó một cách trong sạch về mặt pháp lý. Kết quả chính là phiên bản đầu tiên của Giấy phép Công cộng Chung GNU (GPLv1) ra đời vào năm 1989. Giấy phép này và nhiều bài viết liên quan — chẳng hạn như “Phần mềm Tự do là gì?” do Stallman viết vào năm 1992 — đã làm rõ động cơ và giá trị của các nhà phát triển phần mềm tự do - những người mà giờ đây cũng tự coi mình là một “phong trào”.
Cốt lõi của lập trình vẫn được hình thành từ “bốn quyền tự do thiết yếu” do Stallman đưa ra trong bài viết nói trên và được đánh số bắt đầu từ 0:
Quyền tự do chạy chương trình theo ý muốn, với bất kỳ mục đích nào (quyền tự do số 0).
Quyền tự do nghiên cứu cách chương trình hoạt động và thay đổi nó để máy tính của bạn hoạt động theo ý muốn (quyền tự do số 1). Quyền truy cập vào mã nguồn là điều kiện tiên quyết cho việc này.
Quyền tự do tái phân phối các bản sao để bạn có thể giúp đỡ những người khác (quyền tự do số 2).
Quyền tự do phân phối bản sao các phiên bản đã sửa đổi của bạn cho người khác (quyền tự do số 3). Bằng cách này, bạn có thể mang đến lợi ích cho cả cộng đồng từ những thay đổi của mình. Quyền truy cập vào mã nguồn là điều kiện tiên quyết cho việc này.
Phần mềm Tự do là gì?
Không giống như giấy phép dành cho các sản phẩm thương mại sẽ đặt ra các hạn chế về việc sử dụng ngay từ đầu, phần mềm tự do hướng tới sự tự do tối đa cho người dùng và các nhà phát triển.
Lời mở đầu của GNU GPLv1 tóm tắt điều này như sau:
Cụ thể, Giấy phép Công cộng Chung được thiết kế để đảm bảo rằng bạn có quyền tự do cho hoặc bán các bản sao của phần mềm tự do, rằng bạn có thể nhận được mã nguồn hoặc lấy nó nếu muốn, và 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 tự do mới; và rằng bạn biết bạn có thể làm được những điều này.
phiên bản 1
Điều này có nghĩa là mọi người đều có quyền sử dụng, phân phối và sửa đổi phần mềm theo GPL mà không bị hạn chế (điều này có thể thực hiện được vì mã nguồn hoàn toàn công khai — hay nói cách khác là “mở”) và lần lượt phân phối các bảnsửa đổi. Thậm chí bạn có thể yêu cầu trả phí khi chuyển nhượng phần mềm:
Trên thực tế, chúng tôi khuyến khích những người tái phân phối phần mềm tự do tính phí nhiều nhất như họ mong muốn hoặc có thể. Nếu một giấy phép không cho phép người dùng tạo bản sao và bán chúng thì đó là giấy phép không tự do…. Các chương trình tự do đôi khi sẽ được phân phối miễn phí và đôi khi là với một mức giá đáng kể. Thường thì cùng một chương trình có thể được cung cấp theo cả hai cách từ những nơi khác nhau. Chương trình sẽ vẫn là tự do bất kể giá cả của nó, vì người dùng có quyền tự do sử dụng nó.
Bán Phần mềm Tự do
Nhưng nếu các quyền tự do có phạm vi rộng như vậy thì phần mềm sẽ được bảo vệ theo giấy phép này ở mức độ nào (chẳng hạn như việc kết hợp vào các sản phẩm độc quyền)?
Đây là vai trò của nguyên tắc copyleft đã được đề cập trước đó mà GPL đã áp dụng trong phiên bản 1 ngay cả khi thuật ngữ này chưa được xác định một cách rõ ràng:
Bạn không được sao chép, sửa đổi, cấp phép lại, phân phối hoặc chuyển giao Chương trình trừ khi được quy định rõ ràng theo Giấy phép Công cộng này.
Điều này có nghĩa là tất cả các quyền tự do này được liên kết với điều kiện là người dùng phải bảo toàn các quyền tự do này trong mọi việc họ làm đối với phần mềm.
Do đó, Copyleft không chỉ đảm bảo các quyền tự do mà còn yêu cầu mọi người dùng phải cấp các quyền tự do này cho người khác. Điều này có thể đạt được bằng cách quy định rằng phần mềm phải tuân theo giấy phép copyleft (chẳng hạn như GPLv1 đời đầu), chỉ có thể được sửa đổi và tái phân phối nếu các sửa đổi đó được xuất bản dưới cùng các điều kiện - tức là theo cùng một giấy phép.
Do đó, lý tưởng của phần mềm tự do, cụ thể là việc sử dụng chung và phát triển phần mềm xa hơn, được ưu tiên hơn các nhu cầu cá nhân liên quan đến phần mềm. Nguyên tắc có đi có lại rất quan trọng: Những người sử dụng các quyền tự do cũng phải trao đi những quyền tự do đó. Do đó, các giấy phép Copyleft thường được gọi là giấy phép tương hỗ.
Cách tiếp cận hoàn toàn mới này đối với giấy phép phần mềm đã được chứng minh là hợp lý về mặt pháp lý và có thể thực hiện được trong phiên bản 1 của GPL; do đó, GPL chỉ trải qua hai lần sửa đổi lớn trong gần 40 năm phát triển của thị trường CNTT hiện đại.
GPLv2 và GPLv3
Năm 1991, Tổ chức Phần mềm Tự do đã giới thiệu phiên bản 2 của Giấy phép Công cộng Chung GNU (GPLv2). Giấy phép này đã trở thành giấy phép phổ biến nhất cho các dự án phần mềm tự do trong nhiều năm. Ví dụ: lõi của hệ điều hành Linux ngày nay vẫn được cấp phép theo GPLv2.
So với phiên bản 1, phiên bản 2 chủ yếu liên quan đến các định nghĩa chính xác hơn để tránh bị mơ hồ. Ví dụ: phiên bản 2 giải thích chi tiết hơn nhiều ý nghĩa của “mã nguồn”.
Một điều đáng quan tâm khác nữa là Mục 7 mới đã đặt ra nguyên tắc tự do và do đó hiệu lực của giấy phép là tuyệt đối và không cho phép bất kỳ một sự thỏa hiệp nào — ví dụ như việc tích hợp các thành phần ít tự do hơn vào phần mềm:
Nếu bạn không thể đáp ứng đồng thời các nghĩa vụ của mình trong việc phân phối theo Giấy phép này và bất kỳ nghĩa vụ thích hợp nào khác thì hậu quả sẽ là bạn hoàn toàn không được phép phân phối Chương trình. Ví dụ: nếu một giấy phép bằng sáng chế không cho phép tái phân phối miễn phí bản quyền chương trình bởi tất cả những người nhận bản sao trực tiếp hoặc gián tiếp thông qua bạn thì cách duy nhất bạn có thể đáp ứng cả giấy phép đó và Giấy phép này là hạn chế hoàn toàn việc phân phối Chương trình.
Phải đến 16 năm sau, vào năm 2007, FSF mới xuất bản một phiên bản mới của GPL để tính đến những cải tiến kỹ thuật — chẳng hạn như việc cung cấp các dịch vụ phần mềm qua internet — cũng như các vấn đề về tính tương thích với các giấy phép FOSS khác. Tuy nhiên, giấy phép vẫn duy trì tính ổn định về các tuyên bố cốt lõi và chỉ bổ sung thêm các chi tiết để làm rõ thêm. Chúng ta hãy xem xét kỹ hơn về một số bổ sung này.
Trong khi GPLv2 vẫn thường sử dụng khái niệm phân phối khi đề cập đến việc cung cấp phần mềm, GPLv3 lại chỉ rõ quy trình này bằng hai thuật ngữ mới: truyền bá (propagation) và chuyển tải (conveying). Lý do chính cho điều này là bởi thuật ngữ “phân phối” (distribution) được định nghĩa trong nhiều luật bản quyền trên toàn thế giới. Để tránh sự mơ hồ hoặc các xung đột có thể xảy ra, GPLv3 đã chọn các thuật ngữ mới này và định nghĩa chúng như sau:
“Truyền bá” một sản phẩm có nghĩa là nếu làm bất cứ điều gì với tác phẩm đó trong khi không có sự cho phép thì bạn sẽ phải chịu trách nhiệm trực tiếp hoặc gián tiếp về hành vi vi phạm theo luật bản quyền hiện hành, ngoại trừ việc thực thi tác phẩm đó trên máy tính hoặc sửa đổi một bản sao riêng tư. Việc truyền bá bao gồm sao chép, phân phối (có hoặc không có sửa đổi), cung cấp cho công chúng và ở một số quốc gia còn bao gồm cả các hoạt động khác.
"Chuyển tải" một sản phẩm có nghĩa là bất kỳ hình thức truyền bá nào cho phép các bên khác tạo hoặc nhận các bản sao. Việc chỉ tương tác với người dùng thông qua mạng máy tính mà không có sự chuyển giao bản sao thì không được coi là chuyển tải.
Với số lượng đang ngày càng tăng lên một cách đáng kể của các sản phẩm phần mềm thương mại bị hạn chế phân phối bởi các nhà sản xuất thông qua các biện pháp kỹ thuật như mã đăng ký hoặc các thành phần phần cứng (dongles), đã có một số sáng kiến pháp lý quốc tế vào cuối những năm 1990 nhằm hình sự hóa việc lách luật của các biện pháp này. Quản lý quyền kỹ thuật số (DRM) (hay còn được những người phản đối gọi một cách ác ý là quản lý hạn chế kỹ thuật số) là một cái gai đối với FSF vì các biện pháp này về cơ bản mâu thuẫn với nhu cầu phân phối phần mềm tự do.
Để đáp lại, phiên bản 3 của GPL có chứa một phân đoạn tuyên bố rằng phần mềm tuân theo GPL sẽ không được sửa đổi khi tham chiếu đến các yêu cầu DRM pháp lý. Điều này cũng có nghĩa là phần mềm được cấp phép theo GPLv3 có thể sử dụng DRM nhưng những phần mềm khác cũng được phép lách các biện pháp đó.
Thuật ngữ tivo hoá (tivoization) cũng thường được sử dụng trong ngữ cảnh này. Từ này xuất hiện rõ ràng trong bản nháp đầu tiên của GPLv3 nhưng lại không được đưa vào phiên bản cuối cùng. Thuật ngữ này xuất phát từ công ty TiVo; công ty này đã sử dụng phần mềm được cấp phép GPLv2 trong máy ghi video kỹ thuật số của mình, nhưng đồng thời lại cũng ngăn chặn các phần mềm đã được sửa đổi khỏi việc được cài đặt và sử dụng trên thiết bị. Theo quan điểm của FSF, điều này mâu thuẫn với các nguyên tắc của GPL, và sau một số cuộc thảo luận, GPLv3 đã đưa điều này vào bằng một đoạn văn về cái gọi là sản phẩm của người dùng. Nó thường quy định rằng các sản phẩm sử dụng phần mềm được cấp phép GPLv3 cũng phải cung cấp thông tin về cách sửa đổi phần mềm này.
Một bổ sung nữa liên quan đến bằng sáng chế mà FSF về cơ bản đã bác bỏ đối với phần mềm vì lý do cản trở quyền tự do và đổi mới của chúng. Điều này đã được nêu trong phần mở đầu của GPLv3:
Cuối cùng, chương trình nào cũng sẽ luôn bị đe dọa bởi các bằng sáng chế phần mềm. Các quốc gia không nên cho phép các bằng sáng chế hạn chế việc phát triển và sử dụng phần mềm trên các máy tính có mục đích chung; nhưng ở những nước làm như vậy, chúng tôi muốn tránh các nguy cơ đặc biệt mà bằng sáng chế áp đặt cho một chương trình tự do để có thể biến nó trở thành chương trình độc quyền. Để ngăn chặn điều này, GPL đảm bảo rằng các bằng sáng chế không thể được sử dụng để làm cho chương trình trở nên không tự do.
Văn bản giấy phép cũng chứa một số đoạn về việc cho phép đưa mã theo bằng sáng chế thông qua một “giấy phép bằng sáng chế không độc quyền, toàn cầu, miễn phí bản quyền” từ người cấp phép để bảo vệ người dùng mã đó khỏi các tranh chấp giữa người nắm giữ bằng sáng chế và người được cấp phép.
Giấy phép Công cộng Chung GNU Affero (AGPL)
Với sự gia tăng về khả năng truy cập và tốc độ của Internet, ngày càng có nhiều dịch vụ xuất hiện mà trong đó, phần mềm chỉ được cài đặt trên máy chủ của nhà cung cấp — Nhà cung cấp dịch vụ ứng dụng (ASP) — và khách hàng của họ sẽ tương tác với dịch vụ thông qua internet. Xu hướng này được gọi là Phần mềm dưới dạng dịch vụ (SaaS).
Trong những trường hợp như vậy, GPLv2 đã không cung cấp được một sự rõ ràng về việc liệu mã nguồn (có thể đã được nhà cung cấp sửa đổi) có nên được cung cấp hay không và bằng cách nào. Phiên bản 3 của GPL sẽ lấp được lỗ hổng này — hay còn được gọi là lỗ hổng ASP — bằng cách đề cập rõ ràng đến một giấy phép khác do FSF cấp năm 2007 trong mục 13: Giấy phép Công cộng Chung GNU Affero phiên bản 3 (GNU AGPLv3). Tên này được đặt theo tên của công ty Affero - nơi đã phát triển và xuất bản hai phiên bản đầu tiên của giấy phép này.
AGPLv3 này về cơ bản là tương ứng với GPLv3 nhưng có quy định rõ ràng về vấn đề ASP trong phần “tương tác mạng từ xa”. Hơn nữa, cả hai giấy phép đều nêu rõ rằng chúng có thể được kết hợp với nhau mà không bị hạn chế.
Tóm lại, GNU AGPL là phần bổ sung bổ trợ cho GPL. AGPL mở rộng phạm vi của GPL bằng cách áp dụng copyleft cho phần mềm không còn được sử dụng trong cài đặt cục bộ mà chỉ ở dạng dịch vụ được truyền qua mạng.
Khả năng tương thích của Giấy phép Copyleft
Sự phát triển của phần mềm tự do được dựa trên sản phẩm của người khác — tức là tích hợp, sửa đổi và chia sẻ mã nguồn của những người khác. Nếu tất cả các phần của một phần mềm được sửa đổi hoặc mới được biên dịch đều có cùng một giấy phép copyleft (chẳng hạn như là GPLv3) thì điều này có thể thực hiện được mà không gặp bất kỳ vấn đề nào về pháp lý. Giấy phép chỉ đơn giản là yêu cầu kết quả được phân phối theo cùng một giấy phép.
Mọi thứ sẽ trở nên phức tạp hơn khi phần mềm có bao gồm các thành phần được cấp phép theo các giấy phép khác nhau. Chúng ta cần phải tính đến nhiều yếu tố trên phương diện này.
Các Sản phẩm Kết hợp và Phái sinh
Đôi khi phần mềm tự do được tạo ra trong những điều kiện rất khác biệt. Các thay đổi có thể là từ sửa lỗi đơn giản đến các dự án phức tạp với hàng triệu dòng mã. Bất kể là ở phạm vi nào, chúng ta cũng đều sẽ có sự phân biệt cơ bản giữa hai loại sản phẩm khi nói đến vấn đề cấp phép: phái sinh và kết hợp.
Ví dụ: giả sử dự án phần mềm A bị thiếu một chức năng nhất định. Thay vì tự phát triển chức năng này từ đầu, sẽ hợp lý hơn khi người ta kết hợp mã từ một dự án B khác cung cấp chính xác chức năng này vào với A. Phần mềm từ B thậm chí không cần phải thay đổi cho việc này mà có thể chỉ cần được thêm vào A. Vì lý do này mà nó được gọi là một sản phẩm kết hợp. Nếu cả A và B đều có cùng giấy phép copyleft thì không có vấn đề gì đối với sản phẩm kết hợp này.
Nếu A và B có các giấy phép copyleft khác nhau, chúng ta sẽ cần phải thận trọng: Sự kết hợp giữa A và B đã là một sản phẩm riêng biệt chưa? Và nếu vậy thì nó có thể hoặc phải được cấp phép theo giấy phép nào? Hoặc có thể tránh được xung đột bằng cách đảm bảo rằng cả hai phần A và B vẫn tách biệt với các giấy phép tương ứng của chúng và không cấu thành một sản phẩm mới hay không?
Điều này sẽ càng trở nên khó khăn hơn với các sản phẩm phái sinh — tức là khi dự án A chỉ có thể sử dụng chức năng của B bằng cách đưa trực tiếp mã từ B vào mã của A. Việc tích hợp này sẽ tạo ra một sản phẩm phái sinh mới mà các thành phần của nó không thể tách rời được nữa.
Copyleft sẽ phát huy tác dụng đối với một sản phẩm phái sinh. Ví dụ: nếu A tuân theo giấy phép copyleft như GPLv3 thì sản phẩm phái sinh mới cũng sẽ phải tuân theo giấy phép GPLv3 theo nguyên tắc tương hỗ có qua có lại. Nhưng nếu B có giấy phép khác thì sao? Đây có phải là giấy phép copyleft và nó có tương thích với GPLv3 không? Hoặc, nếu đó là một loại giấy phép khác, B cũng có thể được phát hành theo một giấy phép khác — tức là được cấp lại — hay không? Hay thậm chí giấy phép của A và B liệu có loại trừ lẫn nhau trên phương diện phân loại hay không?
Mục đích của bài học này không phải là để liệt kê các sự kết hợp có thể xảy ra và các giải pháp khả thi. Điều quan trọng ở đây là phải minh họa được mức độ phức tạp của vấn đề xuất phát từ sự kết hợp của nhiều vấn đề rất khác nhau.
Về mặt kỹ thuật, điều đầu tiên chúng ta cần phải làm rõ là cách các thành phần khác nhau của phần mềm (trong ví dụ A và B) hoạt động cùng nhau như thế nào: Chúng có thể tách rời nhau hay có những quy trình mà việc thực thi của chúng không còn có thể được phân công rõ ràng cho phần này hoặc phần kia nữa?
Từ góc độ pháp lý, có nhiều câu hỏi được đặt ra về mối quan hệ giữa giấy phép của A và B. Chúng có tương thích với nhau không hay chỉ tương thích một phần/ một chiều? Có thể chọn cấp lại giấy phép hay không?
Ở đây chúng ta chỉ có thể hiểu sơ qua về mức độ phức tạp của những câu hỏi này chứ không thể giải quyết chúng. Những quyết định như vậy đòi hỏi phải có một nền tàng kiến thức pháp lý vững chắc. Do đó, các quyết định cấp phép cho các sản phẩm mới — đặc biệt là các sản phẩm kết hợp và phái sinh — phải được đưa ra sớm, cẩn thận và luôn luôn là sau khi được tư vấn pháp lý một cách chi tiết.
Giấy phép Copyleft yếu hơn
Copyleft đã được chứng minh là cực kỳ mạnh mẽ trong nhiều thập kỷ qua, đặc biệt là ở dạng GPL trong phiên bản 2 và 3. Tuy nhiên, các yêu cầu kỹ thuật đặc biệt đã thúc đẩy FSF phản ứng bằng cách điều chỉnh các giấy phép của họ. Giấy phép Công cộng Chung GNU Affero là một ví dụ như vậy. Chúng ta sẽ thảo luận về các ví dụ khác trong các phần phụ sau.
Giấy phép Công cộng Chung Thu hẹp GNU (LGPL)
Một phương pháp thường được sử dụng trong phát triển phần mềm là sử dụng các mô-đun nhỏ cho các tác vụ tiêu chuẩn (chẳng hạn như mở hoặc lưu tệp). Các mô-đun này — hoặc tập hợp các mô-đun như vậy — được gọi là thư viện phần mềm. Chúng thường không phải là các ứng dụng thực thi độc lập mà là các quy trình lặp lại mà ứng dụng thực tế tích hợp theo yêu cầu. Quá trình tích hợp được gọi là liên kết và có thể được thực hiện với hai hình thức khác nhau.
Với thư viện tĩnh, ứng dụng thực tế (thông qua các chương trình phụ trợ và các bước trung gian) sẽ tích hợp chặt chẽ mã của các mô-đun vào tệp thực thi của ứng dụng. Mặt khác, với thư viện động, ứng dụng sẽ chỉ tích hợp một mô-đun khi được yêu cầu trong thời gian chạy và tải mô-đun đó vào bộ nhớ làm việc.
Điều này đặt ra một câu hỏi liên quan đến copyleft và vấn đề cấp phép: Ý nghĩa cấp phép của việc liên kết là gì? Ví dụ: hình thức tiếp quản mã này có yêu cầu một ứng dụng sử dụng thư viện theo GPL để chấp nhận chính GPL không? Và điều này có áp dụng cho cả liên kết tĩnh và liên kết động hay không?
Quá trình liên kết rất phổ biến trong việc phát triển phần mềm, và các vấn đề liên quan đến copyleft tương hỗ rộng đến nỗi FSF đã sớm xem xét giải pháp cấp phép cho việc liên kết thông qua Giấy phép Công cộng Chung Thu hẹp GNU (GNU Lesser General Public License - LGPL). LGPL được cập nhật cùng lúc với mỗi phiên bản mới của GPL. Tên của giấy phép trong phiên bản 1 là Giấy phép Công cộng Chung Thư viện GNU; chính bản thân cái tên này đã cho biết lý do ban đầu khiến người ta phải tạo ra giấy phép này. Trong phiên bản 2 và 3, “Thư viện” (Library) đã được thay thế bằng “Thu hẹp” (Lesser) để chỉ ra điều gì đang thực sự bị đe dọa, cụ thể là sự suy yếu về tính thực dụng của nguyên tắc copyleft.
Như vậy, một thư viện được cấp phép theo LGPL có thể được phần mềm sử dụng mà bản thân phần mềm này không tự động tuân theo copyleft. Đặc biệt là các dự án phần mềm tuân theo giấy phép linh hoạt (được đề cập tới trong bài học khác) sẽ được hưởng lợi từ sự thỏa hiệp này vì nó tạo ra một vòng bảo vệ pháp lý cho sự kết hợp giữa các phương pháp tiếp cận về bản chất là không tương thích theo luật cấp phép.
Mọi thay đổi đối với phần mềm được cấp phép theo LGPL vẫn phải tuân theo copyleft, tức là chúng cũng phải tuân theo LGPL.
Tuy nhiên, thư viện được cấp phép LGPL phải có thể thay thế được để cho phép người dùng phần mềm thay thế thư viện bằng một phiên bản sửa đổi. Thông tin về các điều kiện thích hợp để thực hiện việc thay thế đó cũng phải được cung cấp.
Các giấy phép Copyleft khác
Các dự án và tổ chức FOSS khác cũng luôn tìm kiếm một khuôn khổ pháp lý tốt nhất cho nhu cầu của họ và từ đó phát triển giấy phép của riêng mình. Một ví dụ chính là Tổ chức Mozilla được thành lập vào năm 1998 và ngày nay được biết đến nhiều nhất với hai dự án mà nó hỗ trợ: trình duyệt internet Firefox và ứng dụng email Thunderbird.
Phiên bản 1 của Giấy phép Công cộng Mozilla (MPL) được phát hành vào năm 1998 và phiên bản 2.0 hiện tại (tính đến năm 2024) là vào năm 2012.
Giống như LGPL, MPL thường được coi là một giấy phép “copyleft yếu”. Trên thực tế, mục đích của nó là tìm cách để đạt được sự cân bằng giữa các yêu cầu nghiêm ngặt của copyleft và khả năng tích hợp với các sản phẩm thương mại. Nó có thể đạt được điều này và một số tiêu chí khác thông qua một nguyên tắc được gọi là copyleft cấp độ tệp: Nếu bạn thực hiện thay đổi đối với một tệp thuộc về phần mềm tuân theo MPL, bạn có thể tích hợp tệp này vào phần mềm độc quyền, miễn là chính tệp được sửa đổi đó vẫn thuộc MPL và do đó có thể truy cập được.
Một ví dụ khác về giấy phép copyleft yếu là Giấy phép Công cộng Eclipse (EPL) từ Tổ chức Eclipse. Phiên bản 2.0 hiện tại từ năm 2017 rất giống với MPL và thường được coi là giấy phép copyleft “thân thiện với doanh nghiệp” nhất. Tuy nhiên, các giấy phép copyleft khác nhau — và có những giấy phép khác ngoài những giấy phép được đề cập ở đây — thường phát sinh do những phát triển mang tính thời thế hơn là những khác biệt rõ ràng về mặt pháp lý.
Bài tập Hướng dẫn
-
GPL là cụm viết tắt của khái niệm nào?
-
Tại sao giấy phép copyleft còn được gọi là giấy phép tương hỗ?
-
Giấy phép copyleft FSF nào phù hợp với thư viện phần mềm?
-
Thuật ngữ nào thay thế thuật ngữ “phân phối” (distribution) trong GPLv3 và tại sao?
-
Giấy phép copyleft nào sau đây được cấp bởi Tổ chức Phần mềm Tự do?
GPL phiên bản 3
AGPL phiên bản 1
LGPL phiên bản 2
MPL 2.0
Phiên bản EPL 2
Bài tập Khám phá
-
Giấy phép nào sau đây là giấy phép copyleft?
GPL phiên bản 2
Giấy phép BSD 3 điều khoản
LGPL phiên bản 3
CC BY-ND
EPL phiên bản 2
-
Thông thường người ta có thể tạo ra một sản phẩm phái sinh kết hợp các phần của hai dự án phần mềm theo các giấy phép copyleft mạnh khác nhau không? Hãy đưa ra lý do.
-
Giấy phép nào sau đây có copyleft mạnh và giấy phép nào có copyleft yếu?
Giấy phép phân phối và phát triển chung (CDDL) 1.1
GNU AGPLv3
Giấy phép tương hỗ của Microsoft (MS-RL)
Giấy phép Công cộng IBM (IPL) 1.0
Giấy phép Sleepycat
-
Hãy mô tả một số vấn đề tương thích có thể phát sinh khi kết hợp một phần mềm tuân theo giấy phép copyleft yếu với một phần mềm tuân theo giấy phép không phải copyleft.
Tóm tắt
Bài học này đề cập đến các đặc điểm của giấy phép phần mềm tuân theo nguyên tắc copyleft. Được phát triển vào những năm 1980 bởi Tổ chức Phần mềm Tự do, Giấy phép Công cộng Chung GNU (GPL) hiện là giấy phép phổ biến nhất với tính bản quyền mạnh mẽ. Mặc dù có nhiều bản sửa đổi trước phiên bản 3 hiện tại, các yêu cầu cơ bản của nó hầu như không thay đổi: Các quyền tự do được cấp bởi giấy phép để sử dụng, tái phân phối và sửa đổi phần mềm mà không bị hạn chế phải luôn được duy trì. Điều này có nghĩa là phần mềm đã được sửa đổi chỉ có thể được phân phối với cùng các điều kiện (tức là cùng một giấy phép).
Những cải tiến kỹ thuật cũng như mong muốn có được sự thoải mái về mặt pháp lý khi hợp tác với các dự án khác đã thúc đẩy FSF phát triển các giấy phép bổ sung hoặc thay thế. Ví dụ: Giấy phép Công cộng Chung Thu hẹp (LGPL) của GNU có tính đến liên kết tĩnh hoặc động của các thư viện phần mềm thường được sử dụng trong việc phát triển phần mềm. Giấy phép Công cộng Chung GNU Affero (AGPL) đáp ứng xu hướng kỹ thuật hướng tới việc sử dụng phần mềm dưới dạng dịch vụ qua mạng (đặc biệt là internet) — tức là không phải trong các cài đặt cục bộ.
Ngoài FSF, các dự án khác như Tổ chức Mozilla và Tổ chức Eclipse cũng đã phát triển các giấy phép copyleft. Những giấy phép này cũng tìm kiếm sự thỏa hiệp giữa việc đảm bảo các quyền tự do được cấp bởi giấy phép và một mối quan hệ đơn giản hơn với các phần mềm tuân theo các giấy phép khác thông qua một giấy phép copyleft yếu hơn.
Về nguyên tắc, khả năng tương thích của giấy phép là một vấn đề quan trọng đối với giấy phép copyleft bởi nguyên tắc phát triển phần mềm hợp tác và tự do phải được dung hòa với các điều kiện pháp lý được xác định bởi giấy phép tương ứng. Trong bất kỳ hình thức kết hợp phần mềm nào theo các giấy phép khác nhau, các điều kiện pháp lý cũng phải được xem xét kỹ lưỡng trong từng trường hợp cụ thể.
Đáp án Bài tập Hướng dẫn
-
GPL là cụm viết tắt của khái niệm nào?
General Public License (Giấy phép Cộng cộng Chung).
-
Tại sao giấy phép copyleft còn được gọi là giấy phép tương hỗ?
Nguyên tắc copyleft yêu cầu các quyền tự do được cấp bởi một giấy phép cũng phải được cấp cho người khác mà không bị hạn chế. Ví dụ: nếu bạn thực hiện một thay đổi đối với phần mềm tuân theo GPL, bạn có nghĩa vụ cung cấp những thay đổi này cho những người khác theo cùng điều kiện phù hợp với nguyên tắc tương hỗ có qua có lại.
-
Giấy phép copyleft FSF nào phù hợp với thư viện phần mềm?
Giấy phép Công cộng Chung Thu hẹp GNU (GNU LGPL).
-
Thuật ngữ nào thay thế thuật ngữ “phân phối” (distribution) trong GPLv3 và tại sao?
Các thuật ngữ “chuyển tải” (convey) và “truyền bá” (propagate) thay thế cho thuật ngữ “phân phối” (distribute). Cơ sở của điều này là thuật ngữ “phân phối” được gắn chặt chẽ trong luật bản quyền quốc tế. Để tránh xung đột hoặc hiểu lầm, GPL trong phiên bản 3 không sử dụng thuật ngữ này.
-
Giấy phép copyleft nào sau đây được cấp bởi Tổ chức Phần mềm Tự do?
GPL phiên bản 3
X
AGPL phiên bản 1
LGPL phiên bản 2
X
MPL 2.0
Phiên bản EPL 2
Đáp án Bài tập Mở rộng
-
Giấy phép nào sau đây là giấy phép copyleft?
GPL phiên bản 2
X
Giấy phép BSD 3 điều khoản
LGPL phiên bản 3
X
CC BY-ND
EPL phiên bản 2
X
-
Thông thường người ta có thể tạo ra một sản phẩm phái sinh kết hợp các phần của hai dự án phần mềm theo các giấy phép copyleft mạnh khác nhau không? Hãy đưa ra lý do.
Không. Các giấy phép có copyleft mạnh thường yêu cầu các phiên bản được sửa đổi phải tuân theo cùng một giấy phép. Điều này cũng loại trừ việc cấp lại giấy phép. Do đó, sự kết hợp của các giấy phép khi cả hai đều tuân theo những nguyên tắc này tạo nên một mâu thuẫn không thể giải quyết được.
-
Giấy phép nào sau đây có copyleft mạnh và giấy phép nào có copyleft yếu?
Giấy phép phân phối và phát triển chung (CDDL) 1.1
Mạnh
GNU AGPLv3
Yếu
Giấy phép tương hỗ của Microsoft (MS-RL)
Yếu
Giấy phép Công cộng IBM (IPL) 1.0
Yếu
Giấy phép Sleepycat
Mạnh
-
Hãy mô tả một số vấn đề tương thích có thể phát sinh khi kết hợp một phần mềm tuân theo giấy phép copyleft yếu với một phần mềm tuân theo giấy phép không phải copyleft.
Trong khi một giấy phép copyleft mạnh yêu cầu phần mềm đã sửa đổi phải được phân phối theo cùng một giấy phép, đối với các giấy phép copyleft yếu thì các điều kiện lại khá “dễ chịu”. Tuy nhiên, bất kỳ sự kết hợp nào với các giấy phép khác đều đặt ra những câu hỏi cơ bản về tính tương thích. Các khía cạnh quan trọng cần được xem xét khi trả lời những câu hỏi này: Các phần gốc của hai dự án phần mềm có tách biệt rõ ràng trong sản phẩm mới hay không và nếu cần, liệu chúng có thể vẫn được cấp phép theo các cách khác nhau hay không? Sự kết nối giữa hai dự án phần mềm gốc thực sự diễn ra ở cấp độ nào? Mã nguồn có được đưa vào trực tiếp hay nó “chỉ” được liên kết động với phần mềm (thư viện) khác? Một trong hai giấy phép có thường cho phép cấp phép lại không? Tất cả các câu hỏi như vậy chỉ có thể được trả lời sau khi phân tích chính xác các giấy phép tương ứng và với chuyên môn pháp lý của một chuyên gia.