alamb opened a new issue #1120:
URL: https://github.com/apache/arrow-rs/issues/1120


   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 https://github.com/apache/arrow-rs/issues/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](https://github.com/apache/arrow-rs/blob/master/dev/release/README.md) 
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.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to