[RFC] Semi-Automatic clang-format of files with low frequency

I am 100% in agreement that all clang-format patches should get actual code review. Clang-format falls over on lots of things, and I believe that judicious use of clang-format on/off pairs is the way to go to have a readable clang-format'ed codebase.

I don't ever recall such a debate over formatting in a review thread (and while I don't any longer, for years, I read every review on the mailing list).

   Speaking from my experience, what usually happens is a newcomer touches a file, and a person who feels that they have code ownership of it tells them to make some formatting change. Generally, the newcomer has enough sense not to fight it and just makes the change. Very rarely does a full blown argument break out in code review, but even 1 round trip is unfortunate. Another bad thing that can happen is that a code reviewer *wants* to raise an issue in formatting, but they don't want to be confrontational so they let it go and/or fix it themselves later.

Code is read more than it is written, and optimizing to make the code easier to read is very important.

   I agree. Personally, I find having the code be consistent is a very important factor in this equation. What looks nice is largely a matter of opinion, and with such a diverse set of people working on this codebase you get N different styles. Frankly, there are several things about the LLVM style that I hate (opening brace not on its own line, `auto *Foo` instead of `auto* Foo` or `auto * Foo` among others), that it's already hard for me to read. Part of being a professional is learning to deal with this sort of stuff, so clang-format making suboptimal formatting choices is just another thing. But at least it would be consistent, which is a huge boon to readability in my opinion.

   There are advantages to having complete clang-format coverage:

1) consistency!
2) developers can use git hooks to clang-format to their preferred style
3) nobody has to think about how to format

   There are advantages to not using clang-format as well. Mainly, the fact that you can have fine-grained control over the formatting. However, I don't believe that there are any real advantages to being where we are with partial clang-format coverage. It seems to me that the direction the project is going is to have full coverage. Why else would Phabricator complain when your code isn't formatted? Frankly, I think 1 year is easily enough time to get complete coverage without being overly disruptive to downstreams and developers with long-lived patches, so I think 1 year being the threshold for "this file is stable, let's format it" is unreasonably conservative.

   Christopher Tetreault