Skip to content

[discussion] Reviewing current licensing and distribution files #3233

Description

@dannycjones

Creating a discussion issue here, just to capture context. The purpose of this issue is not to make any major decision on the artifacts themselves, that should be taken to the mailing list. Instead, this just captures discussion on what artifacts we have and if we should pursue any changes.

Part of the motivation is that the release process is made clunky by trying to maintain these, and main has no way to update these files right now.

Activity

  1. dannycjones commented on Sep 15, 2026

    @dannycjones
    ContributorAuthor

    Summary of some Slack discussion with @dannycjones, @xanderbailey, @kevinjqliu: https://apache-iceberg.slack.com/archives/C05HTENMJG4/p1789459352829739

    @dannycjones was asking about why the DEPENDENCIES.rust.tsv files exist, as they doubt if they are required under any license obligations.

    Three possible use cases raised:

    • Provides a way for reviewers to understand license changes (albeit at release time)
    • Provides a way for consumers to understand what licenses are used by the transitive dependencies of iceberg-rust
    • Required under license obligations

    @dannycjones recognizes that the pyiceberg-core Python package will likely need to maintain distribution of some kind of notice, as it distributes dependencies as part of a compiled wheel. Meanwhile, the crates themselves may be fine under license obligations as only source code is being distributed as part of the crates.

    @kevinjqliu shared that the TSV process is likely adopted historically based on OpenDAL's release process.

    We recognize that the current release process has a step to verify licenses according to a policy configured in deny.toml. @kevinjqliu suggests we move that into pull request checks (@dannycjones +1, opened here: #3234)

    Related: original PR introducing the TSVs #147

  2. dannycjones commented on Sep 15, 2026

    @dannycjones
    ContributorAuthor

    Obviously, any decision here to change the notices should be reviewed by legal :) NAL

  3. kevinjqliu commented on Sep 15, 2026

    @kevinjqliu
    Contributor

    Re: whether we should keep the DEPENDENCIES.rust.tsv files and what value they provide.

    The TSVs are meant to be regenerated during the release process so reviewers can inspect the dependency licenses. I personally don’t find the checked-in snapshots useful, especially when they’re stale. The actual license check is already handled by cargo deny, which doesn’t read these files.

    I’m in favor of dropping them and running the same cargo deny check in PR CI (#3234), while keeping the release-time check. That way we catch dependencies that don’t meet our license policy at PR time, without requiring contributors to maintain generated files.

    Looks like the TSV process is inherited from OpenDAL, @Xuanwo do you have any suggestions on whether we can remove the TSV files? Am I missing anything regarding its use case?

  4. kevinjqliu commented on Sep 15, 2026

    @kevinjqliu
    Contributor

    To summarize, there are 2 steps for checking dependencies' license during release (ref)

    1. generate TSV files using cargo deny list (ref)
    2. check license against deny.toml using cargo deny check license (ref)

    Generating TSV (step 1) is informational and does not change the license check (step 2)

  5. Xuanwo commented on Sep 16, 2026

    @Xuanwo
    Member

    Looks good! I'm open to remove the TSV files.

  6. dannycjones commented on Sep 16, 2026

    @dannycjones
    ContributorAuthor

    Thanks @Xuanwo!

    I think there's four things we need to do:

    • Adopt the license check in CI, no brainer (Add cargo deny license checks to PRs #3234)
    • Recommend a solution for the Python bindings, as that does distribute libraries and needs a notice
    • Take this to the Iceberg dev@ mailing list
    • Take this to the Apache legal-discuss@ mailing list
  7. dannycjones commented on Sep 16, 2026

    @dannycjones
    ContributorAuthor

    I identified I think an issue with the Python bindings that already existed, opened a report issue: #3239

  8. dannycjones commented on Sep 29, 2026

    @dannycjones
    ContributorAuthor

    OK, a little related to this: I'm planning to introduce a new Python script that handles the license checks (rejecting licenses we don't permit) and generating attribution and other files for the Python bindings.

    This will be separate to the existing dependencies.sh - I'm going to narrow's its scope only to generating the TSVs mentioned in this issue.

    I think the consensus in the community is that the TSVs aren't that useful for maintainer or consumer, so I'm effectively preparing to remove it by dropping the whole bash script, but I'll take that to the mailing list when that decision comes. If we decide instead to keep the TSVs, it can be folded into the new Python script.

    The motivation for moving to the Python script is to ensure this stuff is maintainable. Drafting the necessary changes for the distribution notices felt practically unreadable in Bash.

  9. kevinjqliu commented on Oct 1, 2026

    @kevinjqliu
    Contributor

    thanks @dannycjones

    lets get rid of the TSV and add cargo deny to CI then we can follow up with the rest of the license fixes

  10. dannycjones commented on Oct 1, 2026

    @dannycjones
    ContributorAuthor

    Sounds good. I have the change ready but it'll conflict with #3293, so that needs to go in first.

  11. kevinjqliu commented on Oct 4, 2026

    @kevinjqliu
    Contributor

    @dannycjones would you like to create a PR to remove the TSVs?

  12. dannycjones commented on Oct 4, 2026

    @dannycjones
    ContributorAuthor

    @dannycjones would you like to create a PR to remove the TSVs?

    Thanks Kevin, that's up now: #3338

  13. dannycjones commented on Oct 9, 2026

    @dannycjones
    ContributorAuthor

    Thanks all, great to see this one closed. I'll get the changes up for the wheels soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions