Обсуждение: Patch application
I think it is time to start giving people official responsibility for
certain areas of the code.
In the old says, we didn't have many _exports_, and people submitting
patches often knew more than we did because they had spent time studying
the code.
Now, we have much more expertise, to the point that people not involved
in those areas can't really contribute very well without the assistance
of those experts.
For example, I can't seem to evaluate any Makefile changes because Peter
E. knows how the system is designed much better. The same is true for
JDBC and many other areas.
I would like to create a web page in the developer's corner that
contains module names and the people who are most knowledgeable. I will
no longer apply changes to those areas without getting approval from
those people. My recent attempts have made things worse rather than
better. I suggest other committers do the same.
My short list right now is:
Makefiles/configure Peter E.
psql Peter E.
Jdbc Peter M.
Odbc Hiroshi?
Ecpg Michael
Python D'Arcy
Optimizer Tom Lane
Rewrite Jan
Locking Tom
Cache Tom
Date/Time Thomas
Pl/PgSQL Jan
SGML Peter E, Thomas
WAL Vadim, Tom
FAQ/TODO Bruce
Regression Peter E?
Multibyte Tatsuo
GIST Oleg
Comments?
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> I think it is time to start giving people official responsibility for
> certain areas of the code.
This strikes me as overly formalistic, and more likely to lead to
arteriosclerosis than any improvement in code quality. Particularly
with a breakdown such as you have proposed, which would likely mean
asking multiple people to approve any given patch.
I think the procedural error in this past weekend's contrib mess was
simply that you didn't pay attention to the fact that Oleg's patch was
based on an out-of-date copy of the contrib module. You should have
either merged the changes or bounced it back to Oleg for him to do so.
Insisting on CVS $Header$ or $Id$ markers in all code files might help
to detect this kind of error --- but nothing will help if you are
willing to overwrite other people's changes simply because you didn't
recall the reason for them at the moment.
regards, tom lane
The below basically summarizes my opinion quite well ... On Mon, 19 Mar 2001, Tom Lane wrote: > Bruce Momjian <pgman@candle.pha.pa.us> writes: > > I think it is time to start giving people official responsibility for > > certain areas of the code. > > This strikes me as overly formalistic, and more likely to lead to > arteriosclerosis than any improvement in code quality. Particularly > with a breakdown such as you have proposed, which would likely mean > asking multiple people to approve any given patch. > > I think the procedural error in this past weekend's contrib mess was > simply that you didn't pay attention to the fact that Oleg's patch was > based on an out-of-date copy of the contrib module. You should have > either merged the changes or bounced it back to Oleg for him to do so. > > Insisting on CVS $Header$ or $Id$ markers in all code files might help > to detect this kind of error --- but nothing will help if you are > willing to overwrite other people's changes simply because you didn't > recall the reason for them at the moment. > > regards, tom lane > > ---------------------------(end of broadcast)--------------------------- > TIP 5: Have you checked our extensive FAQ? > > http://www.postgresql.org/users-lounge/docs/faq.html > Marc G. Fournier ICQ#7615664 IRC Nick: Scrappy Systems Administrator @ hub.org primary: scrappy@hub.org secondary: scrappy@{freebsd|postgresql}.org
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > I think it is time to start giving people official responsibility for
> > certain areas of the code.
>
> This strikes me as overly formalistic, and more likely to lead to
> arteriosclerosis than any improvement in code quality. Particularly
> with a breakdown such as you have proposed, which would likely mean
> asking multiple people to approve any given patch.
>
> I think the procedural error in this past weekend's contrib mess was
> simply that you didn't pay attention to the fact that Oleg's patch was
> based on an out-of-date copy of the contrib module. You should have
> either merged the changes or bounced it back to Oleg for him to do so.
>
> Insisting on CVS $Header$ or $Id$ markers in all code files might help
> to detect this kind of error --- but nothing will help if you are
> willing to overwrite other people's changes simply because you didn't
> recall the reason for them at the moment.
I understand the formalistic problem, and maybe I overstated its
formality, but it seems it would be good to maintain a list for two
reasons:
1) With formalize experts in various areas, if someone replies
to an email, the recipient can clearly know this person is an expert in
that area. It also helps focus attention on certain people for
development assistance.
2) The number of patches that I apply that need fixing by
someone else is getting more frequent. The most recent patch is just
one of many that had to be cleaned up for various reasons. I reviewed
the patch and still didn't see the intent of the Makefile change. In
this case, the CVS logs would have helped, but in others there is a
design goal that I just can not comprehend.
Looking at the list, I feel I would have to contact someone before
making any changes to these areas. Even if I can get the patch applied
properly, I doubt I would do it the _right_ way. Sometimes it is just
that the style of the patcher doesn't match the style in our sources.
Maybe we don't have to make it required, but plain patches from people I
don't know really need some review. Perhaps I can attach the patch to
the PATCHES list when I apply it so people can see exactly what was
changed.
Aren't people upset about the minor fixes they have to make to patches I
apply? Is it easier to just clean up things rather than find/apply the
patches?
For example, almost any change to an SGML file seems to require Peter E
to fix some part of it, usually the markup. Is that OK, Peter? Most of
the interfaces require an interface expert's comment I would think.
---------------------------------------------------------------------------
Makefiles/configure Peter E. psql Peter E. Jdbc Peter M.
Odbc Hiroshi? Ecpg Michael Python D'Arcy
Optimizer Tom Lane Rewrite Jan Locking Tom Cache
Tom Date/Time Thomas Pl/PgSQL Jan SGML Peter
E,Thomas WAL Vadim, Tom FAQ/TODO Bruce Regression
PeterE? Multibyte Tatsuo GIST Oleg
-- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610)
853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill,
Pennsylvania19026
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> I understand the formalistic problem, and maybe I overstated its
> formality, but it seems it would be good to maintain a list for two
> reasons:
I don't have a problem with keeping an informal list of area experts.
I was just objecting to the notion of formal signoffs (I doubt Peter E.
wants to look at every single Makefile change, for example).
Also, there's a point that keeps coming up in these discussions: the
standards need to be different depending on what time of the release
cycle it is. Perhaps formal signoffs *are* appropriate when we're
this late in beta.
regards, tom lane
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> I understand the formalistic problem, and maybe I overstated its
> formality, but it seems it would be good to maintain a list for two
> reasons:
In projects like gcc and the GNU binutils, we use a MAINTAINERS file.
Some people have blanket write privileges. Some people have write
priviliges to certain areas of the code. Anybody else needs a patch
to be approved before they can check it in. Patches which are
``obviously correct'' are always OK.
The MAINTAINERS file can be used as a guide for who to ask in certain
areas of the code.
This may be overly complex for Postgres now. But I believe that you
will need something of this nature as the project continues to grow.
This permits you to scale to more developers.
Note that the MAINTAINERS file is not enforced by a program. It is
only enforced by people noticing an unapproved checkin message, and
theoreticalliy removing write privileges.
For example, I have appended the gcc MAINTAINERS file.
Ian
Blanket Write Privs.
Craig Burley craig@jcb-sc.com
John Carr jfc@mit.edu
Richard Earnshaw rearnsha@arm.com
Richard Henderson rth@redhat.com
Geoffrey Keating geoffk@redhat.com
Richard Kenner kenner@nyu.edu
Jeff Law law@redhat.com
Jason Merrill jason@redhat.com
Michael Meissner meissner@redhat.com
David S. Miller davem@redhat.com
Mark Mitchell mark@codesourcery.com
Bernd Schmidt bernds@redhat.com
Jim Wilson wilson@redhat.com
Various Maintainers
sh port Joern Rennecke amylaar@redhat.com Alexandre Oliva aoliva@redhat.com
v850 port Nick Clifton nickc@redhat.com
v850 port Michael Meissner meissner@redhat.com
arm port Nick Clifton nickc@redhat.com
arm port Richard Earnshaw rearnsha@arm.com
m32r port Nick Clifton nickc@redhat.com Michael Meissner meissner@redhat.com
h8 port Jeff Law law@redhat.com
mcore Nick Clifton nickc@redhat.com Jim Dein jdein@windriver.com
mn10200 port Jeff Law law@redhat.com
mn10300 port Jeff Law law@redhat.com Alexandre Oliva aoliva@redhat.com
hppa port Jeff Law law@redhat.com
m68hc11 port Stephane Carrez Stephane.Carrez@worldnet.fr
m68k port (?) Jeff Law law@redhat.com
m68k-motorola-sysv port Philippe De Muyter phdm@macqel.be
rs6000 port Geoff Keating geoffk@redhat.com
rs6000 port David Edelsohn dje@watson.ibm.com
mips port Gavin Romig-Koch gavin@redhat.com
ia64 port Jim Wilson wilson@redhat.com
i860 port Jason Eckhardt jle@redhat.com
i960 port Jim Wilson wilson@redhat.com
a29k port Jim Wilson wilson@redhat.com
alpha port Richard Henderson rth@redhat.com
sparc port Richard Henderson rth@redhat.com
sparc port David S. Miller davem@redhat.com
sparc port Jakub Jelinek jakub@redhat.com
x86 ports Stan Cox scox@redhat.com
c4x port Michael Hayes m.hayes@elec.canterbury.ac.nz
arc port Richard Kenner kenner@nyu.edu
fr30 port Nick Clifton niclc@redhat.com
vax port Dave Anglin dave.anglin@nrc.ca
fortran Richard Henderson rth@redhat.com
fortran Toon Moene toon@moene.indiv.nluug.nl
c++ Jason Merrill jason@redhat.com
c++ Mark Mitchell mark@codesourcery.com
chill Dave Brolley brolley@redhat.com
chill Per Bothner per@bothner.com
java Per Bothner per@bothner.com
java Alexandre Petit-Bianco apbianco@redhat.com
mercury Fergus Henderson fjh@cs.mu.oz.au
objective-c Stan Shebs shebs@apple.com
objective-c Ovidiu Predescu ovidiu@cup.hp.com
cpplib Dave Brolley brolley@redhat.com
cpplib Per Bothner per@bothner.com
cpplib Zack Weinberg zackw@stanford.edu
cpplib Neil Booth neil@daikokuya.demon.co.uk
alias analysis John Carr jfc@mit.edu
loop unrolling Jim Wilson wilson@redhat.com
loop discovery Michael Hayes m.hayes@elec.canterbury.ac.nz
scheduler (+ haifa) Jim Wilson wilson@redhat.com
scheduler (+ haifa) Michael Meissner meissner@redhat.com
scheduler (+ haifa) Jeff Law law@redhat.com
reorg Jeff Law law@redhat.com
caller-save.c Jeff Law law@redhat.com
debugging code Jim Wilson wilson@redhat.com
dwarf debugging code Jason Merrill jason@redhat.com
c++ runtime libs Gabriel Dos Reis dosreis@cmla.ens-cachan.fr
c++ runtime libs Ulrich Drepper drepper@redhat.com
c++ runtime libs Phil Edwards pedwards@jaj.com
c++ runtime libs Benjamin Kosnik bkoz@redhat.com
*synthetic multiply Torbjorn Granlund tege@swox.com
*c-torture Torbjorn Granlund tege@swox.com
*f-torture Kate Hedstrom kate@ahab.rutgers.edu
sco5, unixware, sco udk Robert Lipe robertlipe@usa.net
fixincludes Bruce Korb bkorb@gnu.org
gcse.c Jeff Law law@redhat.com
global opt framework Jeff Law law@redhat.com
jump.c David S. Miller davem@redhat.com
web pages Gerald Pfeifer pfeifer@dbai.tuwien.ac.at
C front end/ISO C99 Gavin Romig-Koch gavin@redhat.com
config.sub/config.guess Ben Elliston bje@redhat.com
avr port Denis Chertykov denisc@overta.ru Marek Michalkiewicz marekm@linux.org.pl
basic block reordering Jason Eckhardt jle@redhat.com
i18n Philipp Thomas pthomas@suse.de
diagnostic messages Gabriel Dos Reis gdr@codesourcery.com
windows, cygwin, mingw Christopher Faylor cgf@redhat.com
windows, cygwin, mingw DJ Delorie dj@redhat.com
DJGPP DJ Delorie dj@delorie.com
libiberty DJ Delorie dj@redhat.com
build machinery (*.in) DJ Delorie dj@redhat.com
build machinery (*.in) Alexandre Oliva aoliva@redhat.com
Note individuals who maintain parts of the compiler need approval to check
in changes outside of the parts of the compiler they maintain.
Write After Approval
Scott Bambrough scottb@netwinder.org
Laurynas Biveinis lauras@softhome.net
Phil Blundell pb@futuretv.com
Hans Boehm hboehm@gcc.gnu.org
Andrew cagney cagney@redhat.com
Eric Christopher echristo@redhat.com
William Cohen wcohen@redhat.com
*Paul Eggert eggert@twinsun.com
Ben Elliston bje@redhat.com
Marc Espie espie@cvs.openbsd.org
Kaveh Ghazi ghazi@caip.rutgers.edu
Anthony Green green@redhat.com
Stu Grossman grossman@redhat.com
Andrew Haley aph@redhat.com
Aldy Hernandez aldyh@redhat.com
Kazu Hirata kazu@hxi.com
Manfred Hollstein mhollstein@redhat.com
Jan Hubicka hubicka@freesoft.cz
Andreas Jaeger aj@suse.de
Jakub Jelinek jakub@redhat.com
Klaus Kaempf kkaempf@progis.de
Brendan Kehoe brendan@redhat.com
Mumit Khan khan@xraylith.wisc.edu
Marc Lehmann pcg@goof.com
Alan Lehotsky apl@alum.mit.edu
Warren Levy warrenl@redhat.com
Kriang Lerdsuwanakij lerdsuwa@users.sourceforge.net
Don Lindsay dlindsay@redhat.com
Dave Love d.love@dl.ac.uk
Martin v. Löwis loewis@informatik.hu-berlin.de
*HJ Lu hjl@lucon.org
Andrew Macleod amacleod@redhat.com
Vladimir Makarov vmakarov@redhat.com
Greg McGary gkm@gnu.org
Bryce McKinlay bryce@gcc.gnu.org
Alan Modra alan@linuxcare.com.au
Toon Moene toon@moene.indiv.nluug.nl
Catherine Moore clm@redhat.com
Joseph Myers jsm28@cam.ac.uk
Hans-Peter Nilsson hp@bitrange.com
Diego Novillo dnovillo@redhat.com
David O'Brien obrien@FreeBSD.org
Jeffrey D. Oldham oldham@codesourcery.com
Alexandre Petit-Bianco apbianco@redhat.com
Clinton Popetz cpopetz@cpopetz.com
Ken Raeburn raeburn@redhat.com
Rolf Rasmussen rolfwr@gcc.gnu.org
Gabriel Dos Reis dosreis@cmla.ens-cachan.fr
Alex Samuel samuel@codesourcery.com
Bernd Schmidt bernds@redhat.com
Andreas Schwab schwab@suse.de
Stan Shebs shebs@apple.com
Nathan Sidwell nathan@acm.org
Franz Sirl franz.sirl-kernel@lauterbach.com
Michael Sokolov msokolov@ivan.Harhan.ORG
Mike Stump mrs@windriver.com
Ian Taylor ian@zembu.com
Philipp Thomas pthomas@suse.de
Kresten Krab Thorup krab@gcc.gnu.org
Tom Tromey tromey@redhat.com
John Wehle john@feith.com
Mark Wielaard mark@gcc.gnu.org
* Indicates folks we need to get Kerberos/ssh accounts ready so they
can write in the source tree
> Bruce Momjian <pgman@candle.pha.pa.us> writes: > > I understand the formalistic problem, and maybe I overstated its > > formality, but it seems it would be good to maintain a list for two > > reasons: > > I don't have a problem with keeping an informal list of area experts. > I was just objecting to the notion of formal signoffs (I doubt Peter E. > wants to look at every single Makefile change, for example). OK, that is good. I think it will make a nice web page. > Also, there's a point that keeps coming up in these discussions: the > standards need to be different depending on what time of the release > cycle it is. Perhaps formal signoffs *are* appropriate when we're > this late in beta. Oh, yes, agreed, beta requires signoffs. But I can't seem to get patches in that don't require some _expert_ to come along and improve it. If the _experts_ are OK with that, then that is fine, but if they want things done differently somehow, I want to meet their needs. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
Ian Lance Taylor <ian@airs.com> writes:
> In projects like gcc and the GNU binutils, we use a MAINTAINERS file.
> Some people have blanket write privileges. Some people have write
> priviliges to certain areas of the code. Anybody else needs a patch
> to be approved before they can check it in. Patches which are
> ``obviously correct'' are always OK.
Would you enlarge on what that fourth sentence means in practice?
Seems like the sticky issue here is what constitutes "approval".
We already have a policy that changes originating from non-committers
are supposed to be reviewed before they get applied, but what Bruce
is worried about is the quality of the review process.
regards, tom lane
Tom Lane <tgl@sss.pgh.pa.us> writes: > Ian Lance Taylor <ian@airs.com> writes: > > In projects like gcc and the GNU binutils, we use a MAINTAINERS file. > > Some people have blanket write privileges. Some people have write > > priviliges to certain areas of the code. Anybody else needs a patch > > to be approved before they can check it in. Patches which are > > ``obviously correct'' are always OK. > > Would you enlarge on what that fourth sentence means in practice? > > Seems like the sticky issue here is what constitutes "approval". > We already have a policy that changes originating from non-committers > are supposed to be reviewed before they get applied, but what Bruce > is worried about is the quality of the review process. In practice, what it means is that somebody who has a patch, and does not have the appropriate privileges, sends it to the mailing list. Most patches apply to a single part of the code. The person responsible for that part of the code, or a person with blanket write privileges, reviews the patch, and approves it, or denies it, or approves it with changes. If approved, and the original submitter has write privileges, he or she checks it in. Otherwise, the maintainer who did the review checks it in. If approved with changes, and the original submitter has write privileges, he or she makes the changes and checks it in. Otherwise he or she makes the changes, sends them back, and the maintainer who did the review checks it in. One advantage of the MAINTAINERS file with respect to the review process is that it tells you who knows most about particular areas of the code. For example, in the gcc MAINTAINERS file I sent earlier, there are people with blanket write privileges who are also listed as responsible for particular areas of gcc. Another advantage is that it reduces load on the maintainers, since many people can check in their own patches. Since there are many people, some sort of control is needed. The goal is not excessive formalism; as I said, there is nothing which actually prevents anybody with write privileges from checking in a patch to any part of the code. The goal is to guide people to the right person to approve a particular patch. Ian
Bruce, what is the point of even an informal list of "experts"? There
have always been areas that folks have "adopted" or have developed an
interest and expertise in. And we've gotten lots of really great
contributions both large and small from people we barely knew existed
until the patch arrived.
Unless there is a "process improvement" which comes with developing this
list, I don't really see what the benefit will be wrt existance of the
list, developing the list, of deciding who should be on a list, etc etc.
istm that the list of active developers serves the function of
acknowledging contributors. Not sure what another list will do for us,
and it may have the effect of being an artificial barrier or distinction
between folks.
All imho of course ;)
- Thomas
At 05:36 20/03/01 +0000, Thomas Lockhart wrote: > >Unless there is a "process improvement" which comes with developing this >list, I don't really see what the benefit will be wrt existance of the >list, developing the list, of deciding who should be on a list, etc etc. > Totally agree; such formality will be barrier and we will gain almost nothing. It will also further disenfranchise the wider developer community. ISTM that the motivation is based on one or two isolated incidents where patches were applied when they should not have been. Tom's suggestion of insisting on CVS headers will deal with the specific case in point, at far lesser social and labour overhead. The last thing we want to do to people who contribute heavily to the project is say 'Gee, thanks. And you are now responsible for all approvals on this area of code', especially in late beta, when they are likely to be quite busy. Similarly, when we are outside the beta phase, we don't need the process. I suspect that anybody who has worked on a chunk of code in a release cycle will keep an eye on what is happening to the code. My suggestion for handling this process would be to allow an opt-in 'watch' to be placed on files/modules in CVS (CVS supports this, from memory). Then, eg, I can say 'send me info when someone makes a match to pg_dump'. Similarly, when I start working on a module, I can add myself to the list to be informed when someone changes it underneath me. This would be genuinely useful to me as a part-time developer. As a further development from this, it would be good to see a way for bug reports to be redirected to 'subsystems' (or something like that), which developers could opt into. So, using myself as an example, I would like special notification when a pg_dump bug is reported. Similarly, I might like to be notified when changes are made to the WAL code... If you want to make cute web pages, and define domain experts, make it useful, make it opt-in, and make it dynamic. ---------------------------------------------------------------- Philip Warner | __---_____ Albatross Consulting Pty. Ltd. |----/ - \ (A.B.N. 75 008 659 498) | /(@) ______---_ Tel: (+61) 0500 83 82 81 | _________ \ Fax: (+61) 0500 83 82 82 | ___________ | Http://www.rhyme.com.au | / \| | --________-- PGP key available upon request, | / and from pgp5.ai.mit.edu:11371 |/
OK, seems there have been enough objections that I will not implement a "experts" page, nor change the way patches are applied. I will be posting a diff -c of any patches I have to munge into place, so people can see how stuff was merged into the code. It seems the problem of people having to massage patches after they are applied is either not a big deal, or the other ways of applying patches are considered worse. > At 05:36 20/03/01 +0000, Thomas Lockhart wrote: > > > >Unless there is a "process improvement" which comes with developing this > >list, I don't really see what the benefit will be wrt existance of the > >list, developing the list, of deciding who should be on a list, etc etc. > > > > Totally agree; such formality will be barrier and we will gain almost > nothing. It will also further disenfranchise the wider developer community. > ISTM that the motivation is based on one or two isolated incidents where > patches were applied when they should not have been. Tom's suggestion of > insisting on CVS headers will deal with the specific case in point, at far > lesser social and labour overhead. > > The last thing we want to do to people who contribute heavily to the > project is say 'Gee, thanks. And you are now responsible for all approvals > on this area of code', especially in late beta, when they are likely to be > quite busy. Similarly, when we are outside the beta phase, we don't need > the process. > > I suspect that anybody who has worked on a chunk of code in a release cycle > will keep an eye on what is happening to the code. > > My suggestion for handling this process would be to allow an opt-in 'watch' > to be placed on files/modules in CVS (CVS supports this, from memory). > Then, eg, I can say 'send me info when someone makes a match to pg_dump'. > Similarly, when I start working on a module, I can add myself to the list > to be informed when someone changes it underneath me. This would be > genuinely useful to me as a part-time developer. > > As a further development from this, it would be good to see a way for bug > reports to be redirected to 'subsystems' (or something like that), which > developers could opt into. So, using myself as an example, I would like > special notification when a pg_dump bug is reported. Similarly, I might > like to be notified when changes are made to the WAL code... > > If you want to make cute web pages, and define domain experts, make it > useful, make it opt-in, and make it dynamic. > > > ---------------------------------------------------------------- > Philip Warner | __---_____ > Albatross Consulting Pty. Ltd. |----/ - \ > (A.B.N. 75 008 659 498) | /(@) ______---_ > Tel: (+61) 0500 83 82 81 | _________ \ > Fax: (+61) 0500 83 82 82 | ___________ | > Http://www.rhyme.com.au | / \| > | --________-- > PGP key available upon request, | / > and from pgp5.ai.mit.edu:11371 |/ > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Don't 'kill -9' the postmaster > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026