public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* Consensus on high-level objective of cleanup, refactor or rework patches.
@ 2020-02-14 17:01 Carlos O'Donell
  2020-02-14 17:23 ` Joseph Myers
  0 siblings, 1 reply; 7+ messages in thread
From: Carlos O'Donell @ 2020-02-14 17:01 UTC (permalink / raw)
  To: GNU C Library
  Cc: Florian Weimer, Adhemerval Zanella, Joseph S. Myers,
	Andreas Schwab, Szabolcs Nagy

Community,

Several senior glibc developers are doing  an amazing to cleanup glibc
sources. There is a lot of much-needed refactoring, cleanup, and
rework that needs to be done to remove alloca, duplicated headers,
redundancy between ports etc.

I would like to see this work proceed *more* quickly during early
development of a new branch to allow machine maintainers to check if
it breaks things.

To that end I propose we approve via consensus the concept of a set of
changes and allow the maintainer to commit across the entire code base
to implement the concept without having to go through a second round
of review. The initial review of the concept is approval enough.

(1) Post a patch detailing what you want to change and refactor and why.
- MUST include [CONCEPT] or something so anyone can filter it and
respond immediately for review.
- MUST include a breakdown of the stages the work would happen.
- MUST include information about performance implications.
- MUST describe standards compliance implications.
- MUST include details for changes to machine implementations.

(2) Give some time for consensus to appear around the concept.

(3) Start implementing the changes following the stages of the work
you outlined.
- Do not wait for review.
- Commit the cleanup patches in logical sequence that yields a tree
that always builds and is always clean for testing unless you outlined
exceptions in (1).

I would love to see more great cleanups being done early and
efficiently followed by more time for machines to cleanup if we have
fallout.

Thoughts?

Cheers,
Carlos.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Consensus on high-level objective of cleanup, refactor or rework patches.
  2020-02-14 17:01 Consensus on high-level objective of cleanup, refactor or rework patches Carlos O'Donell
@ 2020-02-14 17:23 ` Joseph Myers
  2020-02-14 20:59   ` Carlos O'Donell
  0 siblings, 1 reply; 7+ messages in thread
From: Joseph Myers @ 2020-02-14 17:23 UTC (permalink / raw)
  To: Carlos O'Donell
  Cc: GNU C Library, Florian Weimer, Adhemerval Zanella,
	Andreas Schwab, Szabolcs Nagy

On Fri, 14 Feb 2020, Carlos O'Donell wrote:

> To that end I propose we approve via consensus the concept of a set of
> changes and allow the maintainer to commit across the entire code base
> to implement the concept without having to go through a second round
> of review. The initial review of the concept is approval enough.

I think it's very rare that this would be appropriate.  Consensus on a 
high-level concept is very different from consensus on the particular 
details of changes - furthermore, various aspects of the details of the 
changes will only emerge as they are implemented, and it's quite possible 
that something seems attractive at the high-level design level but the 
details of the changes result in the whole idea seeming less attractive to 
the community or the design needing to be revisited.

Only in some of the most purely mechanical cases (e.g. removal of 
conditional code after we next increase the minimum supported Linux kernel 
version) might the concept make the underlying changes clear enough.  In 
most cases, such a change runs into several special cases that need 
individual attention and review, even if the bulk of the patches are 
mechanical.

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Consensus on high-level objective of cleanup, refactor or rework patches.
  2020-02-14 17:23 ` Joseph Myers
@ 2020-02-14 20:59   ` Carlos O'Donell
  2020-02-14 21:30     ` Joseph Myers
  0 siblings, 1 reply; 7+ messages in thread
From: Carlos O'Donell @ 2020-02-14 20:59 UTC (permalink / raw)
  To: Joseph Myers
  Cc: GNU C Library, Florian Weimer, Adhemerval Zanella,
	Andreas Schwab, Szabolcs Nagy

On Fri, Feb 14, 2020 at 12:23 PM Joseph Myers <joseph@codesourcery.com> wrote:
>
> On Fri, 14 Feb 2020, Carlos O'Donell wrote:
>
> > To that end I propose we approve via consensus the concept of a set of
> > changes and allow the maintainer to commit across the entire code base
> > to implement the concept without having to go through a second round
> > of review. The initial review of the concept is approval enough.
>
> I think it's very rare that this would be appropriate.  Consensus on a
> high-level concept is very different from consensus on the particular
> details of changes - furthermore, various aspects of the details of the
> changes will only emerge as they are implemented, and it's quite possible
> that something seems attractive at the high-level design level but the
> details of the changes result in the whole idea seeming less attractive to
> the community or the design needing to be revisited.

