From 18baa3c05a6fcfa73733dc7bcba68e14f09eda18 Mon Sep 17 00:00:00 2001 From: Protobuf Team Bot Date: Wed, 6 Sep 2023 06:06:48 -0700 Subject: [PATCH] Adds "Editions: Life of a FeatureSet" to the GitHub code repository. PiperOrigin-RevId: 563082121 --- docs/design/editions/README.md | 2 +- .../editions/editions-life-of-a-featureset.md | 635 ++++++++++++++++++ ...editions-life-of-a-featureset-image-01.png | Bin 0 -> 20510 bytes ...editions-life-of-a-featureset-image-03.png | Bin 0 -> 32658 bytes ...editions-life-of-a-featureset-image-04.png | Bin 0 -> 57321 bytes 5 files changed, 636 insertions(+), 1 deletion(-) create mode 100644 docs/design/editions/editions-life-of-a-featureset.md create mode 100644 docs/design/editions/images/editions-life-of-a-featureset-image-01.png create mode 100644 docs/design/editions/images/editions-life-of-a-featureset-image-03.png create mode 100644 docs/design/editions/images/editions-life-of-a-featureset-image-04.png diff --git a/docs/design/editions/README.md b/docs/design/editions/README.md index be6e69156b..2e02f09bff 100644 --- a/docs/design/editions/README.md +++ b/docs/design/editions/README.md @@ -21,4 +21,4 @@ The following topics are in this repository: * [What are Protobuf Editions?](what-are-protobuf-editions.md) * [Life of an Edition](life-of-an-edition.md) -* [Edition Naming](edition-naming.md) +* [Editions: Life of a FeatureSet](editions-life-of-a-featureset.md) \ No newline at end of file diff --git a/docs/design/editions/editions-life-of-a-featureset.md b/docs/design/editions/editions-life-of-a-featureset.md new file mode 100644 index 0000000000..fd4e861935 --- /dev/null +++ b/docs/design/editions/editions-life-of-a-featureset.md @@ -0,0 +1,635 @@ +# Editions: Life of a FeatureSet + +**Author:** [@mkruskal-google](https://github.com/mkruskal-google) + +**Approved:** 2023-08-17 + +## Background + +Outside of some minor spelling tweaks, our current implementation of features +has very closely followed the original design laid out in +[Protobuf Editions Design: Features](protobuf-editions-design-features.md). This +approach led to the creation of four different feature sets for each descriptor +though, and it's left under-specified who is responsible for generating these +(protoc, plugins, runtimes), who has access to them, and where they need to be +propagated to. + +*Exposing Editions Feature Sets* (not available externally) was a first attempt +to try to define some of these concepts. It locks down feature visibility to +protoc, generators, and runtimes. Users will only be exposed to them indirectly, +via codegen changes or runtime helper functions, in order to avoid Hyrum's law +cementing every decision we make about them. We (incorrectly) assumed that the +protoc frontend would be able to calculate all the feature sets and then +propagate all four sets to the generators, who would then forward the fully +resolved runtime features to the runtime. This had the added benefit that we +could treat our C++ feature resolution logic as a source-of-truth and didn't +have to reimplement it identically in every language we support. + +*Editions: Runtime Feature Set Defaults* (not available externally) was a +follow-up attempt to specifically handle the default feature sets of an edition. +We had realized that we would need proto2/proto3 default features in each +language to safely roll out editions, and that languages supporting descriptor +pools would have cases that bypass protoc entirely. The solution we arrived at +was that we should continue using the protoc frontend as the source-of-truth, +and propagate these defaults down to the necessary runtimes. This would fix the +proto2/proto3 issue, and at least provide some utilities to make the situation +easier for descriptor pool users. + +[Protobuf Editions Design: Features](protobuf-editions-design-features.md) +defines the feature resolution algorithm, which can be summarized by the +following diagram: + +![Feature resolution diagram](./images/editions-life-of-a-featureset-image-01.png) + +Feature resolution for a given descriptor starts by using the proto file's +edition and the feature schemas to generate the default feature set. It then +merges all of the parent features from top to bottom, merging the descriptor's +features last. + +## Glossary + +We will be discussing features **a lot** in this document, but the meaning +behind the word can vary in some subtle ways depending on context. Whenever it's +ambiguous, we will stick to qualifying these according to the following +definitions: + +* **Global features** - The features contained directly in `FeatureSet` as + fields. These apply to the protobuf language itself, rather than any + particular runtime or generator. + +* **Generator features** - Extensions of `FeatureSet` owned by a specific + runtime or generator. + +* **Feature resolution** - The process of applying the algorithm laid out in + [Protobuf Editions Design: Features](protobuf-editions-design-features.md). + This means that edition defaults, parent features, and overrides have all + been merged together. After resolution, every feature should have an + explicit value. + + * **Unresolved features** - The features a user has explicitly set on + their descriptors in the `.proto` file. These have not gone through + feature resolution and are a minimal representation that require more + knowledge to be useful. + + * **Resolved features** - Features that have gone through feature + resolution, with defaults and inheritance applied. These are the only + feature sets that should be used to make decisions. + +* **Option Retention** - We support a retention specification on all options + (see + [here](https://protobuf.dev/programming-guides/proto3#option-retention)), + including features + + * **Source features** - The features available to protoc and generators, + before option retention has been applied. These can be either resolved + or unresolved. + + * **Runtime features** - The features available to runtimes after option + retention has been applied. These can be either resolved or unresolved. + +## Problem Description + +The flaw that all of these design documents suffer from is that protoc **can't** +be the universal source-of-truth for feature resolution under the original +design. For global features, there's of course no issue (protoc has a +bootstrapping setup for `descriptor.proto`` and always knows the global feature +set). For generator features though, we depend on [imports to make them +discoverable](protobuf-editions-design-features.md#specification-of-an-edition). + +If a user is actually overriding one of these features, there will necessarily +be an import and therefore protoc will be able to discover generator features +and handle resolution. However, if the user is ok with the edition defaults +there's no need for an import. Without the import, protoc has **no way of +knowing** that those generator features exist in general. We could hardcode the +ones we own, but that just pushes the problem off to third-party plugins. We +could also force proto owners to include imports for *every* (transitive) +language they generate code to, even if they're unused, but that would be very +disruptive and isn't practical or idiomatic. + +Pushing the source-of-truth to the generators makes things a little better, +since they each know exactly what feature file needs to be included. There's no +longer any knowledge gap, and we don't need to rely on imports to discover the +feature extension. Additionally, many of our generators are written in C++ (even +non-built-in plugins), so we could at least reuse our existing feature +resolution utility for all of those and limit the amount of duplication +necessary. However, there's still a code-size issue with this approach. As +described in the previous documents, we would need to send four feature sets for +**every** descriptor to the runtime (i.e. in the generator request and embedded +as a serialized string). We wouldn't be able to use inheritance or references to +minimize the cost, and every generator that embeds a `FileDescriptorProto` into +its gencode would see a massive code-size increase. + +There's also still the issue of descriptor pools that need to be able to build +descriptors at runtime. These are typically power users (and our own unit-tests) +doing very atypical things and bypassing protoc entirely. In previous documents +we've attempted to push some of the cost onto them by explicitly not giving them +feature resolution. They would have to specify every feature on every +descriptor, and would not be able to use edition defaults or inheritance. +However, this cost is fairly high and it also makes the `edition` field +meaningless. Any missing feature would be a runtime error, and there would be no +concept of "edition". This creates an inconsistent experience for developers, +where they think in terms of editions in one context and then throw it out in +another. Also, it would mean that we have two distinct ways of specifying a +`FileDescriptorProto``: with unresolved features meant to only go through +protoc, and with fully resolved features meant to always bypass protoc. +Round-tripping descriptors would become difficult or impossible. + +The following image attempts illustrates the issue: + +![Diagram showing two generators and two runtimes](./images/editions-life-of-a-featureset-image-03.png) + +Here, a proto file is used in both A and B runtimes. The schema itself only +overrides features for A though, and doesn't declare an import on B's features. +This means that protoc doesn't know about B's features, and Generator B will +need to resolve them. Additionally, dynamic messages in both A and B runtimes +have issues because they've bypassed protoc and don't have any way to follow the +feature resolution spec. + +### Requirements + +The following minimal feature sets are required by protoc: + +* **Resolved global source features** - to make proto-level decisions +* **Unresolved global source features** - for validation + +For each generator: + +* **Resolved generator source features** - to make language-specific codegen + decisions +* **Unresolved generator source features** - for validation +* **Resolved global source features** - to make more complex decisions + +For each runtime: + +* **All resolved runtime features** - for making runtime decisions +* **All unresolved runtime features** - for round-trip behavior and debugging + +With some additional requirements on an ideal solution: + +* **Minimal code-size costs** - code size bloat can easily block the rollout + of editions, and once those limits are hit we don't have great solutions + +* **Minimal performance costs** - we want a solution that avoids any + unnecessary CPU or RAM regressions + +* **Minimal code duplication** - obviously we want to minimize this, but where + we can't, we need a suitable test strategy to keep the duplication in sync + +* **Runtime support for dynamic messages** - while dynamic messages are a + less-frequently-used feature, they are a critical feature used by a lot of + important systems. Our solution should avoid making them harder to use in + any runtime that supports them. + +## Recommended Solution + +Our long-term recommendation here is to support and use feature resolution in +every stage in the life of a FeatureSet. Every runtime, generator, and protoc +itself will all handle feature resolution independently, only sharing unresolved +features between each other. This will necessarily mean duplication across +nearly every language we support, and the following sections will go into detail +about strategies for managing this. + +The main justification for this duplication is the simple fact that *edition +defaults* will be needed almost everywhere. The generators need defaults for +*their* features to get fully resolved generator features to make decisions on, +and can't get them from protoc in every case. The runtimes need defaults for +both global and generator features in order to honor editions in dynamic +messages and to keep RAM costs down (e.g. the absence of feature overrides +should result in a reference to some shared default object). Since the +calculation of edition defaults is by far the most complicated piece of feature +resolution, with the remainder just being proto merges, it makes everything +simpler to understand if we just duplicate the entire algorithm. + +#### Pros + +* Resolved feature sets will never be publicly exposed + + * Our APIs will be significantly simpler, cutting the number of different + types of feature sets by a factor of 2 + + * There will be no ambiguity about what a `FeatureSet` object *means*. It + will always either be unresolved (outside of protobuf code) or fully + resolved on all accessible features (inside protobuf code). + + * RAM and code-size costs will be minimal, since we'll only be storing and + propagating the minimal amount of information (unresolved features) + + * Combats Hyrum's law by allowing us to provide wrappers around resolved + features everywhere, instead of letting people depend on them directly + +* **Minimal** duplication on top of what's already necessary (edition + defaults). + +* Dynamic messages will be treated on equal footing to proto files + +* The necessary feature dependencies will always be available in the + appropriate context + +* We can simplify the current implementation since protoc won't need to handle + resolution of imported features. + +#### Cons + +* Requires duplication of feature resolution in every runtime and every unique + generator language + + * This means building out additional infrastructure to enforce + cross-language conformance + +### Runtimes Without Reflection + +There are various runtimes that do not support reflection or dynamic messages at +all (e.g. Java lite, ObjC). They typically embed the "feature-like" information +they need directly into custom objects in the gencode. In these cases, the +problem becomes a lot simpler because they *don't need* the full FeatureSet +objects. We **don't** need to duplicate feature resolution in the runtime, and +the generator can just directly embed the fully resolved features values needed +by the runtime (of course, the generator might still need duplicate logic to get +those). + +### Staged Rollout for Dynamic Messages + +Long-term, we want to be able to handle feature resolution at run-time for any +runtime that supports reflection (and therefore needs FeatureSet objects) to +reduce code-size/RAM costs and support dynamic messages. However, in any +language where these costs are less critical, a staged rollout could be +appropriate. Here, the generator would embed the serialized resolved source +features into the gencode along with the rest of the options. We would use the +`raw_features` field (which should eventually be deleted) to also include the +unresolved features for reflection. + +This would allow us to implement and test editions, and unblock the migration of +all non-dynamic cases. A follow-up optimization at a later stage could push this +down the runtime, and only embed unresolved features in the gencode. + +Under this scenario, dynamic messages could still allow editions, as long as +fully-resolved features were provided on every descriptor. When we do implement +feature resolution, it will just be a matter of deleting redundant/unnecessary +features, but there should always be a valid transformation from fully-resolved +features to unresolved ones. + +### C++ Generators + +Generators written in C++ are in a better position since they don't require any +code duplication. They could be given visibility to our existing feature +resolution utility to resolve the features themselves. However, a better +alternative is to make improvements to this utility so that some helpers like +the ones we proposed in *Exposing Editions Feature Sets* can be used to access +the resolved features that *already exist*. + +Protoc works by first parsing the input protofiles and building them into a +descriptor pool. This is the frontend pass, where only the global features are +needed. For built-in languages, the resulting descriptors are passed directly to +the generator for codegen. For plugins, they're serialized into descriptor +protos, rebuilt in a new descriptor pool (in the generator process), and then +sent to the generator code for codegen. In both of these cases, a +`DescriptorPool` build of the protos is done from a binary that *necessarily* +links in the relevant generator features. + +Today, we discover features in the pool which are imported by the protos being +built. This has the hole we mentioned above where non-imported features can't be +discovered. Instead, we will pivot to a more explicit strategy for discovering +features. By default, `DescriptorPool` will only resolve the global features and +the C++ features (since this is the C++ runtime). A new method will be added to +`DescriptorPool` that allows new feature sets to replace the C++ features for +feature resolution. Generators will register their features via a virtual method +in `CodeGenerator` and the generator's pool build will take those into account +during feature resolution. + +There are a few ways to actually define this registration, which we'll leave as +implementation details. Some examples that we're considering include: + +* Have the generator provide its own `DescriptorPool` containing the relevant + feature sets +* Have the generator provide a mapping of edition -> default `FeatureSet` + objects + +Expanding on previous designs, we will provide the following API to C++ +generators via the `CodeGenerator` class: + +They will have access to all the fully-resolved feature sets of any descriptor +for making codegen decisions, and they will have access to their own unresolved +generator features for validation. The `FileDescriptor::CopyTo` method will +continue to output unresolved runtime features, which will become unresolved +source features after option retention stripping (which generators should +already be doing), for embedding in the gencode for runtime use. + +#### Example + +As an example, let's look at some hypothetical language `lang` and how it would +introduce its own features. First, if it needs features at runtime it would +create a `lang_features.proto` file in its runtime directory and bootstrap the +gencode the same as it does for `descriptor.proto`. It would then *also* +bootstrap C++ gencode using a special C++-only build of protoc. This can be +illustrated in the following diagram: + +![Diagram showing how a language introduces its own features](./images/editions-life-of-a-featureset-image-04.png) + +This illustrates the bootstrapping setup for a built-in C++ generator. If +generator features weren't needed in the runtime, that red box would disappear. +If this were a separate plugin, the "plugin" box would simply be moved out of +`protoc` and `protoc` could also serve as `protoc_cpp`. + +If `lang` didn't need runtime features, we would simply put the features proto +in the `lang` generator and only generate C++ code (using the same bootstrapping +technique as above). + +After the generator registers `lang_features.proto` with the DescriptorPool, the +`FeatureSet` objects returned by `GetFeatures` will always have fully resolved +`lang` features. + +### Non-C++ Generators + +As we've shown above, non-C++ generators are already in a situation where they'd +need to duplicate *some* of the feature resolution logic. With this solution, +they'd need to duplicate much more of it. The `GeneratorRequest` from protoc +will provide the full set of *unresolved* features, which they will need to +resolve and apply retention stripping to. + +**Note:** If we're able to implement bidirectional plugin communication, the +[Bidirectional Plugins](#bidirectional-plugins) alternative may be a simpler +solution for non-C++ generators that *don't* need features at runtime. Ones that +need it at runtime will need to reimplement feature resolution anyway, so it may +be less useful. + +One of the trickier pieces of the resolution logic is the calculation of edition +defaults, which requires a lot of reflection. One of the ideas mentioned above +in [C++ Generators](#c++-generators) could actually be repurposed to avoid +duplication of this in non-C++ generators as well. The basic idea is that we +start by defining a proto: + +``` +message EditionFeatureDefaults { + message FeatureDefaults { + string edition = 1; + FeatureSet defaults = 2; + } + repeated FeatureDefaults defaults = 1; + string minimum_edition = 2; + string maximum_edition = 3; +} +``` + +This can be filled from any feature set extension to provide a much more usable +specification of defaults. We can package a genrule that converts from feature +protos to a serialized `EditionFeatureDefaults` string, and embed this anywhere +we want. Both C++ and non-C++ generators/runtimes could embed this into their +code. Once this is known, feature resolution becomes a lot simpler. The hardest +part is creating a comparator for edition strings. After that, it's a simple +search for the lower bound in the defaults, followed by some proto merges. + +### Bootstrapping + +One major complication we're likely to hit revolves around our bootstrapping of +`descriptor.proto`. In languages that have dynamic messages, one codegen +strategy is to embed the `FileDescriptorProto` of the file and then parse and +build it at the beginning of runtime. For `descriptor.proto` in particular, +handling options can be very challenging. For example, in Python, we +intentionally strip all options from this file and then assume that the options +descriptors always exist during build (in the presence of serialized options). +Since features *are* options, this poses a challenge that's likely to vary +language by language. + +We will likely need to special-case `descriptor.proto` in a number of ways. +Notably, this file will **never** have any generator feature overrides, since it +can't import those files. In every other case, we can safely assume that +generator features exist in a fully resolved feature set. But for +`descriptor.proto`, at least at the time it's first being built by the runtime, +this extension won't be present. We also can't figure out edition defaults at +that point since we don't have the generator features proto to reflect over. + +One possible solution would be to codegen extra information specifically for +this bootstrapped proto, similar to what we suggested in *Editions: Runtime +Feature Set Defaults* for edition defaults. That would allow the generator to +provide enough information to build `descriptor.proto` during runtime. As long +as these special cases are limited to `descriptor.proto` though, it can be left +to a more isolated language-specific discussion. + +### Conformance Testing + +Code duplication means that we need a test strategy for making sure everyone +stays conformant. We will need to implement a conformance testing framework for +validating that all the different implementations of feature resolution agree. +Our current conformance tests provide a good model for accomplishing this, even +though they don't quite fit the problem (they're designed for +parsing/serialization). There's a runner binary that can be hooked up to another +binary built in any language. It sends a `ConformanceRequest` proto with a +serialized payload and set of instructions, and then receives a +`ConformanceResponse` with the result. In the runner, we just loop over a number +of fixed test suites to validate that the supplied binary is conformant. + +We would want a similar setup here for language-agnostic testing. While we could +write a highly focused framework just for feature resolution, a more general +approach may set us up better in the future (e.g. option retention isn't +duplicated now but could have been implemented that way). This will allow us to +test any kind of transformation to descriptor protos, such as: proto3_optional, +group/DELIMITED, required/LEGACY_REQUIRED. The following request/response protos +describe the API: + +``` +message DescriptorConformanceRequest { + // The file under test, pre-transformation. + FileDescriptorProto file = 1; + + // The pool of dependencies and feature files required for build. + FileDescriptorSet dependencies = 2; +} + +message DescriptorConformanceResponse { + // The transformed file. + FileDescriptorProto file = 1; + + // Any additional features added during build. + FileDescriptorSet added_features = 2; +} +``` + +Each test point would construct a proto file, its dependencies, and any feature +files to include in feature resolution. The conformance binary would use this to +fully decorate the proto file with resolved features, and send the result back +for comparison against our C++ source-of-truth. Any generator features added by +the binary will also need to be sent back to get matching results. + +### Documentation + +Because we're now asking third-party generator owners to handle feature +resolution on their own, we will need to document this. Specifically, we need to +open-source documentation for: + +* The algorithm described in + [Protobuf Editions Design: Features](protobuf-editions-design-features.md) +* The conformance test framework and how to use it (once it's implemented) + +On the other hand, we will have significantly less documentation to write about +which feature sets to use where. Descriptor protos will *always* contain +unresolved features, and C++ generators will have a simple API for getting the +fully-resolved features. + +## Considered Alternatives + +### Use Generated Pool for C++ Generators + +*Note: this was part of the original proposal, but has been refactored (see +cons)* + +Generators written in C++ are in a better position since they don't require any +code duplication. They could be given visibility to our existing feature +resolution utility to resolve the features themselves. However, a better +alternative is to make improvements to this utility so that some helpers like +the ones we proposed in *Exposing Editions Feature Sets* can be used to access +the resolved features that *already exist*. + +Protoc works by first parsing the input protofiles and building them into a +descriptor pool. This is the frontend pass, where only the global features are +needed. For built-in languages, the resulting descriptors are passed directly to +the generator for codegen. For plugins, they're serialized into descriptor +protos, rebuilt in a new descriptor pool (in the generator process), and then +sent to the generator code for codegen. In both of these cases, a +`DescriptorPool` build of the protos is done from a binary that *necessarily* +links in the relevant generator features. + +However, the FeatureSets we supply to generators are transformed to the +generated pool (i.e. `FeatureSet` objects rather than `Message`) where the +generator features will always exist. We've decided that there's no longer any +reason to scrape the imports for features, but we *could* scrape the generated +pool for them. This essentially means that when you call `MergeFeatures` to get +a `FeatureSet`, the returned set is fully resolved *with respect to the current +generated pool*. This is a much clearer contract, and has the benefit that the +features visible to every C++ generator would automatically be populated with +the correct generator features for them to use. + +Expanding on previous designs, we will provide the following API to C++ +generators via the `CodeGenerator` class: + +They will have access to all the fully-resolved feature set of any descriptor +for making codegen decisions, and they will have access to their own unresolved +generator features for validation. The `FileDescriptor::CopyTo` method will +continue to output unresolved runtime features, which will become unresolved +source features after option retention stripping (which generators should +already be doing), for embedding in the gencode for runtime use. + +#### Pros + +* Automatic inclusion of any features used in a binary +* Features will never be partially resolved + +#### Cons + +* Implicit action at a distance could cause unexpected behaviors +* Uses globals, making testing awkward +* Not friendly to `DescriptorPool` cases who wouldn't necessarily want every + linked-in feature to go through feature resolution. + +### Default Placeholders + +Protoc continues to propagate and resolve core features and imported language +level features. For language level features that protoc does not know about +(that is, not imported), a core placeholder feature indicating that the default +for a given edition should be respected can be propagated. + +``` +message FeatureSet { + optional string unknown_feature_edition_default = N; // e.g. 2023 +} +``` + +Instead of duplicating the entire feature resolution algorithm, plugins must +only provide a utility mapping editions to their default FeatureSet using the +generator feature files and optionally caching them. + +For example: + +``` +if features.hasUtf8Validation(): + return features.getUtf8Validation() +else: + default_features = getDefaultFeatures(features.getUnknownFeatureEditionDefault()) + return default_features.getUtf8Validation() +``` + +#### Pros + +* Less duplicate logic for propagating features + +#### Cons + +* Descriptor proto bloat that is technically redundant with + `FileDescriptorProto` edition. +* Confusing that some but not all features are fully resolved +* Duplicated logic to resolve edition default from edition # +* Code-size and memory costs associated with the original approach still exist +* Still doesn't help with the descriptor pool case, which may require + duplicate logic. + +### Bidirectional Plugins + +Since the generators know the features they care about, we could have some kind +of bidirectional communication between protoc and the plugins. The plugin would +start by telling protoc the features it wants added, and then protoc would be +able to fully resolve all feature sets before sending them off. This has the +added benefit that it would allow us to do more interesting enhancements in the +future. For example, the plugin could send its minimum required edition and +other requirements *before* actually starting the build. + +**Note:** Bidirectional plugins could still be implemented for other purposes. +This "alternative" is specifically for *using* that communication to pass +missing feature specs. + +#### Pros + +* Eliminates code duplication problem +* Provides infrastructure to enable future enhancements + +#### Cons + +* Doesn't address the confusing API we have now where it's unclear what kind + of features are contained in the `features` field +* Doesn't address the code-size and memory costs during runtime +* Doesn't address the descriptor pool case + +### Central Feature Registry + +Instead of relying on generators and imports to supply feature specs, we could +pivot to a central registry of all known features. Instead of simply claiming an +extension number, generator owners could be required to submit all the feature +protos to a central repository of feature protos. This would give protoc access +to **all** features. There would be two ways to implement this: + +* If it were built *into* protoc, we could avoid requiring any import + statements. We would probably still want an extension point to avoid adding + a dependency to `descriptor.proto`, but instead of `features.(pb.cpp)` they + would be something more like `features.(pb).cpp`. + +* We could keep the current extension and import scheme. Proto files would + still need to import the features they override, but protoc would depend on + all of them and populate defaults for unspecified ones. + +#### Pros + +* Makes all features easily discoverable wherever they're needed +* Eliminates the code duplication problem +* Gives us an option to remove the import statements, which are likely to + cause future headaches (in the edition zero LSC, in maintenance afterward, + and also for proto files that need to support a lot of third-party + runtimes). + +#### Cons + +* Doesn't address the code-size and memory costs +* Creates version skew problems +* Confusing ownership semantics + +### Do Nothing + +Doing nothing would basically mean abandoning editions. The current design +doesn't (and can't) work for third party generators. They'd be left to duplicate +the logic themselves with no guidance or support from us. We would also see +code-size and RAM bloat (except in C++) that would be very difficult to resolve. + +#### Pros + +* Less work + +#### Cons + +* Worse in every other way diff --git a/docs/design/editions/images/editions-life-of-a-featureset-image-01.png b/docs/design/editions/images/editions-life-of-a-featureset-image-01.png new file mode 100644 index 0000000000000000000000000000000000000000..4db8c5177e026ccaac000fa9e262914a25e3f52f GIT binary patch literal 20510 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 literal 0 HcmV?d00001 diff --git a/docs/design/editions/images/editions-life-of-a-featureset-image-03.png b/docs/design/editions/images/editions-life-of-a-featureset-image-03.png new file mode 100644 index 0000000000000000000000000000000000000000..3160764e0d1e57ae36cbb916cf481dc8b381c519 GIT binary patch literal 32658 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 KvqG`Ap8pG|`EN4- literal 0 HcmV?d00001 diff --git a/docs/design/editions/images/editions-life-of-a-featureset-image-04.png b/docs/design/editions/images/editions-life-of-a-featureset-image-04.png new file mode 100644 index 0000000000000000000000000000000000000000..5677c2643c095defd365a05660af338f9d185dd7 GIT binary patch literal 57321 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�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