Protobuf 5.x/6.x
Summary
Update Protobuf to the latest version (5.x), and 6.x if it arrives in time before freeze in Q1 2025. Note that Protobuf's versioning is complicated, C++ and Python are at version 5, other language bindings at version 4, and they all embed the version of protoc
; we are using the C++ version here so we can reference its support policy.
A compatibility package, protobuf3
will be packaged for current protobuf
dependencies, but will be marked as deprecated as v3 EOLed in March 2024.
Owner
- Name: Michel Lind, Jonathan Wright, Neal Gompa
- Email: michel@michel-slm.name, jonathan@almalinux.org, ngompa13@gmail.com
Current status
- Targeted release: Fedora Linux 42
- Last updated: 2024-12-24
- Announced
- Discussion thread
- FESCo issue: <will be assigned by the Wrangler>
- Tracker bug: <will be assigned by the Wrangler>
- Release notes tracker: <will be assigned by the Wrangler>
Detailed Description
protobuf
has historically been a problem to maintain in Fedora because upstream aggressively releases new versions; we hope to make it easier to keep up by providing compatibility packages for the older major version as soon as a new major version of protobuf
C++ is out.
Specifically, we will start by packaging protobuf3
for legacy use cases and updating protobuf
to version 5, then when version 6 is out, immediately package protobuf5
and update protobuf
to version 6.
Older protobuf
versions will be marked as deprecated()
as soon as upstream considers them out of support, and once this happens we have the option of retiring them as soon as either there is a major security issue affecting it or, in Rawhide, as soon as there are no longer any dependent package.
We will add version suffixes for the binary packages for protobuf
5.x/6.x, and if we don't see any issue, for the compat protobuf3
subpackages as well.
Feedback
Benefit to Fedora
Other packagers and users benefit from having an up to date version of Protobuf. This would unblock updating several dependent packages.
Scope
- Proposal owners:
- Package
protobuf3
- Provide a COPR for testing
- Update
protobuf
in COPR - Rebuild dependents in a COPR to make sure this work
- Send PRs to packages that need to be adapted to build against
protobuf3
- (stretch) send PRs to packages to switch them to use
protobuf
5.x/6.x
- Package
- Other developers:
- Help update your own packages to ideally use
protobuf
5.x/6.x or at least to switch them to useprotobuf3
- Report packaging issues
- Help update your own packages to ideally use
- Release engineering: #12506
- Policies and guidelines: N/A (not needed for this Change)
- Trademark approval: N/A (not needed for this Change)
- Alignment with the Fedora Strategy:
Upgrade/compatibility impact
This should have minimal impact for users. The only issue would be if a package transitively depends on both protobuf
3.x and 5.x/6.x at build time.
Early Testing (Optional)
Do you require 'QA Blueprint' support? N
How To Test
For packagers: build your packages against the Protobuf COPR (to be added here once it is available)
For users: enable the COPR and report issues with the applications there
User Experience
Users will benefit from having newer packages available that are currently blocked on the stale protobuf
version
Dependencies
70 source RPMs
$ fedrq whatrequires protobuf-devel --src CuraEngine-1:5.4.0-7.fc42.src CuraEngine_grpc_definitions-0.1.0-7.fc42.src HepMC3-3.3.0-2.fc41.src OliveTin-2022.11.14-8.fc40.src actor-framework-1.0.1-1.fc42.src android-tools-1:35.0.1-2.fc41.src bear-3.1.5-2.fc42.src bloaty-1.1-38.fc42.src buildbox-1.2.33-1.fc42.src caffe-1.0^git20200212.9b89154-14.fc42.src chatty-0.8.5-1.fc42.src chromiumos-platform-0~20240902git67bc17e-4.fc42.src clementine-1.4.0~rc2-10.fc42.src cockatrice-2.9.0-5.fc41.src credentials-fetcher-1.3.6-0.fc40.src criu-4.0-3.fc42.src dnsdist-1.9.7-1.fc42.src fcitx5-mozc-2.17.2102.102.1-36.20230508git242b4f7.fc42.src gazebo-10.2.0-11.fc42.src grpc-1.48.4-41.fc42.src hidviz-0.2-6.fc41.src ignition-msgs-1.0.0-21.fc41.src ignition-transport-4.0.0-22.fc41.src kf5-kitinerary-23.08.5-3.fc42.src kismet-0.0.2023.07.R1-7.fc41.src kitinerary-24.12.0-1.fc42.src kosmindoormap-24.12.0-1.fc42.src libarcus-5.3.0-5.fc41.src libcompizconfig-1:0.8.18-14.fc41.src libopenshot-0.3.3-4.fc42.src liborc-2.0.3-1.fc42.src libphonenumber-8.13.50-3.fc42.src libzypp-17.34.1-4.fc42.src marble-1:24.12.0-1.fc42.src merkaartor-0.20.0-3.fc42.src meson-1.5.1-1.fc42.src mmsd-tng-2.5.0-4.fc41.src mosh-1.4.0-6.fc41.src mozc-2.29.5111.102-11.fc42.src mumble-1.4.287-5.fc41.src mypaint-2.0.1-11.fc41.src nanopb-0.4.9-1.fc42.src ncid-1.17-3.fc42.src ncnn-20240820-1.fc42.src netdata-2.0.3-2.fc42.src onnx-1.15.0-4.fc41.src onnxruntime-1.17.3-6.fc42.src opencv-4.10.0-7.fc42.src opentrep-0.07.16-1.fc42.src osgearth-3.7-2.fc42.src osmpbf-1.5.1-4.fc41.src paraview-5.12.1-8.fc42.src pdns-4.9.2-2.fc42.src pdns-recursor-5.1.2-2.fc42.src perfetto-48.0-1.fc42.src perl-Alien-ProtoBuf-0.09-24.fc41.src plasma-dialer-1:6.2.4-1.fc42.src pokerth-1.1.2-30.fc41.src protobuf-c-1.5.0-4.fc41.src protozero-1.7.1-9.fc41.src python-torch-2.5.0-1.fc42.src python-torchaudio-2.4.1-2.fc42.src qt6-qtgrpc-6.8.1-2.fc42.src raceintospace-2.0.0-12.rc1.fc41.src ricochet-1.1.4-36.fc41.src root-6.32.08-2.fc42.src rust-tonic-types-0.12.3-1.fc42.src spacebar-1:6.2.4-1.fc42.src srpc-0.10.3-1.fc42.src usbguard-1.1.3-2.fc41.src
Contingency Plan
- Contingency mechanism:
The minimum change we can do is update protobuf
to the latest 3.x, but that still requires some compatibility testing and leave us with an obsolete version
- Contingency deadline:
Beta freeze
- Blocks release?
Yes
Documentation
N/A (not a System Wide Change)