In the cases where implementation causes a deviation from what was
expressed in the initial concept then I expect the trusted developer
to come back to the community to seek consensus around the new
problem.

In some ways a high-level review of a concept is an extension of trust
to the developer. We will follow a consensus driven model but the
consensus is at the architectural level, and trust is extended that
they will carry out an implementation within the shared understanding
we have regarding the code base.

My opinion is that it is costing us too much review time to cleanup
and refactor. These operations should have less implementation review
and more conceptual review.

> Only in some of the most purely mechanical cases (e.g. removal of
> conditional code after we next increase the minimum supported Linux kernel
> version) might the concept make the underlying changes clear enough.  In
> most cases, such a change runs into several special cases that need
> individual attention and review, even if the bulk of the patches are
> mechanical.

For senior developers in the community, like Florian and Adhemerval
what does our review of their implementation details actually gain us?

Their implementations are usually very high quality, but might not
exactly match what I want to see in glibc, but the reality is that
likely either implementation achieves a high degree of success. Only
with the additional review cost. What did that additional delay and
review cost and what do we gain from it?

For example I like Zach's struct-splitting-into-header concept. Should
we allow any patches that do that to just get committed with assumed
consensus? Do we assume this is too disruptive?

Do you have any suggestions for reducing the cost of cleanups or refactoring?

Cheers,
Carlos.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Consensus on high-level objective of cleanup, refactor or rework patches.
  2020-02-14 20:59   ` Carlos O'Donell
@ 2020-02-14 21:30     ` Joseph Myers
  2020-02-14 22:19       ` Carlos O'Donell
  0 siblings, 1 reply; 7+ messages in thread
From: Joseph Myers @ 2020-02-14 21:30 UTC (permalink / raw)
  To: Carlos O'Donell
  Cc: GNU C Library, Florian Weimer, Adhemerval Zanella,
	Andreas Schwab, Szabolcs Nagy

On Fri, 14 Feb 2020, Carlos O'Donell wrote:

> In the cases where implementation causes a deviation from what was
> expressed in the initial concept then I expect the trusted developer
> to come back to the community to seek consensus around the new
> problem.

I think the implementation is generally needed to understand better 
exactly what the concept is.

Maybe you're trying to get meta-consensus for a not-fully-defined 
meta-concept.  The sort of things I think of on reading your description 
are e.g. all the changes rearranging the code in preparation for 
supporting 64-bit times on systems currently using 32-bit times, or the 
preparation for binary128 long double on powerpc64le.  We have consensus 
on the overall design, but there are lots of issues of detail in 
individual patches that come up in review and show that we do need to keep 
watching and reviewing the individual patches, and monitoring what those 
patches imply for the overall design - it would not have been sensible to 
treat consensus on the design as consensus for particular patches that 
often have issues of their own.

> For example I like Zach's struct-splitting-into-header concept. Should
> we allow any patches that do that to just get committed with assumed
> consensus? Do we assume this is too disruptive?

That's one of the rare more mechanical examples.

If you take, say, Zack's no-nested-includes patch series (reducing the 
extent to which one public header includes another), when someone approves 
of the concept they are bringing with that approval their own 
understanding of what "should" be defined by particular headers, and may 
well find issues with a particular change where there seems to be a 
significant compatibility issue removing something from a header's 
interface; most patches in that series have their own special-case issues 
that are described in the commit messages.  So while in reviewing those 
patches it's probably more useful to concentrate on the special cases and 
choices described in the commit message, rather than the more mechanical 
parts of the patches, there are clearly things needing review in each 
patch.  (And distribution build testing would be helpful once those 
changes are in, to help detect compatibility issues that didn't show up in 
review.)

> Do you have any suggestions for reducing the cost of cleanups or refactoring?

Reviewers should consider carefully exactly what needs reviewing when 
reviewing a particular patch or patch series.  In some cases, especially 
given a good commit message, this may well concentrate on the higher-level 
choices and special cases involved in that particular patch, and on 
architecture- and OS-dependencies, and not the parts of the patch that are 
clearly implementing the mechanical parts of a previously agreed cleanup, 
unless those parts suggest a design issue that needs to be addressed.

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Consensus on high-level objective of cleanup, refactor or rework patches.
  2020-02-14 21:30     ` Joseph Myers
