blob: 6b01898972441a388165779eaf35e4350919b003 [file] [log] [blame] [view]
Elly Fong-Jonesd5c233a2019-07-29 19:48:271# Flag Expiry
2
3This document outlines the process by which flags in chromium expire and are
4removed from the codebase, and describes which flags are about to expire. This
5is the authoritative list of flags that are expiring and being removed. This
6document only describes entries in chrome://flags, *not* command-line switches
7(commonly also called command-line flags). This process does not cover
8command-line switches and there continue to be no guarantees about those.
9
10[TOC]
11
12## Do Not Depend On Flags
13
Elly Fong-Jones94fc8632019-08-14 18:23:0314If you are a user or administrator of Chrome and are using (or think you need to
15use) a flag to configure Chromium for your use case, please [file a bug] or
16email flags-dev@, because that flag will likely be removed at some point. If you
17are a chromium developer, please carry on using flags as normal :)
Elly Fong-Jonesd5c233a2019-07-29 19:48:2718
19Flags have never been a supported configuration surface in Chromium, and we have
20never guaranteed that any specific flag will behave consistently or even
21continue to exist. This document describes a process for removing flags that
22have been around for long enough that users *might* have come to rely on their
23ongoing existence in a way that hopefully minimizes pain, but Chromium
24developers are free to change the behavior of or remove flags at any time. In
25particular, just because a flag will expire through this process does not mean a
26developer will not remove it earlier than this process specifies.
27
28## The Process
29
30After each milestone's branch point:
31
321. The flags team chooses a set of flags to begin expiring, from the list
33 produced by `tools/flags/list-flags.py --expired-by $MSTONE`. In the steady
34 state, when there is not a big backlog of flags to remove, this set will be
35 the entire list of flags that are `expired-by $MSTONE`.
362. The flags team hides the flags in this set by default from `chrome://flags`,
Elly Fong-Jones94fc8632019-08-14 18:23:0337 and adds a flag `temporary-unexpire-flags-m$MSTONE` and a base::Feature
Elly Fong-Jonesd5c233a2019-07-29 19:48:2738 `TemporaryUnexpireFlagsM$MSTONE` which unhide these flags. When hidden from
39 `chrome://flags`, all the expired flags will behave as if unset, so users
40 cannot be stuck with a non-default setting of a hidden flag.
413. After two further milestones have passed (i.e. at $MSTONE+2 branch), the
42 temporary unhide flag & feature will be removed (meaning the flags are now
43 permanently invisible), and TPMs will file bugs against the listed owners to
44 remove the flags and clean up the backing code.
45
46There are other elements of this process not described here, such as emails to
47flags-dev@ tracking the status of the process.
48
49## The Set
50
Elly Fong-Jones94fc8632019-08-14 18:23:0351In M78, the following flags are being hidden as the second step of this process.
Elly Fong-Jonesd5c233a2019-07-29 19:48:2752If you are using one of these flags for some reason, please get in touch with
53the flags team (via flags-dev@) and/or the listed owner(s) of that flag. This
54list will be updated at each milestone as we expire more flags. This is the
55authoritative source of the expiry set for a given milestone.
56
Elly Fong-Jones94fc8632019-08-14 18:23:0357TODO(https://crbug.com/953690): Fill in this list :)
Elly Fong-Jonesd5c233a2019-07-29 19:48:2758
59[file a bug]: https://new.crbug.com