Hmmm, curious.

The dep in question is chardet, which is being pulled in from the "requests" direct dependency.

However the LGPL dep is not new, and has been in requests since 2017 <https://github.com/psf/requests/commit/1ea27b35649571abb796f7cffbab83938d882a8d> -- released mid 20187

Airflow graduated in Jan 2019 -- I don't recall us discussing this issue at graduation, nor in any of the previous incubator releases, so I guess this got missed then, as we have depended upon "requests" for a while. The view of the requests team is this

<https://github.com/psf/requests/issues/3389#issuecomment-396642172>
As stated above, none of the maintainers are lawyers, but our usages have been approved by legal teams well-versed in software licensing. I /believe/ the specific clause that is worth noting is LGPL2.1 ยง 5 <https://opensource.org/licenses/LGPL-2.1>:

A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.


*@Justin* Does the ASF disagree with this statement?

And for us it's even worse. Here is everything that depends on chardet. (Many of these deps are already optional extras in Airflow)

The tricky one here is connexion which powers our API, and that depends upon requests -- that is not going to be an easy dep to replace, so we'll have to ask connexion to make that dep optional. (However there hasn't been any commits to that project since Aug 2020, so I'm not all that hopeful about getting a PR accepted).

(And none of this helps Liminal while they are pinned to Airflow 1.10.12)

Our reverse deptree of chardet.

chardet==3.0.4
 - requests==2.23.0 [requires: chardet>=3.0.2,<4]
   - apache-airflow==2.1.0.dev0 [requires: requests>=2.20.0]
- apache-airflow-providers-ftp==1.0.0 [requires: apache-airflow>=2.0.0a0] - apache-airflow-providers-google==2.0.0 [requires: apache-airflow>=2.0.0] - apache-airflow-providers-http==1.0.0 [requires: apache-airflow>=2.0.0a0] - apache-airflow-providers-imap==1.0.0 [requires: apache-airflow>=2.0.0a0] - apache-airflow-providers-sqlite==1.0.0 [requires: apache-airflow>=2.0.0a0]
   - connexion==2.7.0 [requires: requests>=2.9.1]
     - apache-airflow==2.1.0.dev0 [requires: connexion>=2.6.0,<3]
- apache-airflow-providers-ftp==1.0.0 [requires: apache-airflow>=2.0.0a0] - apache-airflow-providers-google==2.0.0 [requires: apache-airflow>=2.0.0] - apache-airflow-providers-http==1.0.0 [requires: apache-airflow>=2.0.0a0] - apache-airflow-providers-imap==1.0.0 [requires: apache-airflow>=2.0.0a0] - apache-airflow-providers-sqlite==1.0.0 [requires: apache-airflow>=2.0.0a0]
   - docker==4.1.0 [requires: requests>=2.14.2,!=2.18.0]
     - moto==1.3.14 [requires: docker>=2.5.1]
   - github3.py==1.3.0 [requires: requests>=2.18]
   - google-api-core==1.26.0 [requires: requests>=2.18.0,<3.0.0dev]
      ... lots of sub-modules trimmed here
   - hvac==0.10.0 [requires: requests>=2.21.0]
   - jira==2.0.0 [requires: requests>=2.10.0]
   - kubernetes==11.0.0 [requires: requests]
   - moto==1.3.14 [requires: requests>=2.5]
   - PyGithub==1.53 [requires: requests>=2.14.0]
   - pywinrm==0.4.1 [requires: requests>=2.9.1]
   - qds-sdk==1.13.2 [requires: requests>=1.0.3]
   - requests-kerberos==0.12.0 [requires: requests>=1.1.0]
   - requests-mock==1.7.0 [requires: requests>=2.3,<3]
   - requests-ntlm==1.1.0 [requires: requests>=2.0.0]
     - pywinrm==0.4.1 [requires: requests-ntlm>=0.3.0]
   - requests-oauthlib==1.1.0 [requires: requests>=2.0.0]
     - google-auth-oauthlib==0.4.1 [requires: requests-oauthlib>=0.7.0]
- google-ads==7.0.0 [requires: google-auth-oauthlib>=0.3.0,<1.0.0] - apache-airflow-providers-google==2.0.0 [requires: google-ads>=4.0.0,<8.0.0]
       - pandas-gbq==0.13.1 [requires: google-auth-oauthlib]
- apache-airflow-providers-google==2.0.0 [requires: pandas-gbq]
       - pydata-google-auth==0.3.0 [requires: google-auth-oauthlib]
         - pandas-gbq==0.13.1 [requires: pydata-google-auth]
- apache-airflow-providers-google==2.0.0 [requires: pandas-gbq]
     - jira==2.0.0 [requires: requests-oauthlib>=0.6.1]
     - kubernetes==11.0.0 [requires: requests-oauthlib]
   - requests-toolbelt==0.9.1 [requires: requests>=2.0.1,<3.0.0]
     - jira==2.0.0 [requires: requests-toolbelt]
     - twine==3.1.1 [requires: requests-toolbelt>=0.8.0,!=0.9.0]
   - responses==0.10.9 [requires: requests>=2.0]
     - moto==1.3.14 [requires: responses>=0.9.0]
   - snooty-lextudio==1.8.7.dev0 [requires: requests~=2.24.0]
   - Sphinx==3.5.4 [requires: requests>=2.5.0]
     - sphinx-airflow-theme==0.0.4 [requires: sphinx]
     - sphinx-argparse==0.2.5 [requires: sphinx>=1.2.0]
     - sphinx-autoapi==1.0.0 [requires: sphinx>=1.6]
     - sphinx-copybutton==0.3.1 [requires: sphinx>=1.8]
     - sphinx-rtd-theme==0.4.3 [requires: sphinx]
     - sphinxcontrib-dotnetdomain==0.4 [requires: Sphinx>=0.6]
       - sphinx-autoapi==1.0.0 [requires: sphinxcontrib-dotnetdomain]
     - sphinxcontrib-golangdomain==0.2.0.dev0 [requires: Sphinx>=1.0]
       - sphinx-autoapi==1.0.0 [requires: sphinxcontrib-golangdomain]
     - sphinxcontrib-httpdomain==1.8.0 [requires: Sphinx>=1.6]
     - sphinxcontrib-redoc==1.6.0 [requires: sphinx>=1.5]
     - sphinxcontrib-spelling==5.2.1 [requires: Sphinx>=3.0.0]
   - twine==3.1.1 [requires: requests>=2.20]
   - zdesk==2.7.1 [requires: requests]

-ash



On Wed, 21 Apr, 2021 at 09:38, Justin Mclean <[email protected]> wrote:
Hi,

It been noticed in the Incubator that this project may include a Category X licensed dependancy. [1] Do you have any advice to solve or correct this situation?

Thanks,
Justin

1. <https://lists.apache.org/thread.html/rf278b1e3c813b74d156f30570c897a6792e817e3eeb7eeb8522acf6d%40%3Cgeneral.incubator.apache.org%3E>

Reply via email to