Thanks Robert for the proposal. +1 to enable automatic dependency
management. I don't have enough experience to decide which one to choose.
I'm leaning toward something easy to maintain.

Yufei


On Wed, Sep 4, 2024 at 1:01 PM Robert Stupp <sn...@snazy.de> wrote:

> Hi all,
>
> I'd like to propose to use automatic dependency management in Apache
> Polaris and start a discussion about this topic first.
>
> Keeping dependencies up-to-date is a quite important - it helps to not
> (or better: less likely) run into security issues or bugs in
> dependencies. Continuously keeping dependencies up-to-date also keeps
> the amount of code changes due to updated dependencies down to a
> manageable amount of work - most of the time within the
> dependency-version-bump PR.
>
>
> There are two options that I can think of:
>
> ## Renovate
>
> Renovate [1] is a highly customizable dependency management tool. We are
> using it in projectnessie [4] for all projects for quite some time and
> are very happy with it. It just works and does its job for years now.
> Particularly the amount of flexibility and functionality it brings is
> really nice.
>
> Renovate can update dependencies for all kinds of what they call
> "managers" [2] - e.g. for Java: Gradle, Gradle Wrapper, or for Python:
> pip, poetry, or Docker images: Dockerfile, Compose, etc.
>
> Different versioning schemes are supported (not just semver).
>
> The Renovate bot comes along each repository approximately every 3
> hours. It has configurable limits for the amount of open PRs, PRs
> created per hour and a ton more options. Dependency updates can cause a
> PR immediately or at any schedule that's needed - even configured down
> to the level of individual dependencies.
>
> It can approve PRs automatically and enable automerge. Those can also be
> configured individually. Similarly the the kind of version bump
> (major/minor/patch) that requires manual approval over automatic
> approval + automerge.
>
> Thinking a bit ahead in time - when (if) there are multiple version
> branches to maintain (e.g. branches for version 1.x, 1.1.x, 2.x, etc):
> With Renovate it's possible to get dependency updates even for those
> version branches - "down-scoped" to patch-version bumps only, if
> configured that way. This could be used to get all the patch version
> dependency updates in version branches automatically.
>
> The dependency dashboard (example: [3]) that Renovate opens as a GitHub
> issue, provides a concise overview of dependencies that are scheduled,
> have been manually edited, are currently open or are ignored/blocked (by
> closing the PR, to re-create the PR).
>
> ## Dependabot
>
> Dependabot supports less "ecosystems", but probably enough for Polaris.
> Historically, Dependabot didn't do a good job with Gradle version
> catalogs, but the situation might have improved since the last time I
> checked it.
>
> Overall, compared to Renovate, it has IMO limited flexibility. It seems
> (I never tried it) that the flexibility especially for multiple "managed
> branches" is not that flexible, if present at all.
>
>
> What's your opinion on this topic?
>
>
> Robert
>
> [1] https://docs.renovatebot.com/
>
> [2] https://docs.renovatebot.com/modules/manager/
>
> [3] https://github.com/projectnessie/nessie/issues/5255
>
> [4]
> https://github.com/projectnessie/nessie/blob/main/.github/renovate.json5
>
> --
> Robert Stupp
> @snazy
>
>

Reply via email to