Hướng dẫn are python libraries free for commercial use? - thư viện python có miễn phí cho mục đích thương mại không?

GPL cũng không phải là vấn đề nếu bạn cung cấp mã nguồn cho người mua của bạn (và chỉ cho họ). Nguồn mở không cấm bán.

Vấn đề duy nhất là bạn không thể nói với người mua của mình không chia sẻ mã. Họ đã mua nó - họ có thể tự do vượt qua nó

Hãy tưởng tượng rằng bạn đã cài đặt một gói Python ngẫu nhiên từ PYPI. Có một cơ hội tốt 13,5% rằng gói không có thông tin cấp phép. Xem xét nó không phải là hiếm khi có hàng trăm phụ thuộc và phụ thuộc phụ trong một ứng dụng Python điển hình, có một cơ hội rất tốt để sử dụng mã không có giấy phép. Tùy thuộc vào bối cảnh, hậu quả của việc sử dụng phần mềm không có giấy phép có thể là bất cứ nơi nào từ không đáng kể đến thảm họa. OK, đó là một phạm vi hoang dã, vì vậy bài đăng này sẽ đào sâu hơn vào vấn đề này.

Pypi là gì?

PYPI là kho lưu trữ trung tâm được sử dụng phổ biến nhất cho các gói Python, được tạo và duy trì bởi Quỹ phần mềm Python. Nó thường được truy cập thông qua các công cụ quản lý gói, chẳng hạn như PIP, để tải xuống và cài đặt các thư viện và ứng dụng Python. Điều này tương tự như các kho lưu trữ gói cho các ngôn ngữ khác, chẳng hạn như NPM cho JavaScript, Rubygems.org cho Ruby và Crates.io cho Rust.

Tiểu sử

SNYK phân tích sự phụ thuộc của các dự án phần mềm và tìm thấy các vấn đề như lỗ hổng bảo mật và giấy phép xấu. Cuối cùng, gần đây họ đã thuê tôi để lấy tất cả các dữ liệu meta từ PYPI về các gói và các phiên bản được phát hành của họ, bao gồm thông tin cấp phép. Với dữ liệu này trong tay, tôi đã kiểm tra tình hình cấp phép cho tất cả các gói Python trên PYPI.

Dưới đây là một số hiểu biết chính từ phân tích này, tiếp theo là các đề xuất dựa trên những hiểu biết này và mô tả về các phương pháp được sử dụng để có được chúng.

Làm thế nào là cấp phép trong hệ sinh thái Python?

Đầu tiên, ở đây, một lời từ chối nhanh chóng: Tôi không phải là luật sư. Tôi là một kỹ sư phần mềm có kinh nghiệm với một số hiểu biết về cấp phép phần mềm, nhưng tôi không phải là chuyên gia trong lĩnh vực này. Không có điều nào sau đây được coi là tư vấn pháp lý, vì vậy bạn nên tham khảo ý kiến ​​luật sư nếu bạn cần!

Các loại giấy phép

Nói chung, hầu hết tất cả các giấy phép phần mềm nguồn mở đều có thể được chia thành một vài loại rộng:

  • Giấy phép của Copyleft là một loại giấy phép tương đối hạn chế, bao gồm giấy phép GPL nổi tiếng, nhiều biến thể và giấy phép tương tự. Chúng cho phép phần mềm được sử dụng cho thực tế bất kỳ mục đích nào, nhưng yêu cầu bất kỳ sửa đổi nào bạn thực hiện cũng được công khai. Hơn nữa, một số giấy phép copyleft mạnh mẽ hơn của người Viking yêu cầu mã đó bằng cách sử dụng phần mềm được cấp phép đó cũng được công khai, trong một số trường hợp nhất định.“Copyleft” licenses are a relatively restrictive license type, including the well-known GPL license, its many variations and similar licenses. These allow software to be used for practically any purpose, but require that any modifications you make are also made publicly available. Further, some of the “stronger” copyleft licenses require that code using such licensed software also be made publicly available, in certain circumstances.
  • Mặt khác, các giấy phép cho phép của người Viking, cho phép một người sửa đổi phần mềm mà không phải công khai các sửa đổi đó. Chúng cũng thường đơn giản hơn nhiều và bao gồm ít hạn chế hơn.“Permissive” licenses, on the other hand, allow one to modify the software without having to make those modifications public. They are also generally much simpler and include fewer restrictions.
  • Ở phía xa của quang phổ là các giấy phép của miền công cộng, thường không có giới hạn nào khi sử dụng.“Public Domain” licenses which generally place no restrictions at all on use.

Để thảo luận bổ sung về Copyleft so với cấp phép cho phép, hãy xem một bài viết trước về chủ đề trên blog của chúng tôi.

Trong những năm gần đây, một số giấy phép Copyleft yếu của người Viking đã xuất hiện. Chúng chủ yếu dành cho các thư viện phần mềm, cho phép sử dụng chúng với ít hoặc không có hạn chế nào đối với phần mềm sử dụng. Để biết thêm thông tin về sự khác biệt giữa Copyleft Copyleft, và người mạnh mẽ, hãy xem phần Bài viết của Wikipedia về chủ đề này.

Cũng có thể, mặc dù không được khuyến nghị, để không chỉ định bất kỳ giấy phép nào. Điều này thường là do giám sát hoặc thiếu hiểu biết, nhưng trong một số trường hợp hiếm hoi, nó được thực hiện một cách có chủ ý. Không có giấy phép, việc sử dụng phần mềm chỉ đơn giản là tuân theo luật bản quyền (của mỗi quốc gia!), Và cả các loại luật khác như luật bằng sáng chế.

Phân tích các loại cấp phép

Hãy cùng xem các loại giấy phép được sử dụng trên PYPI:

Hướng dẫn are python libraries free for commercial use? - thư viện python có miễn phí cho mục đích thương mại không?

Từ dữ liệu này, chúng ta có thể thấy như sau:

  • Phần lớn các gói trên PYPI, 64%, sử dụng giấy phép cho phép của người dùng, chẳng hạn như giấy phép BSD của MIT, Apache 2.0 và 2 hoặc 3 hoặc 3 điều.64%, use a “permissive” license, such as the MIT, Apache 2.0 and 2- or 3-Clause BSD licenses.
  • 18,5% Sử dụng giấy phép Copyleft mạnh mẽ của người Viking, chẳng hạn như giấy phép GPL và AGPL. use a “strong copyleft” license, such as the GPL and AGPL licenses.
  • 3% Sử dụng giấy phép Copyleft yếu, chẳng hạn như giấy phép LGPL và MPL. use a “weak copyleft” license, such as the LGPL and MPL licenses.
  • Chỉ có 1% sử dụng giấy phép phạm vi công cộng của người Viking, chẳng hạn như CC0, WTFPL và Giấy phép Unlicense.1% use a “public domain” license, such as the CC0, WTFPL and Unlicense licenses.
  • 13,5% don lồng bao gồm bất kỳ giấy phép.

Điều này không có gì đáng ngạc nhiên, vì nó tương tự như các xu hướng chung được thấy trên Github và các kho lưu trữ gói các ngôn ngữ khác.

Giấy phép phổ biến nhất cho các gói Python

Bốn giấy phép thống trị cảnh quan trên PYPI, cụ thể là MIT, mệnh đề BSD-2, GPL-3.0 và Apache-2.0.

Hướng dẫn are python libraries free for commercial use? - thư viện python có miễn phí cho mục đích thương mại không?

Nhiều giấy phép khác cũng được sử dụng phổ biến (được sử dụng bởi ít nhất 100 gói). Trong số này, hai là duy nhất cho hệ sinh thái Python: Giấy phép nền tảng phần mềm Python (PSF) và Giấy phép công cộng Zope (ZPL).

