Giới thiệu
Khi tạo repo trong GitHub, bạn sẽ thấy cài đặt chọn license
cho dự án của mình. Mặc dù việc chọn license không bắt buộc, nhưng nó có thể quan trọng để xác định cách mà người khác có thể sử dụng mã nguồn của bạn.
Có ai thắc mắc ý nghĩa của từng license
này bao giờ chưa?
License là một tài liệu pháp lý xác định quyền của người dùng đối với mã nguồn của dự án. Có nhiều loại license khác nhau, mỗi loại đều có các quyền và hạn chế khác nhau.
Dưới đây là một số kiến thức cần biết về các license khi tạo repo trong GitHub tính đến thời điểm hiện tại (Jan, 2024).
Github License
Mỗi loại điều có các điều khoản và điều kiện riêng, nhưng chúng thường được chia thành hai loại chính.
- Copyleft license yêu cầu tất cả các bản sao của mã nguồn phải được phân phối dưới cùng một license. Điều này có nghĩa là phần mềm được cấp phép theo GPL luôn là phần mềm nguồn mở và miễn phí.
- Permissive license cho phép người dùng sử dụng và phân phối mã nguồn theo bất kỳ cách nào họ muốn, miễn là họ ghi nhận tác giả.
Khi chọn license, bạn cần cân nhắc các yếu tố sau:
- Bạn muốn người khác có thể sử dụng mã nguồn của mình như thế nào? Họ có thể sử dụng nó trong các dự án thương mại không? Họ có thể sửa đổi và phân phối lại mã nguồn của bạn không?
- Bạn muốn bảo vệ tác quyền (quyền sở hữu trí tuệ) của mình như thế nào? Một số license có thể giúp bạn bảo vệ tác quyền của mình tốt hơn những license khác.
Apache License 2.0
Loại: Permissive
Là một license miễn phí, cho phép người khác sử dụng, sao chép, sửa đổi, phân phối và bán mã nguồn của bạn mà không cần sự cho phép của bạn. Tuy nhiên, license này yêu cầu bạn phải ghi nhận tác giả của mã nguồn.
Các dự án thường sử dụng: Các dự án phần mềm Apache, Android, OpenSSL, ...
GNU General Public License v3.0
Loại: Copyleft
Là một license miễn phí, cho phép người khác sử dụng, sao chép, sửa đổi, phân phối và bán mã nguồn của bạn. Tuy nhiên, license này yêu cầu bất kỳ phần mềm nào được xây dựng dựa trên mã nguồn của bạn cũng phải được cấp phép theo GPLv3.
Các dự án thường sử dụng: Linux, các tiện ích GNU, LibreOffice, ...
MIT License
Loại: Permissive
Là một license miễn phí, cho phép người khác sử dụng, sao chép, sửa đổi, phân phối và bán mã nguồn của bạn mà không cần sự cho phép của bạn. Điều kiện chủ yếu là giữ thông báo bản quyền và không đảm bảo bất kỳ trách nhiệm nào.
Các dự án thường sử dụng: jQuery, Ruby on Rails, Node.js, ...
BSD 2-Clause "Simplified" License
Loại: Permissive
Là một license miễn phí, cho phép người khác sử dụng, sao chép, sửa đổi, phân phối và bán mã nguồn của bạn mà không cần sự cho phép của bạn. License này yêu cầu bạn phải ghi nhận tác giả của mã nguồn, nhưng không yêu cầu bạn phân phối mã nguồn của bạn theo cùng một license.
Các dự án thường sử dụng: Hệ điều hành BSD, OpenBSD, SQLite, ...
BSD 3-Clause "New" or "Revised" License
Loại: Permissive
Là một license miễn phí, cho phép người khác sử dụng, sao chép, sửa đổi, phân phối và bán mã nguồn của bạn mà không cần sự cho phép của bạn. Mở rộng từ BSD 2-Clause, license này yêu cầu bạn phải ghi nhận tác giả của mã nguồn và phân phối mã nguồn của bạn theo cùng một license, cũng như yêu cầu không sử dụng tên của các tác giả hoặc tổ chức để quảng bá sản phẩm.
Các dự án thường sử dụng: Hệ điều hành BSD, Lua, Nginx, ...
Boost Software License 1.0
Loại: Permissive
Là một license miễn phí, cho phép người khác sử dụng, sao chép, sửa đổi, phân phối và bán mã nguồn của bạn mà không cần sự cho phép của bạn. License này yêu cầu bạn phải ghi nhận tác giả của mã nguồn, nhưng không yêu cầu bạn phân phối mã nguồn của bạn theo cùng một license.
Permissive tương tự như MIT, nhưng có điều kiện bổ sung để tránh sử dụng tên, biểu tượng, hoặc logo của các tác giả hoặc tổ chức phát triển để quảng bá sản phẩm.
Các dự án thường sử dụng: Thư viện Boost, nhiều dự án C++
Creative Commons Zero v1.0 Universal
Loại: Giấy phép công cộng
Là một license miễn phí, cho phép người khác sử dụng, sao chép, sửa đổi, phân phối và bán mã nguồn của bạn mà không cần sự cho phép của bạn.
Tại sao loại của license này không thuộc 2 định nghĩa bên trên? Nó thuộc loại giấy phép công cộng nghĩa là từ bỏ tất cả quyền tác giả và các quyền liên quan, tối đa hóa khả năng tái sử dụng mà không có hạn chế.
Các dự án thường sử dụng: Các tác phẩm sáng tạo, dữ liệu mở, ấn phẩm khoa học
Eclipse Public License 2.0
Loại: Copyleft
Là một license miễn phí, cho phép người khác sử dụng, sao chép, sửa đổi, phân phối và bán mã nguồn của bạn mà không cần sự cho phép của bạn. License này yêu cầu bạn phải ghi nhận tác giả của mã nguồn, nhưng không yêu cầu bạn phân phối mã nguồn của bạn theo cùng một license.
Các dự án thường sử dụng: IDE Eclipse, các dự án trong Quỹ Eclipse
GNU Affero General Public License v3.0
Loại: Copyleft
Là một license copyleft, cho phép người khác sử dụng, sao chép, sửa đổi, phân phối và bán mã nguồn của bạn mà không cần sự cho phép của bạn, nhưng họ cũng phải phân phối mã nguồn của họ theo cùng một license.
Điều này có nghĩa là phần mềm được cấp phép theo AGPL luôn là phần mềm nguồn mở và miễn phí, ngay cả khi nó được phân phối dưới dạng ứng dụng SaaS.
GNU General Public License v2.0
Loại: Copyleft
Là một license copyleft, cho phép người khác sử dụng, sao chép, sửa đổi, phân phối và bán mã nguồn của bạn mà không cần sự cho phép của bạn, nhưng họ cũng phải phân phối mã nguồn của họ theo cùng một license.
Điều này có nghĩa là phần mềm được cấp phép theo GPL luôn là phần mềm nguồn mở và miễn phí.
GNU Lesser General Public License v2.1
Loại: Copyleft
Là một license miễn phí, cho phép người khác sử dụng, sao chép, sửa đổi, phân phối và bán mã nguồn của bạn, nhưng chỉ trong các ứng dụng phần mềm miễn phí.
Có thể sửa đổi và phân phối mã, ngay cả trong phần mềm độc quyền, miễn là mã đã sửa đổi được tách biệt rõ ràng khỏi các thành phần độc quyền.
Mozilla Public License 2.0
Loại: Permissive
Giấy phép MPL 2.0 cho phép người dùng sử dụng, sửa đổi và phân phối mã, cả cho mục đích thương mại và phi thương mại.
Giấy phép này tương thích với các giấy phép nguồn mở khác, bao gồm GPL và Apache.
Các dự án thường sử dụng: Giấy phép này thường được sử dụng cho phần mềm dựa trên web và liên quan đến trình duyệt.
The Unlicense
Mã được cấp phép theo The Unlicense có thể được sử dụng trong bất kỳ dự án phần mềm nào, cho bất kỳ mục đích nào. Mã cũng có thể được sửa đổi và phân phối mà không cần có sự cho phép của tác giả.
Giấy phép này cho phép sử dụng, sửa đổi và phân phối mã không hạn chế, ngay cả cho mục đích thương mại.
Thêm license vào dự án của bạn
Sau khi bạn đã chọn license, bạn có thể thêm license vào repo của mình bằng cách sử dụng tệp LICENSE.md
. Tệp này nên chứa tên của license, phiên bản của license và một liên kết đến văn bản đầy đủ của license.
Ví dụ: nếu bạn chọn sử dụng MIT License
, bạn có thể thêm tệp LICENSE.md
sau vào repo của mình:
# MIT License
Copyright (c) bunhere.com Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Kết
Bằng cách chọn license phù hợp cho repo của mình, bạn có thể giúp đảm bảo rằng mã nguồn của bạn được sử dụng theo cách mà bạn muốn.
Tìm hiểu thêm tại đây licensing-a-repository
Xem thêm nội dung khác: bunhere.com
I am always looking for feedback on my writing, so please let me know what you think. ❤️