Subject: RE: [hackers-il] Maintenance of 10,000,000 lines long application s?

From: Chen Shapira <[email-masked]>
Date: Sun, 6 May 2001 12:33:06 +0200

> this is interesting. how many programmers per such integrator do you
> use? what size of code base (approx.) each such integrator 
> handles? how
> often do you get into situations where the integrator missed 
> problems that
> causes prorgammers to be unable to compile their code for a 
> few hours (or
> more)? what are the programming environments used by these projects?

I was generalizing a bit.

Here's what we do here:

1) We have an inhouse source control system, that is integrated with
compilers, setup builders and other such systems.

2) Each team has one or more baselines on this system, the baseline is where
all the code is, we check things out, make changes, check them in, document
the changes. This baseline is what gets compiled.

3) For each baseline, the team writes a data file, similar in concept to
make files. With special syntax we specify how things should be built, which
baselines do we depend on, which baselines depend on us, how do we want the
setup, where to put the compiled files, etc.

4) We have a frontend allowing anyone to build any baseline by pressing one
button. This will either generate object code, or a product with setup,
depends on the data file.  After the build is done, the person who pressed
the button will be presented with an auto generated message, specifying
whether compatibility broke, what changes were made, etc. The person should
then add documentation, QA notes, etc. and send this male to a list of
people who registered to recieve notifications about this baseline.

5) Registration to baseline: Each person can register on any baseline. He
can choose whethere to recieve email when the build is done, or get email on
every checkin. (The email on checkin is completely automated, containing the
change comments)

6) Change is a logical group of files, that is checked in together with a
comunal comment.

7) This entire system is maintained by a 4 people group, who are responsible
for the compile servers, the CVS servers, and they also go over the data
files of the baselines checking them for mistakes and make fixes and such.
They also write the UI tools.

8) In addition to this, Each group of teams that generate a product with a
setup, has an integrator. 
He is the third year student, who goes over the changes, remind people to
check in their changes, build all the components in the right order, fixes
(or ask others to fix) all problems discovered during the builds, do a
sanity checks, and report the results to project manager.

9) Programming enviroments vary wildly. The rule is a single enviroment per
baseline, but we have Java baselines, VB baselines, C/C++ baselines... The
dat file informs the system which compile server should be used. 

I know this sounds like an overkill, but we have here a company with around
10 products, all very large, and they are pretty depepended on each other...

Which reminds me:

10) We usually don't have problems with *our* integrator missing a problem,
we do however have problems with other products break libraries we depend
on, and they fail to notify us.
It doesn't happen often though.

---

From: guy keren <[email-masked]>
Date: Sun, 6 May 2001 12:49:39 +0300 (EET DST)

you gave a nice and large answer, but you forgot to mention a few
important things :)

1. how many programmers per integrator?
2. approx. how many lines of code per 'baseline'? or to ask it differently
   - how long does a full compilation of a 'baseline' take? during this
   build - can other programmers continue working on their code?
3. when a programmer works on a 'baseline' - do they copy all of its code
   to their own private work space, and compile their own complete private
   set of libraries and binaries? or does this private work place contain
   symbolic links to sources/libraries/binaries located in the 'public'
   baseline, with only files they changed/compiled being kept as real
   copies in the private work space?

4. how often (you said "not often" - that's a very subjective term) do you
   have problems with code changes coming from libraries generated by
   other teams in other baselines? and on the "not often" cases when this
   happen - how long since the problem is first discovered, until the
   programer in your team that found it can continue work?

btw, note that any kind of configuration management environment
works - eventuallly, the problems are solved (until the next time), and
projects get done, and tested, and delivered. the question is how much
this costs. naturally, mercury is a profitable company, so we can assume
that their methods work well. but i've seen at least one company that was
profitable, and yet had a night-merish configuration management system
(which was also built in house, developed and maintaned by a group of
4 or so programmers ....)

On Sun, 6 May 2001, Chen Shapira wrote:

> setup, where toput the compiled files, etc.
>
> depends on the data file.After the build is done, the person who pressed
> To unsubscribe from this group, send an email to:
> [email-masked]
>
>
>
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
>
>

--
guy

"For world domination - press 1,
 or dial 0, and please hold, for the creator." -- nob o. dy