Hướng dẫn are python libraries free for commercial use? - thư viện python có miễn phí cho mục đích thương mại không?

Những gì bạn nên làm bây giờ!

Với việc cấp phép các gói Python trên PYPI, tôi đánh giá cao những điều sau đây:

  • Kiểm tra xem bạn trực tiếp hoặc gián tiếp sử dụng phần mềm sử dụng giấy phép của Copyleft và thoải mái với ý nghĩa của nó đối với mã của bạn.
    1. Nếu bạn viết mã độc quyền (nguồn không mở), thì đây có thể là một trách nhiệm pháp lý nghiêm trọng, đặc biệt là với các giấy phép copyleft mạnh mẽ được sử dụng bởi hơn 18% gói PYPI.
    2. Nếu bạn viết phần mềm nguồn mở, những điều này có thể có nghĩa là bạn sẽ bị buộc phải cấp phép mã của mình theo các điều khoản cấp phép tương tự.
  • Kiểm tra xem có bất kỳ sự phụ thuộc nào của bạn đang thiếu giấy phép.
    1. Nếu bạn cần sửa đổi sự phụ thuộc như vậy, hoặc có thể cần trong tương lai, bạn có thể không được phép theo luật bản quyền.
    2. Các phiên bản trong tương lai của các phụ thuộc như vậy có thể sẽ giới thiệu giấy phép và bạn không thể chắc chắn loại giấy phép sẽ là gì.
  • Thiết lập một công cụ tự động để định kỳ / liên tục kiểm tra việc cấp phép cho các phụ thuộc của bạn.
    1. Trong một dự án, các phụ thuộc trọn đời thường được thêm và thay đổi.
    2. Sự phụ thuộc có thể thay đổi giấy phép giữa các phiên bản, vì vậy nâng cấp phiên bản có thể dẫn đến thay đổi cấp phép.

Đọc thêm

Chúng tôi chỉ cần trầy xước bề mặt; Cấp phép có thể quan trọng với bạn hơn bạn nhận ra và bạn nên đọc thêm! Cân nhắc đọc các chủ đề sau:

  • Nhiều cấp phép (~ 500 gói trên PYPI được nhiều cấp phép)
  • Khả năng tương thích giấy phép
  • Phần mềm không có giấy phép
  • Xem xét và giải thích các giấy phép cho phép phổ biến
  • Mặt pháp lý của nguồn mở, và đặc biệt là phần về việc chọn giấy phép cho phần mềm của bạn.

Phương pháp

Dưới đây là một số chi tiết về cách thu thập và phân tích dữ liệu được tiến hành.

Đầu tiên, tôi đã thu thập siêu dữ liệu của tất cả các gói và tất cả các phiên bản được phát hành của chúng trên PYPI. Điều này đã được thực hiện trong nhiều ngày vào đầu tháng 8 năm 2018. Vào thời điểm đó, có gần 150.000 gói trên PYPI.

Sau đó, tôi đã trích xuất thông tin giấy phép cho từng phiên bản của mỗi gói, từ cả hai trường cấp phép và các trường phân loại trên mạng. Sau đó, tôi đã tổng hợp những thứ đó vào một cấu trúc dữ liệu duy nhất, với các phiên bản được sắp xếp theo cách giải thích kiểu phiên bản ngữ nghĩa.

Tiếp theo tôi làm sạch và bình thường hóa dữ liệu cấp phép. Tôi đã xây dựng trên một phiên bản của một tiêu chuẩn giấy phép SPDX được sử dụng tại SNYK. Tôi đã cải thiện một cách chính xác hóa để nhận ra chính xác một phần lớn của giấy phép, theo sau là tạo ra một ánh xạ lớn các trường hợp đặc biệt để xử lý đuôi dài của các trường hợp đặc biệt.

