public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Re: source mgt. requirements solicitation
@ 2002-12-14 20:16 Nathanael Nerode
  2002-12-14 21:34 ` Linus Torvalds
  0 siblings, 1 reply; 16+ messages in thread
From: Nathanael Nerode @ 2002-12-14 20:16 UTC (permalink / raw)
  To: gcc

Linus said:
>But the point is, the "CVS mentality" means that a fork is harder to 
>merge than a branch, and you often lose all development history when 
>you merge a
>fork as a result of this (yeah, you can do a _lot_ of work, and try to
>also merge the SCM information on a fork merge, but it's almost never 
>done because it is so painful).
In GCC, we've been known to lose development history when we merge a 
branch, and merging branches has been incredibly painful.  So I'm not
sure merging forks is actually harder; merging branches may be. ;-)  

Fork merges get submitted as a series of patches (which then need to get 
approved), and associated ChangeLog entries.  They go in pretty cleanly.  
The fork developer can track his/her own internal change history however 
he or she likes, but generally will submit an 'expurgated' history for 
merging, devoid of the false starts, which makes the patches a lot easier 
to review.  This is in fact an argument in favor of losing 
development history.  ;-D

>And the "CVS mentality" totally makes that impossible. Subversion seems 
>to be only a "better CVS", and hasn't gotten away from that mentality, 
>which is sad.
Well, Subversion aims only to be a "better CVS", according to its 
mission statement.  Frankly, a 'better CVS' would help a lot, for GCC.
The GCC development plan actively encourges the use of branches for most 
development (as opposed to bug fixes).  But CVS makes it less than easy 
and less than fast.

In addition, CVS makes setting up an anonymously accessible repository 
into a pain in the neck; in this case 'forking' to your own repos has a 
stupid and unnecessary overhead.  Theoretically this should be easier 
with Subversion, so there should be more private repositories floating 
around.

I think that there are a few very small features which would make 
Subversion fairly effective for the typical use case of "I have a 
branch, I track a particular 'mainline', and intermittently I merge into 
the mainline", even if the 'branch' is in a different repos from the 
'mainline', and the 'mainline' is a branch.  But I said that on the svn 
list...

>Yet it is the _cheap_ branches that should be the true first-class
>citizen. Potentially throw-away code that may end up being really 
>really useful, but might just be a crazy pipe-dream. The experimental 
>stuff that would _really_ want to have nice source control.

Interestingly, I tend to find that this sort of stuff is exactly what
*doesn't* need source control; source control simply obscures the 
process by exposing too much development history, much of which has no 
relevance to the current version.  Or did you mean code that already 
works, and is being refined, rather than code in the 'rewrite from 
scratch every two weeks' stage?

--Nathanael

^ permalink raw reply	[flat|nested] 16+ messages in thread
* Re: source mgt....[_HAS_ gcc relevance]
@ 2002-12-16  3:05 Robert Dewar
  2002-12-16  4:15 ` Tom Lord
  0 siblings, 1 reply; 16+ messages in thread
From: Robert Dewar @ 2002-12-16  3:05 UTC (permalink / raw)
  To: lord, zack; +Cc: gcc, torvalds

> Well, my ideal is that changes to the mainline should occur only
> _after_ they have verifiably passed all the available tests on a wide
> range of platforms (a process that can be fully automated) and the
> changes have passed senior engineer reviews (a process that can be
> facilitated by substantial automated assistance).  Mainlines should
> increase in quality in a strictly monotonic fashion -- that's the
> essence of what "gatekeeper management" is all about.  Neither GCC nor
> lk have that property -- though better tools can do much to put us
> there.  With good tools, the release manager can ultimately be
> replaced by shell scripts.

with GNAT, we let everyone within ACT, which is quite a diverse set of folks
about 35 in all, change anything in the mainline, but we guarantee the
monotonic properly (I agree this is crucial) by enforcing fairly strenuous
requirements on anyone doing a change. No change of any kind (not even
something that is "obviously" safe) is allowed without doing a complete
bootstrap, and running the entire regression suite (which is pretty
comprehensive at this stage) first. Now we only require this on one target
for changes that are expected to be target independent, so it is possible
to have unanticipated hits on other targets. We deal with this by building
the system on all targets every night and running the regression suites on
all targets every night. If the reports in the morning indicate a problem,
then it is all hands on deck to fix the problem.

When we get GNAT properly integrated into GCC, which involves several
things still to be done:

1. We need to get to a release point internally where the GCC 3 based GNAT
passes all regression tests etc. We are close to this, and expecting to
do a beta release in January on selected targets (should include Solaris,
Windows, GNU/Linux, HPUX).

2. We need to get the sources and our internal source procedures more
amenable to GCC style (e.g. we have removed the version numbers from
our sources, and adjusted all our scripts for this change recently).

3. We need to establish the ACATS test suite so that anyone can run it. This
is not as comprehensive as our internal test suite (which is not distributable
since it is mostly proprietary code).

4. We need to set up procedures so we can run and test changes that others
make against our internal test suite.

... then hopefullly we can duplicate at least some of these procedures
in a manner that others outside ACT can follow a similar path. We regard
this kind of automatic testing as absolutely crucial.

> With good tools, the release manager can ultimately be
> replaced by shell scripts.

I don't believe that, based on our experience where we have elaborate
scripts that try to automate everything, but you still need a release
manager to coordinate activities and check that everything is working
as expected.

^ permalink raw reply	[flat|nested] 16+ messages in thread
* Re: source mgt....[_HAS_ gcc relevance]
@ 2002-12-16  4:56 Richard Kenner
  2002-12-16  5:33 ` Tom Lord
  0 siblings, 1 reply; 16+ messages in thread
From: Richard Kenner @ 2002-12-16  4:56 UTC (permalink / raw)
  To: lord; +Cc: gcc, torvalds, zack

    but wouldn't it be nice if that were automated: so a developer could
    hit the "try to test and merge" button before going home for the
    night, coming back in the morning to either a commit email or a list
    of test failures

I'm not sure I like that kind of automation because of the potentially
unknown delay in the testing process (what if the queue that runs the
tests got stuck).  I'd want to be able to know and control exactly
*when* the change went in.

^ permalink raw reply	[flat|nested] 16+ messages in thread
* Re: source mgt....[_HAS_ gcc relevance]
@ 2002-12-18 11:03 Robert Dewar
  0 siblings, 0 replies; 16+ messages in thread
From: Robert Dewar @ 2002-12-18 11:03 UTC (permalink / raw)
  To: dewar, lord; +Cc: gcc, torvalds, zack

> A lot of the thinking behind arch is to scale up and simplify adopting
> practices such as you describe so that they are applied by default to
> pretty much all of the free software (and "open source") projects in
> the world.  With your 35, you have social pressures and the power of
> the employer to enforce restrictions like "run the tests before
> committing to mainline" -- but wouldn't it be nice if that were
> automated: so a developer could hit the "try to test and merge" button
> before going home for the night, coming back in the morning to either
> a commit email or a list of test failures -- and if you _didn't_ have
> to write all your own tools for that automation because they were just
> there already, such that setting up a new project with these
> properties was as easy as creating a project on Savannah currently is
> (or, easier :).

Yes, indeed, automating requirements like this is always desirable.
Although you probably want ways to override requirements in emergencies.

What we find is that the key point is that it must be *easy* to follow
procedures, if it is, then they get followed, if not, no amount of
social pressure can guarantee conformance :-)

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

end of thread, other threads:[~2002-12-18 18:23 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-12-14 20:16 source mgt. requirements solicitation Nathanael Nerode
2002-12-14 21:34 ` Linus Torvalds
2002-12-14 23:12   ` source mgt....[_HAS_ gcc relevance] Tom Lord
2002-12-14 22:12     ` Linus Torvalds
2002-12-15  3:04     ` Zack Weinberg
2002-12-15  3:23       ` Tom Lord
2002-12-16  3:05 Robert Dewar
2002-12-16  4:15 ` Tom Lord
2002-12-16  4:40   ` Tom Lord
2002-12-16 16:36   ` Florian Weimer
2002-12-17  0:38     ` Momchil Velikov
2002-12-17 11:41       ` Daniel Egger
2002-12-17 13:17       ` Tom Lord
2002-12-16  4:56 Richard Kenner
2002-12-16  5:33 ` Tom Lord
2002-12-18 11:03 Robert Dewar

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).