-
Notifications
You must be signed in to change notification settings - Fork 331
Description
This is a followup to https://mail.gnome.org/archives/ostree-list/2021-April/msg00000.html
So far I think the model has been pretty successful (at least for us in rpm-ostree land).
But...I'm already hitting metal complexity + ergonomic issues in dealing with 3 git repos. For example,
Proposed: Create a 2021-lts
git branch
Take the current state of this repo, and we will create a "long term support" branch. Anyone who still cannot take a hard dependency on Rust in 2022 can use this branch.
Or, if you are mostly satisfied with the existing feature set and want stability, you can follow this branch. If we execute on this proposal, I'd plan to use this for RHEL8.
Proposed: Fold ostree-rs and ostree-rs-ext into main
In the short term, the main
branch still will support the existing C library and binaries as is.
However, in the medium term (e.g. somewhere early in 2022?) we actively take a hard dependency on Rust (and cargo
etc) to build and run.
Benefits:
- Being able to version + release a single thing
- Single test suite infrastructure (right now bits are duplicated across multiple repos)
- We can write new key functionality in Rust
What about non-Rust consumers?
A key question here is whether libostree-1.so
depends on Rust. If we do, it means that projects like rpm-ostree will end up linking in Rust code twice, which is going to lead to bloat and problems.
In this model, we would probably need to do soname bumps corresponding to the Rust crate semver bumps.
One possibility here is that the shared library calls back into Rust via weak symbols. So the Rust code gets compiled in the consumer binary (e.g. rpm-ostree).