nimble icon indicating copy to clipboard operation
nimble copied to clipboard

[Feature Request] Dependabot Support for Nim Package Ecosystem

Open kevinmatthes opened this issue 3 years ago • 5 comments

Abstract

The Nim package ecosystem should be added to Dependabot version updates. Is this already planned / in development?

Motivation

Since Nim projects can have Nim libraries as their dependencies, their versions need to be kept up-to-date. Dependabot helps to do so. All Nim developers using GitHub would benefit.

Description

Dependabot is a bot for GitHub to automatically check for version updates to dependencies, written in Ruby. It is maintained here: https://github.com/dependabot/dependabot-core. Dependabot already supports numerous package ecosystems; unfortunately, Nim does not belong to this set. I would like to ask for adding it.

Code Examples

When implemented, Dependabot might check for Nim dependencies with a configuration similar to the following.

version: 2
updates:
  - package-ecosystem: nimble
    directory: /
    schedule:
      interval: daily
      time: '00:00'

Backwards Compatibility

There should not be problems with backwards compatibility.

kevinmatthes avatar Nov 21 '22 15:11 kevinmatthes

Can you describe how much (and what kind of) effort would be required for this?

Varriount avatar Nov 21 '22 20:11 Varriount

As a first step, I would like to suggest to contact the Dependabot maintainers. I do not know about the plans of the Dependabot project which package registries are going to be added by the next releases; perhaps they are already working on a Nim integration. This should be the starting point and could happen in the easiest case by a simple GitHub issue.

The implementation definitely requires Ruby coding skills and knowledge about the code base of the Dependabot repository. These requirements are obviously satisfied by the Dependabot maintainers. I thus guess the implementation would be processed in cooperation with the Dependabot maintainers. It is possible that they are going to implement Nim support themselves. Members of the Nim project with Ruby experiences could help in order to shorten the development time.

The Nim project will need to communicate the relevant technical details for an integration. It might be required to contribute certain interfaces, written in Nim, to the development process. Some ecosystems require those, maybe also Nim. This would be responsibility of the Nim package registry team as they know best about these mechanisms and how to interface them.

kevinmatthes avatar Nov 22 '22 16:11 kevinmatthes

This issue should probably go into https://github.com/nim-lang/nimble/issues

FedericoCeratto avatar Dec 07 '22 10:12 FedericoCeratto

An alternative to Dependabot would be Renovate: https://github.com/renovatebot/renovate. It is written in TypeScript and comparable to Dependabot regarding their purposes -- suggesting updates for upcoming releases of dependencies. In fact, any solution assisting in keeping all dependencies up-to-date would support the development of Nim software. Although Renovate itself is not shipped with GitHub just as Dependabot, it is available as a free hosted solution for all GitHub users (GitHub App), as well, and furthermore available on other platforms, such as Azure and GitLab.

The maintainers of Renovate provide a form for requesting a new package registry: https://github.com/renovatebot/renovate/blob/main/docs/development/new-package-manager-template.md. When requesting support for a further ecosystem, it is required to answer all questions of this form such that the further steps can be planned and the necessary effort can be estimated.

What is the recent on this issue; would it be possible to also take Renovate into account?

kevinmatthes avatar Jun 30 '23 06:06 kevinmatthes

If a certain Nim dependency should be released not only by pushing the respective update to the registry but also by creating a corresponding GitHub release, Renovate is already able to fetch that update as it can be configured to watch GitHub repositories for new releases and to update the manifest using regular expressions. However, this would imply the necessity for all Nim developers to create a GitHub release for each new version which might cause problems for some development workflows. Thus, the regex approach with Renovate cannot replace a full registry support.

kevinmatthes avatar Jul 02 '23 11:07 kevinmatthes