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, Miroslav Suchý
- Email: michel@michel-slm.name, jonathan@almalinux.org, ngompa13@gmail.com, msuchy@redhat.com
Current status
- Targeted release: Fedora Linux 45
- Last updated: 2026-06-08
- Announced
- Discussion thread
- FESCo issue: #3336
- Tracker bug: #2341815
- Release notes tracker: #159
A compat packages have been built in rawhide:
- protobuf3 https://src.fedoraproject.org/rpms/protobuf3
- protobuf3-c https://src.fedoraproject.org/rpms/protobuf3-c
- python-protobuf https://src.fedoraproject.org/rpms/python-protobuf
Overview of dependent packages built with rebased protobuf: https://copr.fedorainfracloud.org/coprs/mochaa/protobuf/monitor/
PRs for packages that fail to build with the new protobuf - moving them to protobuf3. All PRs are merged now:
- buildbox https://src.fedoraproject.org/rpms/buildbox/pull-request/5
- CuraEngine https://src.fedoraproject.org/rpms/CuraEngine/pull-request/31
- CuraEngine_grpc_definitions https://src.fedoraproject.org/rpms/CuraEngine_grpc_definitions/pull-request/2
- golang-google-protobuf https://src.fedoraproject.org/rpms/golang-google-protobuf/pull-request/7
- grpc https://src.fedoraproject.org/rpms/grpc/pull-request/42
- HepMC3 https://src.fedoraproject.org/rpms/HepMC3/pull-request/2
- kicad https://src.fedoraproject.org/rpms/kicad/pull-request/10
- libarcus https://src.fedoraproject.org/rpms/libarcus/pull-request/27
- mosh https://src.fedoraproject.org/rpms/mosh/pull-request/5
- mozc https://src.fedoraproject.org/rpms/mozc/pull-request/10
- onnx https://src.fedoraproject.org/rpms/onnx/pull-request/13
- onnxruntime https://src.fedoraproject.org/rpms/onnxruntime/pull-request/19
- osgearth https://src.fedoraproject.org/rpms/osgearth/pull-request/2
- perfetto https://src.fedoraproject.org/rpms/perfetto/pull-request/2
- protozero https://src.fedoraproject.org/rpms/protozero/pull-request/1
- python-torch https://src.fedoraproject.org/rpms/python-torch/pull-request/10
- raceintospace https://src.fedoraproject.org/rpms/raceintospace/pull-request/2
- ricochet https://src.fedoraproject.org/rpms/ricochet/pull-request/1
- rocm-rdc https://src.fedoraproject.org/rpms/rocm-rdc/pull-request/1
- root https://src.fedoraproject.org/rpms/root/pull-request/9
- srpc https://src.fedoraproject.org/rpms/srpc/pull-request/3
- syslog-ng https://src.fedoraproject.org/rpms/syslog-ng/pull-request/7
- yara https://src.fedoraproject.org/rpms/yara/pull-request/7
Packages that should build without problems with the new protobuf (released in https://bodhi.fedoraproject.org/updates/FEDORA-2026-a27aa22069 ):
- actor-framework
- android-tools
- astroid
- bloaty
- clementine
- cockatrice
- criu
- dnsdist
- kismet
- kitinerary
- kosmindoormap
- kpublictransport
- libcompizconfig
- libopenshot
- liborc
- libphonenumber
- linux-sgx
- marble
- merkaartor
- meson
- migraphx
- mmsd-tng
- mumble
- mypaint
- mysql-java-connector
- ncid
- ncnn
- opencv (failed to build on s390x) https://copr.fedorainfracloud.org/coprs/mochaa/protobuf/build/10341272/
- open-vm-tools
- opentrepo
- osmpbf
- paraview (failed to build on s390x) https://copr.fedorainfracloud.org/coprs/mochaa/protobuf/build/10341536/
- pdns
- pdns-recursor
- perl-Alien-ProtoBuf
- plasma-dialer
- python-torchaudio
- rocal
- rust-prost-build
- rust-protox
- rust-tonic-types
- usbguard (failed to build on s390x) https://copr.fedorainfracloud.org/coprs/mochaa/protobuf/build/10348450/
- spacebar
Dead packages in rawhide (were on original list):
- chromiumos-platform
Depends on grpc (might be a problem in the future):
- libgeopmd
- nanopb
- qt6-qtgrpc
Other issues:
- chatty - fails to build with rebuilt package libphonenumber
- hidviz - FTBFS, but for a different reason than protobuf.
- openvino - FTBFS, but for a different reason than protobuf.
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
protobufin 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
protobuf5.x/6.x
- Package
- Other developers:
- Help update your own packages to ideally use
protobuf5.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 https://copr.fedorainfracloud.org/coprs/mochaa/
Select rawhide chroots and in Settings->External repositories put: copr://mochaa/protobuf and build your package in this new project. It will load the new protobuf from mochaa/protobuf
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
CuraEngine-1:5.4.0-12.fc44.src CuraEngine_grpc_definitions-0.1.0-16.fc44.src HepMC3-3.3.1-9.fc44.src actor-framework-1.1.0-3.fc44.src android-tools-1:35.0.2-17.fc44.src astroid-0.17-1.fc45.src bear-3.1.6-4.fc44.src bloaty-1.1-50.fc44.src buildbox-1.4.6-1.fc45.src chatty-0.8.9-4.fc45.src clementine-1.4.1-10.fc44.src cockatrice-2.10.2-1.fc44.src criu-4.2-18.fc45.src dnsdist-2.0.3-1.fc45.src grpc-1.48.4-57.fc44.src hidviz-0.2.1-3.fc44.src kismet-0.0.2025.09.R1-3.fc44.src kitinerary-26.04.1-1.fc45.src kosmindoormap-26.04.1-1.fc45.src kpublictransport-26.04.1-1.fc45.src libarcus-5.3.0-11.fc45.src libcompizconfig-1:0.8.18-18.fc44.src libgeopmd-3.2.1-3.fc44.src libopenshot-0.5.0-4.fc44.src liborc-2.3.0-1.fc45.src libphonenumber-8.13.55-9.fc44.src linux-sgx-2.28-4.fc45.src marble-1:26.04.1-1.fc45.src merkaartor-0.20.0-8.fc44.src meson-1.11.1-2.fc45.src migraphx-7.2.2-1.fc45.src mmsd-tng-2.6.4-3.fc44.src mosh-1.4.0-10.fc44.src mozc-2.29.5111.102-18.fc44.src mumble-1.4.287-10.fc44.src mypaint-2.0.1-21.fc44.src nanopb-0.4.9.1-2.fc44.src ncid-1.18-5.fc44.src ncnn-20250916-2.fc44.src onnxruntime-1.22.2-3.fc45.src open-vm-tools-13.0.10-2.fc44.src opencv-4.13.0-3.fc45.src opentrep-0.07.20-5.fc44.src openvino-2025.1.0-14.fc44.src osgearth-3.8-1.fc45.src osmpbf-1.6.1-2.fc44.src paraview-6.1.0-2.fc45.src pdns-5.0.4-1.fc45.src pdns-recursor-5.4.1-1.fc45.src perfetto-49.0-5.fc45.src perl-Alien-ProtoBuf-0.09-28.fc44.src plasma-dialer-1:6.6.5-1.fc45.src protobuf-c-1.5.2-2.fc44.src protobuf3-c-1.5.2-50.fc45.src protozero-1.8.1-3.fc44.src python-torch-2.11.0-1.fc45.src python-torchaudio-2.9.0-4.fc44.src qt6-qtgrpc-6.11.1-1.fc45.src raceintospace-2.0.0-23.fc45.src ricochet-1.1.4-39.fc44.src rocal-7.2.1-1.fc45.src rocm-rdc-7.2.1-1.fc45.src root-6.38.04-5.fc45.src rust-prost-build-0.14.3-1.fc45.src rust-protox-0.9.1-1.fc45.src rust-tonic-types-0.14.5-1.fc45.src spacebar-1:6.6.5-1.fc45.src srpc-0.10.3-5.fc44.src usbguard-1.1.4-1.fc45.src warzone2100-4.6.3-1.fc44.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)
