Nếu ai đó cũng bối rối về giấy phép phần mềm như tôi đã từng, thì đây là cách tôi nhìn nhận chúng bây giờ. Giấy phép phần mềm kiểm soát những gì mọi người có thể làm với mã của bạn. Giấy phép MIT cho phép mọi người làm bất cứ điều gì. Giả sử bạn xây dựng một thư viện phân tích JSON với giấy phép MIT. Một công ty khởi nghiệp có thể lấy mã của bạn, sửa đổi nó và bán nó như một phần của dịch vụ API trả phí mà không cần phải trả lại cho bạn bất cứ điều gì. Họ chỉ cần giữ thông báo bản quyền của bạn trong phần chú thích mã. React sử dụng MIT, vì vậy Facebook có thể đã biến nó thành độc quyền, nhưng họ đã chọn giữ nó mở. Đây là giấy phép "làm bất cứ điều gì bạn muốn". GPL buộc phải chia sẻ. Hãy tưởng tượng bạn tạo ra một framework web dưới GPL. Nếu ai đó sửa đổi framework của bạn để thêm các tính năng mới, họ phải phát hành những sửa đổi đó cũng dưới GPL. Họ không thể bán một phiên bản độc quyền. WordPress sử dụng GPL, vì vậy tất cả các chủ đề và plugin của WordPress cũng phải là GPL. Nếu bạn xây dựng một CMS thương mại dựa trên WordPress, toàn bộ CMS của bạn trở thành GPL. Điều này giữ mọi thứ là mã nguồn mở. Apache 2.0 xử lý bằng sáng chế tốt hơn. Bạn viết một thư viện học máy và ai đó đóng góp một thuật toán. Sau đó, họ cố gắng kiện người dùng vì vi phạm bằng sáng chế trên thuật toán đó. Với giấy phép Apache, họ tự động mất quyền sử dụng thư viện của bạn. Đây là sự bảo vệ chống lại những kẻ lừa đảo bằng sáng chế. Kubernetes sử dụng Apache 2.0 vì các công ty đám mây lo lắng về các vấn đề bằng sáng chế. BSD về cơ bản là MIT với những từ khác. Bạn tạo ra một thư viện mạng dưới BSD. Cùng quy tắc như MIT, mọi người có thể làm bất cứ điều gì họ muốn. FreeBSD sử dụng điều này, đó là lý do tại sao Apple có thể lấy mã BSD và đưa vào macOS mà không phát hành mã nguồn macOS. Hầu hết các nhà phát triển hiện nay chỉ sử dụng MIT vì nó rõ ràng hơn. LGPL là GPL cho thư viện. Bạn xây dựng một thư viện tạo PDF dưới LGPL. Các công ty có thể sử dụng thư viện của bạn trong phần mềm độc quyền của họ mà không cần làm cho toàn bộ ứng dụng của họ trở thành LGPL. Nhưng nếu họ sửa đổi mã thư viện của bạn, những thay đổi đó phải là LGPL. VLC media player sử dụng LGPL để các ứng dụng khác có thể bao gồm phát video mà không trở thành GPL. Độc quyền có nghĩa là bạn kiểm soát mọi thứ. Bạn xây dựng một động cơ cơ sở dữ liệu và giữ nó độc quyền. Các công ty trả phí giấy phép cho bạn để sử dụng nó. Họ không thể xem mã nguồn, không thể sửa đổi nó, không thể phân phối lại nó. Oracle Database hoạt động theo cách này. Bạn kiếm tiền từ việc cấp phép nhưng giới hạn ai có thể sử dụng nó. Cấp phép kép cung cấp tùy chọn. Bạn phát hành một cơ sở dữ liệu dưới cả giấy phép GPL và giấy phép thương mại. Các dự án mã nguồn mở sử dụng phiên bản GPL miễn phí. Các công ty không muốn các hạn chế của GPL sẽ trả tiền cho giấy phép thương mại. MySQL làm điều này. Các công ty khởi nghiệp sử dụng MySQL miễn phí, các công ty lớn thường mua giấy phép thương mại. Miền công cộng từ bỏ tất cả quyền. Bạn tạo ra một hàm băm và đưa nó vào miền công cộng. Bất kỳ ai cũng có thể làm bất cứ điều gì với nó, không có hạn chế, không cần ghi nhận. SQLite làm điều này. Các cơ quan chính phủ yêu thích điều này vì không có rủi ro pháp lý. Xây dựng một thư viện mà bạn muốn mọi người sử dụng? Chọn MIT. Muốn đảm bảo rằng những cải tiến quay trở lại cộng đồng? Sử dụng GPL. Lo lắng về bằng sáng chế trong phần mềm doanh nghiệp? Chọn Apache. Xây dựng một doanh nghiệp xung quanh mã của bạn? Giữ độc quyền. Muốn tối đa hóa tự do cho người dùng? Thử miền công cộng. Chìa khóa là phù hợp mục tiêu của bạn với các hạn chế giấy phép. Đừng chỉ sao chép những gì các dự án khác làm mà không hiểu tại sao họ chọn giấy phép đó.
22,31K