Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consider vendoring legacy_api_wrap #1301

Open
ivirshup opened this issue Jan 12, 2024 · 4 comments
Open

Consider vendoring legacy_api_wrap #1301

ivirshup opened this issue Jan 12, 2024 · 4 comments
Milestone

Comments

@ivirshup
Copy link
Member

I think we should be very conservative with dependencies for anndata. Ideally it's a very small set.

Each dependency brings possible dependency resolution issues (e.g. people pinning it) and supply chain vulnerabilities.

I think we can get around this (especially for small dependencies) by just vendoring the code (similar to approaches taken by larger packages like scipy/ numpy).

I would suggest that we use a submodule to specifically vendor legacy_api_wrap.

cc: @flying-sheep

@ivirshup ivirshup added this to the 0.10.5 milestone Jan 12, 2024
@flying-sheep
Copy link
Member

flying-sheep commented Jan 12, 2024

Each dependency brings possible dependency resolution issues (e.g. people pinning it) and supply chain vulnerabilities.

I generally agree that those issues exist (to varying degrees)¹ …

I would suggest that we use a submodule to specifically vendor legacy_api_wrap.

… but those reasons don’t apply to this specific library:

  • It’s tiny, tested, and focused on API versioning. It follows semver and there is no reason to release a 2.0 for it.
  • There‘s no supply chain issue: It’s controlled by me, so instead of compromising any anndata contributor, I specifically would have to be compromised. So anndata is more vulnerable than it.

I think there are use cases for vendoring, but I’ve been bitten by it more often than I’ve seen it pay out. I haven’t dealt with git submodules in a while, but unless things changed, they also add complexity and make things harder (not only for newbies). So unless there’s an especially good case for vendoring², I’m against doing it, and if there is, I don’t know if git submodules are the way to go.


¹ Except for “people pinning it”: If we need a new feature of a dependency, we bump the minimum version we depend on and people pinning things might need to use an older anndata. That’s why we’re careful about doing that
²small, many people with PyPI push permissions, used by many projects, several major version updates or breaking changes.

@flying-sheep
Copy link
Member

Conda has a policy against vendoring, so let’s not do that.

  • Package does not vendor other packages. (If a package uses the source of another package, they should be separate packages or the licenses of all packages need to be packaged).

@flying-sheep flying-sheep closed this as not planned Won't fix, can't repro, duplicate, stale Mar 27, 2024
@ivirshup ivirshup reopened this Mar 27, 2024
@ivirshup
Copy link
Member Author

How do they handle scipy? Or versioneer?

@flying-sheep flying-sheep modified the milestones: 0.10.7, 0.10.8 Apr 9, 2024
Copy link

This issue has been automatically marked as stale because it has not had recent activity.
Please add a comment if you want to keep the issue open. Thank you for your contributions!

@github-actions github-actions bot added the stale label Jun 10, 2024
@flying-sheep flying-sheep modified the milestones: 0.10.8, 0.10.9 Jun 18, 2024
@github-actions github-actions bot removed the stale label Jun 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants