You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<ahref=https://github.com/protocolbuffers/protobuf/issues/newclass=td-page-meta--project-issuetarget=_blankrel=noopener><iclass="fa-solid fa-list-check fa-fw"></i> Create project issue</a></div><divclass=td-toc><navid=TableOfContents><ul><li><ahref=#editions>Best Practices Specific to Editions</a></li></ul></nav></div></aside><mainclass="col-12 col-md-9 col-xl-8 ps-md-5" role=main><navaria-label=breadcrumbclass=td-breadcrumbs><olclass=breadcrumb><liclass=breadcrumb-item><ahref=/best-practices/>Proto Best Practices</a></li><liclass="breadcrumb-item active" aria-current=page>Avoid Cargo Culting</li></ol></nav><divclass=td-content><h1>Avoid Cargo Culting</h1><divclass=lead>Avoid using features where they are not needed.</div><headerclass=article-meta></header><p>Do not
settings in proto files. If<br>you are creating a new proto file based on existing schema definitions, don’t
9
-
apply option settings except for those that you understand the need for.</p><h2id=editions>Best Practices Specific to Editions</h2><p>Avoid applying <ahref=/editions/features>editions features</a>
8
+
settings in proto files. If you are creating a new proto file based on existing
9
+
schema definitions, don’t apply option settings except for those that you
10
+
understand the need for.</p><h2id=editions>Best Practices Specific to Editions</h2><p>Avoid applying <ahref=/editions/features>editions features</a>
10
11
except when they’re actually necessary. Features in <code>.proto</code> files signal the
11
12
use of either experimental future behaviors or deprecated past behaviors. Best
12
13
practices for the latest edition will always be the default. New proto schema
If you are running an older version of PHP, you can install a previous release of the protobuf PHP extension by running pecl install protobuf-3.23.3.
25
25
Dropping Ruby 2.6 Support As per our official Ruby support policy, we will be dropping support for Ruby 2.</description></item><item><title>Changes Announced on June 26, 2024</title><link>https://protobuf.dev/news/2024-06-26/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2024-06-26/</guid><description>Dropping Support for Building Protobuf Java from Source with Maven We are planning to drop support for building Protobuf Java OSS from source with the Maven build system in the Protobuf Java 4.28 release. This has been marked deprecated in the 4.27 release.
26
26
After this point, you can continue to use Bazel, or another build system, to build Protobuf. You can read more about building from source in the Protobuf Java README.</description></item><item><title>Changes Announced on June 29, 2023</title><link>https://protobuf.dev/news/2023-06-29/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2023-06-29/</guid><description>TL;DR: We are planning to release Protobuf Editions to the open source project in the second half of 2023. While there is no requirement to move from proto2/proto3 syntax to Editions syntax at initial release, we encourage you to plan a move in your software project&rsquo;s future timeline.
27
-
Protobuf Editions Protobuf Editions replace the proto2 and proto3 designations that we have used for Protocol Buffers. Instead of adding syntax = &quot;proto2&quot; or syntax = &quot;proto3&quot; at the top of proto definition files, you use an edition number, such as edition = &quot;2024&quot;, to specify the default behaviors your file will have.</description></item><item><title>Changes announced May 6, 2022</title><link>https://protobuf.dev/news/2022-05-06/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2022-05-06/</guid><description>Versioning We changed our versioning scheme to enable more-nimble updates to language-specific parts of Protocol Buffers. In the new scheme, each language has its own major version that can be incremented independently of other languages, as covered later in this topic with the Python release. The minor and patch versions, however, will remain coupled. This allows us to introduce breaking changes into some languages without requiring a bump of the major version in languages that do not experience a breaking change.</description></item><item><title>Changes Announced on November 7, 2024</title><link>https://protobuf.dev/news/2024-11-07/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2024-11-07/</guid><description>The following sections cover planned breaking changes in the v30 release, expected in 2025 Q1. Also included are some changes that aren&rsquo;t breaking but may require action on your part. These are in addition to those mentioned in the News article from October 2.
27
+
Protobuf Editions Protobuf Editions replace the proto2 and proto3 designations that we have used for Protocol Buffers. Instead of adding syntax = &quot;proto2&quot; or syntax = &quot;proto3&quot; at the top of proto definition files, you use an edition number, such as edition = &quot;2024&quot;, to specify the default behaviors your file will have.</description></item><item><title>Changes Announced on March 18, 2025</title><link>https://protobuf.dev/news/2025-03-18/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2025-03-18/</guid><description>Dropping Ruby 3.0 Support As per our official Ruby support policy, we will be dropping support for Ruby 3.0 and lower in Protobuf version 31, due to release in April, 2025. The minimum supported Ruby version will be 3.1.</description></item><item><title>Changes announced May 6, 2022</title><link>https://protobuf.dev/news/2022-05-06/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2022-05-06/</guid><description>Versioning We changed our versioning scheme to enable more-nimble updates to language-specific parts of Protocol Buffers. In the new scheme, each language has its own major version that can be incremented independently of other languages, as covered later in this topic with the Python release. The minor and patch versions, however, will remain coupled. This allows us to introduce breaking changes into some languages without requiring a bump of the major version in languages that do not experience a breaking change.</description></item><item><title>Changes Announced on November 7, 2024</title><link>https://protobuf.dev/news/2024-11-07/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2024-11-07/</guid><description>The following sections cover planned breaking changes in the v30 release, expected in 2025 Q1. Also included are some changes that aren&rsquo;t breaking but may require action on your part. These are in addition to those mentioned in the News article from October 2.
28
28
These describe changes as we anticipate them being implemented, but due to the flexible nature of software some of these changes may not land or may vary from how they are described in this topic.</description></item><item><title>Changes Announced on October 1, 2024</title><link>https://protobuf.dev/news/2024-10-01/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2024-10-01/</guid><description>Bazel and Proto Rules There are upcoming changes to the way that Bazel will work for protobuf builds. These changes require awareness in the first stage, and action by project owners before the second stage.
29
29
Stage 1 With the release of Bazel 8, proto rules (proto_library, cc_proto_library, java_proto_library, java_lite_proto_library, and py_proto_library) will be removed from the Bazel project. The will be added to the Protocol Buffers project in v29. Bazel will be updated to automatically use the rules from the protobuf project, so the change is initially a no-op for project owners.</description></item><item><title>Changes announced on October 10, 2023</title><link>https://protobuf.dev/news/2023-10-10/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2023-10-10/</guid><description>Protobuf Editions Features Documentation that introduces Protobuf Editions features is now available.</description></item><item><title>Changes Announced on October 2, 2024</title><link>https://protobuf.dev/news/2024-10-02/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2024-10-02/</guid><description>The following sections cover planned breaking changes in the v30 release, expected in 2025 Q1. These describe changes as we anticipate them being implemented, but due to the flexible nature of software some of these changes may not land or may vary from how they are described in this topic.
30
30
Changes in C++ C++ will bump its major version from 5.29.x to 6.30.x.
@@ -45,4 +45,5 @@ General Changes JSON Formatter Option Changes Starting in the 26.x line, the JSO
45
45
Java: includingDefaultValueFields() is replaced with alwaysPrintFieldsWithNoPresence(). C++: always_print_default_values is replaced with always_print_fields_with_no_presence=True. Py: including_default_value_fields=True is replaced with always_print_fields_with_no_presence=True. The new flag behaves identically to the old flag on proto3 messages, but no longer applies to proto2 optional fields.</description></item><item><title>News Announcements for Version 29.x</title><link>https://protobuf.dev/news/v29/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/v29/</guid><description>The following announcements are specific to Version 29.x. For information presented chronologically, see News.
46
46
Bazel and Proto Rules There are upcoming changes to the way that Bazel will work for protobuf builds. These changes require awareness in the first stage, and action by project owners before the second stage.
47
47
Stage 1 With the release of Bazel 8, proto rules (proto_library, cc_proto_library, java_proto_library, java_lite_proto_library, and py_proto_library) will be removed from the Bazel project.</description></item><item><title>News Announcements for Version 30.x</title><link>https://protobuf.dev/news/v30/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/v30/</guid><description>The following announcements are specific to Version 30.x. For information presented chronologically, see News.
48
-
The following sections cover planned breaking changes in the v30 release, expected in 2025 Q1. Also included are some changes that aren&rsquo;t breaking but may require action on your part. These describe changes as we anticipate them being implemented, but due to the flexible nature of software some of these changes may not land or may vary from how they are described in this topic.</description></item></channel></rss>
48
+
The following sections cover planned breaking changes in the v30 release, expected in 2025 Q1. Also included are some changes that aren&rsquo;t breaking but may require action on your part. These describe changes as we anticipate them being implemented, but due to the flexible nature of software some of these changes may not land or may vary from how they are described in this topic.</description></item><item><title>News Announcements for Version 31.x</title><link>https://protobuf.dev/news/v31/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/v31/</guid><description>The following announcements are specific to Version 31.x. For information presented chronologically, see News.
49
+
The following sections cover planned breaking changes in the v31 release, expected in 2025 Q2. Also included are some changes that aren&rsquo;t breaking but may require action on your part. These describe changes as we anticipate them being implemented, but due to the flexible nature of software some of these changes may not land or may vary from how they are described in this topic.</description></item></channel></rss>
0 commit comments