@ 2020-02-14 22:19       ` Carlos O'Donell
  2020-02-14 22:24         ` Joseph Myers
  0 siblings, 1 reply; 7+ messages in thread
From: Carlos O'Donell @ 2020-02-14 22:19 UTC (permalink / raw)
  To: Joseph Myers
  Cc: GNU C Library, Florian Weimer, Adhemerval Zanella,
	Andreas Schwab, Szabolcs Nagy

On Fri, Feb 14, 2020 at 4:31 PM Joseph Myers <joseph@codesourcery.com> wrote:
> > Do you have any suggestions for reducing the cost of cleanups or refactoring?
>
> Reviewers should consider carefully exactly what needs reviewing when
> reviewing a particular patch or patch series.  In some cases, especially
> given a good commit message, this may well concentrate on the higher-level
> choices and special cases involved in that particular patch, and on
> architecture- and OS-dependencies, and not the parts of the patch that are
> clearly implementing the mechanical parts of a previously agreed cleanup,
> unless those parts suggest a design issue that needs to be addressed.

Let me reiterate your suggestion then, which is somewhat of an
inversion of my suggestion.

Reviewers, like myself, should consider reviewing *less* when it is
clearly evident that additional review is not required?

I can accept that such a  solution yields a faster turnaround for
patch review, but the latency may still exist, that is that developers
are waiting around for patches to be reviewed.

Cheers,
Carlos.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Consensus on high-level objective of cleanup, refactor or rework patches.
  2020-02-14 22:19       ` Carlos O'Donell
@ 2020-02-14 22:24         ` Joseph Myers
  2020-02-14 22:26           ` Carlos O'Donell
  0 siblings, 1 reply; 7+ messages in thread
From: Joseph Myers @ 2020-02-14 22:24 UTC (permalink / raw)
  To: Carlos O'Donell
  Cc: GNU C Library, Florian Weimer, Adhemerval Zanella,
	Andreas Schwab, Szabolcs Nagy

On Fri, 14 Feb 2020, Carlos O'Donell wrote:

> Reviewers, like myself, should consider reviewing *less* when it is
> clearly evident that additional review is not required?

Yes.  Consider what it is about the patch that is relevant to review, 
taking into account factors such as existing consensus for an overall 
design, any relevant expertise of the patch submitter and the quality and 
contents of the commit message and the testing described in that commit 
message.

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Consensus on high-level objective of cleanup, refactor or rework patches.
  2020-02-14 22:24         ` Joseph Myers
@ 2020-02-14 22:26           ` Carlos O'Donell
  0 siblings, 0 replies; 7+ messages in thread
From: Carlos O'Donell @ 2020-02-14 22:26 UTC (permalink / raw)
  To: Joseph Myers
  Cc: GNU C Library, Florian Weimer, Adhemerval Zanella,
	Andreas Schwab, Szabolcs Nagy

On Fri, Feb 14, 2020 at 5:25 PM Joseph Myers <joseph@codesourcery.com> wrote:
>
> On Fri, 14 Feb 2020, Carlos O'Donell wrote:
>
> > Reviewers, like myself, should consider reviewing *less* when it is
> > clearly evident that additional review is not required?
>
> Yes.  Consider what it is about the patch that is relevant to review,
> taking into account factors such as existing consensus for an overall
> design, any relevant expertise of the patch submitter and the quality and
> contents of the commit message and the testing described in that commit
> message.

I appreciate your points about the complexity of implementations.

I will try to review less and see how it goes :-)

Cheers,
Carlos.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-02-14 22:26 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-14 17:01 Consensus on high-level objective of cleanup, refactor or rework patches Carlos O'Donell
2020-02-14 17:23 ` Joseph Myers
2020-02-14 20:59   ` Carlos O'Donell
2020-02-14 21:30     ` Joseph Myers
2020-02-14 22:19       ` Carlos O'Donell
2020-02-14 22:24         ` Joseph Myers
2020-02-14 22:26           ` Carlos O'Donell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).