Sau này, tôi bắt đầu phân tích 18% các gói mà không có giấy phép. Tôi chưa xem các tập tin trong bản phát hành. Tôi đã chọn ngẫu nhiên 50 gói không có giấy phép, tải xuống các bản phát hành mới nhất của họ và tìm kiếm thông tin cấp phép. Sau khi thu thập thông tin này, tôi đã phân loại các gói này thành năm loại như sau:

Hướng dẫn are python libraries free for commercial use? - thư viện python có miễn phí cho mục đích thương mại không?

Chỉ những người thuộc danh mục được cấp phép của người Viking thực sự có giấy phép. Trong số những người theo các hạng mục đào tạo của người Viking, các loại hình vứt bỏ và người giữ chỗ, phần lớn đã bao gồm một số mã và có thể được sử dụng như một sự phụ thuộc, cho dù có mục đích hay do nhầm lẫn (ví dụ: một lỗi đánh máy). Do đó, tôi thấy hợp lý khi xem xét các gói không có giấy phép thích hợp này. Ngoại suy từ mẫu này, tôi đã đưa ra ước tính rằng ~ 18% × 72% = ~ 13,5% các gói PYPI không được cấp phép.

Điều đáng chú ý là tôi đã thực hiện phân tích tương tự cho các gói được cấp phép trên PYPI; Có khả năng là có rất nhiều gói đào tạo của người Viking, người khác, và các gói giữ chỗ của người khác đã đề cập đến một giấy phép. Do đó, có lập trường bảo thủ mà chỉ ~ 18% × 28% = ~ 5% các gói thực tế trên mạng trên PYPI không được cấp phép có thể không chính xác nghiêm trọng. Tôi không có thời gian để thực hiện một phân tích như vậy, thật không may, vì vậy tôi đã bị mắc kẹt với phân tích được mô tả ở trên. Nếu bạn có bất kỳ câu hỏi hoặc nhận xét nào, tôi rất thích nghe từ bạn! Vui lòng liên hệ với tôi trên Twitter tại @Taleinat.
If you have any questions or comments, I’d love to hear from you! Please reach out to me on twitter at @taleinat.

Thư viện Python có bản quyền không?

Hầu hết các nguồn Python và nhị phân được phân phối theo bản quyền sau. Một vài tệp có chủ sở hữu bản quyền khác nhau, nhưng nếu không thì thông báo là tương tự. Ý chính của nó là Python hoàn toàn miễn phí, ngay cả đối với sử dụng thương mại (bao gồm cả bán lại).. A few files have a different copyright owner, but otherwise the notice is similar. The gist of it is that Python is absolutely free, even for commercial use (including resale).

Thư viện Python là bao nhiêu?

Có hơn 137.000 thư viện Python có mặt ngày hôm nay và họ đóng một vai trò quan trọng trong việc phát triển học máy, khoa học dữ liệu, trực quan hóa dữ liệu, ứng dụng thao tác hình ảnh và dữ liệu, v.v.over 137,000 python libraries present today, and they play a vital role in developing machine learning, data science, data visualization, image and data manipulation applications, and more.

Có phải tất cả các gói python là nguồn mở?

Không.Hầu hết các thư viện chính có sẵn với giấy phép miễn phí để sử dụng thương mại.Trong thực tế, hầu hết trong số chúng thậm chí là nguồn mở, nhưng một số thư viện phức tạp hơn liên quan đến tính toán nặng không dễ sử dụng như các mô -đun Python khác.most of them are even open source, but some of the more complex libraries that involves heavy computation are not as easy to use as other python modules.

Các gói PYPI có miễn phí không?

Hiện tại, PYPI là miễn phí.Hàng trăm ngàn nhà phát triển Python sử dụng kho lưu trữ để tìm và tải xuống các gói.Các gói Python tương tự như các thư viện.Một số gói là miễn phí, các gói khác có giá, nhưng kho lưu trữ có thể truy cập được cho mọi người.. Hundreds of thousands of Python developers use the repository to find and download packages. Python packages are similar to libraries. Some packages are complimentary, other packages have a price, but the repository is accessible to everyone.