Skip to content

More frequent major releases for arrow-rs #1120

Closed
@alamb

Description

@alamb

TDLR: I propose doing major releases for arrow-rs more frequently (up to every other week) directly from master, breaking the correspondence with the main arrow release

For example, the release cadence might look like

  • 2022-01-01: 7.0.0
  • 2022-01-15: 7.1.0 (no backwards incompatible changes)
  • 2022-02-01: 8.0.0 (new backwards incompatible change)
  • 2022-02-15: 9.0.0 (new backwards incompatible change)
  • 2022-03-01: 9.1.0 etc
  • 2022-03-15: 9.2.0
  • 2022-04-01: 9.3.0
  • 2022-04-15: 10.0.0
    ...

Is your feature request related to a problem or challenge? Please describe what you are trying to do.

The rust ecosystem as a whole is "fast changing". This means:

  1. Many pieces of the ecosystem change frequently that require downstream updates (e.g. new clippy lints released in stable versions of rust that require code fixes to pass CI)
  2. Many crate authors don't spend effort maintaining stable releases, but instead fix issues by pushing new releases

This means the ability to quickly upgrade to new downstream libraries is critical to help fix issues like #1101

With a few notable exceptions (e.g. tokio) most of the rust ecosystem pushes new major releases frequently (monthly if not more so), often via 0.X releases.

The current release cadence and versioning scheme of arrow-rs inherits from the C/C++ and python ecosystems with a major release every 3 months while maintaining a backwards compatible branch.

I propose moving the rust implementation in closer alignment with the rest of the rust ecosystem with more frequent major version releases.

Describe the solution you'd like

Continue to release every 2 weeks; However, release all new versions directly from the master branch, picking a new version number based on the changes in the crate (a new major version if there were semver changes, minor if not)

Pros:

  1. Same number of releases as today (1 every other week)
  2. Less branch maintenance overhead (selfishly good for me)
  3. Major changes to dependencies(e.g. upgrade to newer versions of prost) available sooner

Cons:

  1. downstream crates would likely have to do major updates more frequently (cargo update doesn't pick up new major versions)
  2. Rust versions would no longer necessarily align with C++/etc mono repo release version

Much of the rust ecosystem, as described above, is used to the "do major updates frequently" mindset, and furthermore tools such as dependabot reduce the effort required to do so, I believe the first con is manageable.

Describe alternatives you've considered

Option: 1 "major release on demand", where we released when there were "enough" changes built up to do a regular release;

Option 2: keep the same structure (a master and active_release branch); do a major release every month instead of every 3 months, and do a minor release every other week.

Metadata

Metadata

Assignees

No one assigned

    Labels

    development-processRelated to development process of arrow-rsenhancementAny new improvement worthy of a entry in the changelog

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions