Replies: 15 comments 26 replies
-
Searching GitHub (or wider web) might not reflect internal usage in companies. Would it make sense to list candidates for removal, and then have a poll where people can vote for those flags they think are important to preserve? |
Beta Was this translation helpful? Give feedback.
-
I think it would be really interesting if you could share a list of flags that are unused at google since I imagine it would lead to some obvious candidates for removal. |
Beta Was this translation helpful? Give feedback.
-
@lberki Do you think we can open that list up? |
Beta Was this translation helpful? Give feedback.
-
I didn't realize lberki started this thread in the first place. |
Beta Was this translation helpful? Give feedback.
-
Mark it for deprecation at least 1 stable release should be adequate for removal I think. Experimental flags need to be treated with more care though. |
Beta Was this translation helpful? Give feedback.
-
Update: it looks like in the absence of other opinions, we'll go with the above proposal: we compile a list of flags we want to remove, publish it, then wait for feedback. |
Beta Was this translation helpful? Give feedback.
-
We have identified a set of 69 flags candidates for removal: https://gist.github.com/lberki/e187abc04a59b6d3d1eb0e42e515fb60 Please take a look and chime in if you think you need a flag from this list! There may be some more once we get further with the Google-internal pass, but this is already a good start. |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
Yes. --incompatible_disable_third_party_license_checking is a remnant. I deleted the code and moved it to the graveyard a year ago. I just created a PR to remove it. |
Beta Was this translation helpful? Give feedback.
-
I think we should be somewhat aggressive. If a flag looks like it could potentially be theoretically useful but there's no evidence anyone's using it, let's delete it. If there's really a problem for someone we can put it back in a patch release. i.e. we should push back against responses like "oh I could totally see this being useful". We want evidence of someone actually practically using it, or having upcoming concrete plans to use it, as a threshold for preserving. Theoretical utility is just brainstorming, which isn't a strong enough argument for production code. I'm particularly thinking of as I write this. |
Beta Was this translation helpful? Give feedback.
-
Thanks for taking the initiative on this cleanup 👍 If you don't mind I would like to share a "outside of Google" user perspective on this issue. Generally speaking I believe it is worthwhile to cleanup old flags. Even if they only relate to 5 small lines in Bazel code. All those flags needlessly enlarge the Bazel documentation which is read quite often by many people. Removing superfluous parts from the already large and hard to grasp documentation is imho a worthwhile effort. The situation regarding experimental flags is annoying from the perspective of one not having insight into Google. It seems there are several flags which are now experimental for several major releases but don't change. As user one does not know if the feature was given up and forgotten or if there are major concerns keeping it in experimental state.
|
Beta Was this translation helpful? Give feedback.
-
The final tally is in! As per the above discussion, the list of flags to be removed is here: https://gist.github.com/lberki/1f9c599185214ecf5c4b03b03fa9f674 It's very similar to the above candidate list, the only difference being |
Beta Was this translation helpful? Give feedback.
-
@martis42 I understand your concerns; I am also very frustrated about the menagerie of "eternally experimental" flags we have. But I think it's best treated as an effort that's separate from removing unused flags. My game plan is to pick the "low-hanging fruit" here, i.e. the definitely unused flags, then work my way up to flags that are less and less obviously unnecessary. You are not the first person to recommend such a "tracking system" for experimental flags (IIRC @joeleba wanted to have one, too)., My take on this is that processes are easy to add and difficult to remove, so I'd rather only do that if the benefit is obvious and if I am convinced that we can actually keep ourselves to the process. I don't have an opinion as to whether these two requirements would hold; I wanted to tackle this after figuring out what to do with the flags that already exist and are not tracked that way, but only after we have made some dent in removing unused or barely-used flags. |
Beta Was this translation helpful? Give feedback.
-
Bazel currently has more than a thousand flags, which is way too many.
A large part of these flags is unused or mostly-unused (for our Google-internal version, telemetry shows that about a third of the flags have not been used in our monorepo in the last 90 days). This suggests that a significant cleanup is possible.
What should the sufficient conditions be for removing a flag? Given that we have no visibility at all into what features of Bazel are used and how often, the best I can think of is to search code on GitHub (or maybe on the wider web), and if there is only a "small enough" number of hits, go ahead with the deletion.
Any better ideas?
Beta Was this translation helpful? Give feedback.
All reactions