From Fedora Project Wiki


Protobuf 5.x/6.x

This is a proposed Change for Fedora Linux.
This document represents a proposed Change. As part of the Changes process, proposals are publicly announced in order to receive community feedback. This proposal will only be implemented if approved by the Fedora Engineering Steering Committee.

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


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
  • Other developers:
    • Help update your own packages to ideally use protobuf 5.x/6.x or at least to switch them to use protobuf3
    • Report packaging issues
  • 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)

Release Notes