Elly Fong-Jones | d5c233a | 2019-07-29 19:48:27 | [diff] [blame] | 1 | # Flag Expiry |
| 2 | |
| 3 | This document outlines the process by which flags in chromium expire and are |
| 4 | removed from the codebase, and describes which flags are about to expire. This |
| 5 | is the authoritative list of flags that are expiring and being removed. This |
| 6 | document only describes entries in chrome://flags, *not* command-line switches |
| 7 | (commonly also called command-line flags). This process does not cover |
| 8 | command-line switches and there continue to be no guarantees about those. |
| 9 | |
| 10 | [TOC] |
| 11 | |
| 12 | ## Do Not Depend On Flags |
| 13 | |
| 14 | If you are using (or think you need to use) a flag to configure Chromium for |
| 15 | your use case, please [file a bug] or email flags-dev@, because that flag will |
| 16 | likely be removed at some point. |
| 17 | |
| 18 | Flags have never been a supported configuration surface in Chromium, and we have |
| 19 | never guaranteed that any specific flag will behave consistently or even |
| 20 | continue to exist. This document describes a process for removing flags that |
| 21 | have been around for long enough that users *might* have come to rely on their |
| 22 | ongoing existence in a way that hopefully minimizes pain, but Chromium |
| 23 | developers are free to change the behavior of or remove flags at any time. In |
| 24 | particular, just because a flag will expire through this process does not mean a |
| 25 | developer will not remove it earlier than this process specifies. |
| 26 | |
| 27 | ## The Process |
| 28 | |
| 29 | After each milestone's branch point: |
| 30 | |
| 31 | 1. The flags team chooses a set of flags to begin expiring, from the list |
| 32 | produced by `tools/flags/list-flags.py --expired-by $MSTONE`. In the steady |
| 33 | state, when there is not a big backlog of flags to remove, this set will be |
| 34 | the entire list of flags that are `expired-by $MSTONE`. |
| 35 | 2. The flags team hides the flags in this set by default from `chrome://flags`, |
| 36 | and adds a flag `temporary-unexpire-flags-M$MSTONE` and a base::Feature |
| 37 | `TemporaryUnexpireFlagsM$MSTONE` which unhide these flags. When hidden from |
| 38 | `chrome://flags`, all the expired flags will behave as if unset, so users |
| 39 | cannot be stuck with a non-default setting of a hidden flag. |
| 40 | 3. After two further milestones have passed (i.e. at $MSTONE+2 branch), the |
| 41 | temporary unhide flag & feature will be removed (meaning the flags are now |
| 42 | permanently invisible), and TPMs will file bugs against the listed owners to |
| 43 | remove the flags and clean up the backing code. |
| 44 | |
| 45 | There are other elements of this process not described here, such as emails to |
| 46 | flags-dev@ tracking the status of the process. |
| 47 | |
| 48 | ## The Set |
| 49 | |
| 50 | In M77, the following flags are being hidden as the second step of this process. |
| 51 | If you are using one of these flags for some reason, please get in touch with |
| 52 | the flags team (via flags-dev@) and/or the listed owner(s) of that flag. This |
| 53 | list will be updated at each milestone as we expire more flags. This is the |
| 54 | authoritative source of the expiry set for a given milestone. |
| 55 | |
| 56 | * allow-remote-context-for-notifications |
Elly Fong-Jones | d5c233a | 2019-07-29 19:48:27 | [diff] [blame] | 57 | * android-files-in-files-app |
| 58 | * app-service-ash |
| 59 | * arc-available-for-child |
| 60 | * arc-boot-completed-broadcast |
| 61 | * arc-custom-tabs-experiment |
| 62 | * arc-documents-provider |
| 63 | * arc-graphics-buffer-visualization-tool |
| 64 | * arc-native-bridge-experiment |
| 65 | * arc-usb-host |
| 66 | * arc-vpn |
| 67 | * ash-enable-pip-rounded-corners |
Elly Fong-Jones | d5c233a | 2019-07-29 19:48:27 | [diff] [blame] | 68 | * autofill-always-show-server-cards-in-sync-transport |
Elly Fong-Jones | d5c233a | 2019-07-29 19:48:27 | [diff] [blame] | 69 | * autofill-enable-company-name |
| 70 | * autofill-enable-local-card-migration-for-non-sync-user |
| 71 | * autofill-enforce-min-required-fields-for-heuristics |
| 72 | * autofill-enforce-min-required-fields-for-query |
| 73 | * autofill-enforce-min-required-fields-for-upload |
| 74 | * autofill-restrict-formless-form-extraction |
| 75 | * autofill-rich-metadata-queries |
| 76 | * autofill-settings-split-by-card-type |
| 77 | * background-task-component-update |
| 78 | * calculate-native-win-occlusion |
| 79 | * cct-module-cache |
| 80 | * cct-module-custom-request-header |
| 81 | * cct-module-dex-loading |
| 82 | * cct-module-post-message |
| 83 | * cct-module-use-intent-extras |
Elly Fong-Jones | d5c233a | 2019-07-29 19:48:27 | [diff] [blame] | 84 | * crostini-usb-support |
Elly Fong-Jones | d5c233a | 2019-07-29 19:48:27 | [diff] [blame] | 85 | * document-passive-wheel-event-listeners |
| 86 | * enable-app-list-search-autocomplete |
| 87 | * enable-arc-cups-api |
| 88 | * enable-arc-unified-audio-focus |
Elly Fong-Jones | d5c233a | 2019-07-29 19:48:27 | [diff] [blame] | 89 | * enable-autofill-credit-card-upload-editable-cardholder-name |
| 90 | * enable-autofill-credit-card-upload-editable-expiration-date |
| 91 | * enable-autofill-do-not-upload-save-unsupported-cards |
| 92 | * enable-autofill-import-dynamic-forms |
| 93 | * enable-autofill-import-non-focusable-credit-card-forms |
| 94 | * enable-autofill-local-card-migration-uses-strike-system-v2 |
Elly Fong-Jones | d5c233a | 2019-07-29 19:48:27 | [diff] [blame] | 95 | * enable-autofill-send-experiment-ids-in-payments-rpcs |
Elly Fong-Jones | d5c233a | 2019-07-29 19:48:27 | [diff] [blame] | 96 | * enable-bulk-printers |
| 97 | * enable-chromeos-account-manager |
| 98 | * enable-custom-mac-paper-sizes |
| 99 | * enable-encryption-migration |
| 100 | * enable-experimental-accessibility-features |
| 101 | * enable-experimental-accessibility-language-detection |
| 102 | * enable-fs-nosymfollow |
| 103 | * enable-google-branded-context-menu |
| 104 | * enable-immersive-fullscreen-toolbar |
Elly Fong-Jones | d5c233a | 2019-07-29 19:48:27 | [diff] [blame] | 105 | * enable-myfiles-volume |
| 106 | * enable-native-controls |
| 107 | * enable-native-google-assistant |
| 108 | * enable-reopen-tab-in-product-help |
| 109 | * enable-safe-browsing-ap-download-verdicts |
Elly Fong-Jones | d5c233a | 2019-07-29 19:48:27 | [diff] [blame] | 110 | * enable-webrtc-hw-vp9-encoding |
| 111 | * enable-webrtc-pipewire-capturer |
| 112 | * enable-zero-state-suggestions |
| 113 | * enable_messages_web_push |
| 114 | * force-use-chrome-camera |
| 115 | * foreground-notification-manager |
| 116 | * gdi-text-printing |
| 117 | * handwriting-gesture |
| 118 | * manual-password-generation-android |
Elly Fong-Jones | d5c233a | 2019-07-29 19:48:27 | [diff] [blame] | 119 | * offline-indicator-always-http-probe |
| 120 | * offline-pages-ct-suppress-completed-notification |
| 121 | * offline-pages-load-signal-collecting |
| 122 | * offline-pages-resource-based-snapshot |
| 123 | * omnibox-experimental-keyword-mode |
| 124 | * on-the-fly-mhtml-hash-computation |
Elly Fong-Jones | d5c233a | 2019-07-29 19:48:27 | [diff] [blame] | 125 | * pdf-annotations |
| 126 | * postscript-printing |
Elly Fong-Jones | d5c233a | 2019-07-29 19:48:27 | [diff] [blame] | 127 | * rewrite-leveldb-on-deletion |
| 128 | * session-restore-prioritizes-background-use-cases |
| 129 | * smart-text-selection |
| 130 | * stop-in-background |
Elly Fong-Jones | d5c233a | 2019-07-29 19:48:27 | [diff] [blame] | 131 | * ui-show-composited-layer-borders |
| 132 | * unfiltered-bluetooth-devices |
| 133 | * unsafely-treat-insecure-origin-as-secure |
| 134 | * use_messages_google_com_domain |
| 135 | * use_messages_staging_url |
Elly Fong-Jones | d5c233a | 2019-07-29 19:48:27 | [diff] [blame] | 136 | * wake-on-wifi-packet |
| 137 | |
| 138 | [file a bug]: https://new.crbug.com |