GitHub user Xuanwo edited a discussion: OpenDAL Usage based MSRV Strategy

Hello everyone, following the discussion at [Which version of MSRV should be 
next?](https://github.com/apache/opendal/discussions/5253). I want to propose 
the usage based OpenDAL MSRV Strategy.

## Summary

- All libraries released by the OpenDAL project will adopt the latest version 
that can covering approximately **90%** of users as MSRV.
- All binaries released by the OpenDAL project will always use the latest 
version.

Data is gathered by [crates.io requests based on cargo 
version](https://p.datadoghq.com/sb/3a172e20-e9e1-11ed-80e3-da7ad0900002-973f4c1011257befa8598303217bfe3a)
 for the "Past 1 Month".

## Context

OpenDAL has an MSRV but hasn't established a strategy yet. It's important to 
have a clear MSRV policy so our downstream users will know when OpenDAL will 
update its MSRV.

This policy should be predictable and meaningful. It's not effective to just 
choose a hardcoded version of Rust to support, as versions are not equally 
used. Some Rust versions have more users than others. For example, Rust `1.75` 
has 2.83% of requests, while `1.76` only has 1.78%. The reasons are complex, 
determined by the features this version includes and major crates' MSRV.

## Proposal

Instead, I proposed a usage-based MSRV strategy: we choose a percentage we can 
support, then select the closest version to this percentage as our MSRV.

The data source is [crates.io requests based on cargo 
version](https://p.datadoghq.com/sb/3a172e20-e9e1-11ed-80e3-da7ad0900002-973f4c1011257befa8598303217bfe3a),
 for example:

![image](https://github.com/user-attachments/assets/a4a3a999-f907-4413-a507-c808a580a1bb)

We can generate a collection of projects based on versions:

- 1.82: 13.56%
- 1.81: 66.73%
- 1.80: 76.79%
- 1.79: 83.03%
- 1.78: 86.44%
- 1.77: 88.04%
- 1.76: 89.83%
- 1.75: 92.75% (our current MSRV)

If we choose `1.76` as our MSRV, `89.83%` of cargo users can use `opendal` 
without increasing the MSRV.

This evaluation will occur every time we plan a `minor` version, even after our 
`v1.0` release. The release manager will follow the same process described here 
to select the MSRV and include it in our release vote process.

---

What do you think?

GitHub link: https://github.com/apache/opendal/discussions/5256

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]

Reply via email to