I'm fine with all the above. Allowing for notes of justification to assist reviewers seems like a good way for us to avoid being pedantic about it. This is fairly subjective, after all.
On Wed, May 30, 2018 at 9:59 AM, Casey Stella <ceste...@gmail.com> wrote: > Yeah, that's true. > > On Wed, May 30, 2018 at 8:58 AM Otto Fowler <ottobackwa...@gmail.com> > wrote: > >> We can say that any refactoring that *is* necessary, needs to be written >> out and justified in the review. >> So, we don’t recommend it, but if you have to, and you can reasonably >> defend it, OK. >> >> >> On May 30, 2018 at 11:53:51, Casey Stella (ceste...@gmail.com) wrote: >> >> Yep, I think we can, mike. >> >> Let me start with a emendation: >> >> "Don’t combine code changes with lots of edits of whitespace, comments, >> or >> code changes specifically for cosmetic refactoring purposes aimed solely >> readability; it makes code review >> and merging difficult. It’s okay to fix an occasional comment or >> indentation, but if >> wholesale comment, whitespace or other refactoring changes are needed, >> make >> them a separate PR." >> >> >> On Wed, May 30, 2018 at 8:48 AM Michael Miklavcic < >> michael.miklav...@gmail.com> wrote: >> >> > Completely agreed on all points. Can we do that here and spin up a vote >> > thread following with the final proposed changes? >> > >> > On Wed, May 30, 2018 at 9:46 AM, Casey Stella <ceste...@gmail.com> >> wrote: >> > >> >> I'm torn on this, honestly. I completely agree that cosmetic >> refactoring >> >> gets in the way of review and the risk can be more than the reward, >> >> especially in a subtle bit of code. >> >> That being said, I'm a big fan of opportunistically refactoring to >> >> generalize or correct faulty assumptions. Often, I can't justify >> making an >> >> abstraction until I have seen the need more than once, so I will make >> the >> >> abstraction, as long as it's small and well-contained, in the PR >> >> opportunistically, that motivates the 2nd usage. I like that kind of >> >> opportunistic refactoring and I think that shouldn't be dissuaded. >> >> >> >> I agree with Otto, we should have a round of discussion on the doc >> text >> >> and I'd suggest we clarify to be cosmetic refactoring solely due to >> >> readability concerns. >> >> >> >> Just my $0.02 >> >> >> >> On Tue, May 29, 2018 at 7:40 PM Otto Fowler <ottobackwa...@gmail.com> >> >> wrote: >> >> >> >>> On top of this, refactoring under another PR’s goals tends to be less >> >>> documented as to the intent >> >>> and effect. >> >>> >> >>> +1 for the idea, we should have a vote round or edit round on the >> doc’s >> >>> specific text. >> >>> Although I will say, that some things it doesn’t matter how much you >> >>> break >> >>> them up wrt reviews. >> >>> We should have so many reviewers that this is a problem. >> >>> >> >>> >> >>> >> >>> >> >>> On May 29, 2018 at 20:05:49, Michael Miklavcic ( >> >>> michael.miklav...@gmail.com) >> >>> wrote: >> >>> >> >>> I want to bring up the subject of code refactoring and how we should >> >>> manage >> >>> this in PR's as our product evolves. As Metron matures, it's only >> natural >> >>> that we'll have and increasing number of contributors, and >> subsequently >> >>> contributions affecting many hardened parts of the code base. We've >> >>> generally not been particular about mixing refactoring changes with >> other >> >>> types of improvements or bug fixes. As a general best practice for >> >>> software >> >>> engineering it is indeed desirable to undergo regular refactoring as >> a >> >>> matter of "scouts' rules" or "fixing broken windows." This helps keep >> >>> code >> >>> readable and has the benefit of a fresh pair of eyes to see code in a >> new >> >>> way that allows the newcomer to introduce clarifying changes that the >> >>> original author(s) may not have considered. >> >>> >> >>> While refactoring is generally applauded (because we have unit, >> >>> integration, and acceptance tests backing our changes), it does pose >> some >> >>> challenges during the review process. Depending on the type of PR, >> the >> >>> refactoring work can at times be many orders of magnitude larger than >> the >> >>> code pertinent to the desired change in functionality, whether bug >> fix or >> >>> feature enhancement, itself. While tests should protect against >> >>> unintended >> >>> side effects (and sometimes they are also refactored) it does >> introduce >> >>> the >> >>> possibility of new subtle bugs. It also makes a lot of PR's a >> conflated >> >>> mix >> >>> of comments pertinent to the improvement/fix and opinions about best >> >>> practices around coding style. >> >>> >> >>> I propose a simple change - we update our coding style guidelines in >> >>> section 2.1 to expand on refactoring. We currently cover whitespace >> and >> >>> comments: >> >>> >> >>> "Don’t combine code changes with lots of edits of whitespace or >> comments; >> >>> it makes code review too difficult. It’s okay to fix an occasional >> >>> comment >> >>> or indenting, but if wholesale comment or whitespace changes are >> needed, >> >>> make them a separate PR." >> >>> >> >>> I propose we expand this to say: >> >>> >> >>> "Don’t combine code changes with lots of edits of whitespace, >> comments, >> >>> or >> >>> code changes specifically for refactoring purposes; it makes code >> review >> >>> too difficult. It’s okay to fix an occasional comment or indenting, >> but >> >>> if >> >>> wholesale comment, whitespace or other refactoring changes are >> needed, >> >>> make >> >>> them a separate PR." >> >>> >> >>> >> >>> I believe this provides additional clarity. I think it's one thing to >> >>> extract a method or introduce changes for code you're specifically >> >>> modifying, and another thing to introduce changes that affect >> surrounding >> >>> code. I would also propose we emphasize the Google checkstyle and >> >>> auto-formatting tooling when submitting any changes, but dealing with >> >>> enforcement is not my focus for this discuss thread. >> >>> >> >>> https://cwiki.apache.org/confluence/display/METRON/ >> Development+Guidelines >> >>> >> >>> Best, >> >>> Michael Miklavcic >> >>> >> >> >> > >> >>