F42 Change Proposal: Protobuf 5.x/6.x (system-wide)

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.

Wiki
Announced

:link: 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.

:link: Owner

:link: 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.

:link: Feedback

:link: Benefit to Fedora

Other packagers and users benefit from having an up to date version of Protobuf. This would unblock updating several dependent packages.

:link: 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
  • 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:

:link: 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.

:link: Early Testing (Optional)

Do you require ‘QA Blueprint’ support? N

:link: 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

:link: User Experience

Users will benefit from having newer packages available that are currently blocked on the stale protobuf version

:link: 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

:link: 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

:link: Documentation

N/A (not a System Wide Change)

:link: Release Notes

Last edited by @amoloney 2024-12-24T15:58:17Z

Last edited by @amoloney 2024-12-24T15:58:17Z

How do you feel about the proposal as written?

  • Strongly in favor
  • In favor, with reservations
  • Neutral
  • Opposed, but could be convinced
  • Strongly opposed
0 voters

If you are in favor but have reservations, or are opposed but something could change your mind, please explain in a reply.

We want everyone to be heard, but many posts repeating the same thing actually makes that harder. If you have something new to say, please say it. If, instead, you find someone has already covered what you’d like to express, please simply give that post a :heart: instead of reiterating. You can even do this by email, by replying with the heart emoji or just “+1”. This will make long topics easier to follow.

Please note that this is an advisory “straw poll” meant to gauge sentiment. It isn’t a vote or a scientific survey. See About the Change Proposals category for more about the Change Process and moderation policy.

This would be incredibly helpful for me, I have been trying to update the python3-google packages, however for them to built on rawhide they need py3.13, and the releases that have that, also need newer versions of protobuf.

1 Like

This change proposal has now been submitted to FESCo with ticket #3336 for voting.

To find out more, please visit our Changes Policy documentation.

This change has been accepted by FESCo for Fedora Linux 42. A full list of approved changes to date can be found on the Change Set Page.

To find out more about how our changes policy works, please visit our docs site.

1 Like