From: steveu on
>steveu <steveu(a)n_o_s_p_a_m.coppice.org> wrote:
>
>>While endless branching is hard to see as a good thing, the "few
branches
>>as possible" mentality mostly comes about *because* you have used CVS.
It
>>has moulded your way of thinking, because it makes merging such a PITA.
>
>If you're going to merge a branch, why branch off in the first
>place?
>
>I have a little trouble conceiving of cases where branching
>ever makes sense, other than political/legal situations
>(i.e. you need to form a code base that is clean of certain IP,
>for example). And then you're probably not going to merge
>later on, other than again from some political event (i.e.
>a command decision by a project manager).
>
>Polymorphism is there; use it.

So you never encounter people who want to go off and experiment? Maybe you
don't work on big projects.

People are actually afraid to experiment to any significant extent in a
project controlled by CVS. They know if the experiment works out, they will
have to practically re-implement the idea from scratch to ever be able to
merge it with the main line code - unless development of that code has been
very stagnant during the experimental period. Compare that to something
like the development of the Linux kernel with GIT. Lots of people, many of
whom hardly ever communicate, go off and experiment all the time. If their
experiment works out well they need to get others interested. It usually
proves straightforward to integrate their stuff, so some people may try it
with their own current code. If a consensus builds that the experimental
code is good stuff, final integration is also easy.

Easy integration has a profound and beneficial effect on working practices
in large diverse projects.

Steve

From: Steve Pope on
steveu <steveu(a)n_o_s_p_a_m.coppice.org> wrote:

> Attribution Lost wrote

>>steveu <steveu(a)n_o_s_p_a_m.coppice.org> wrote:

>>>While endless branching is hard to see as a good thing, the "few
>branches
>>>as possible" mentality mostly comes about *because* you have used CVS.
>It
>>>has moulded your way of thinking, because it makes merging such a PITA.
>>
>>If you're going to merge a branch, why branch off in the first
>>place?
>>
>>I have a little trouble conceiving of cases where branching
>>ever makes sense, other than political/legal situations
>>(i.e. you need to form a code base that is clean of certain IP,
>>for example). And then you're probably not going to merge
>>later on, other than again from some political event (i.e.
>>a command decision by a project manager).
>>
>>Polymorphism is there; use it.
>
>So you never encounter people who want to go off and experiment? Maybe you
>don't work on big projects.

>People are actually afraid to experiment to any significant extent in a
>project controlled by CVS. They know if the experiment works out, they will
>have to practically re-implement the idea from scratch to ever be able to
>merge it with the main line code - unless development of that code has been
>very stagnant during the experimental period.

If the experiment is larger than can be conducted in a
sandbox, then you start checking it in. Using polymorphism,
without breaking anything, making sure the regressions
still pass.

It's not a matter of not working on large projects. Very
large projects use lots of polymorphism and are targeted
at multiple applications, including experiments, without
branching.

Where you are tempted to form a branch is when the main
project is broken, it does not have its own tests,
so you can't know you've broken it further when you do
a checkin. That is when you want to just take the code
you need and form a new branch. Basically if starting from
a failed situation, you'd like your own branch to distances
yourself from the failure.

But to say you need branches just to do large projects,
I'm pretty unconvinced.

> Compare that to something
>like the development of the Linux kernel with GIT. Lots of people, many of
>whom hardly ever communicate, go off and experiment all the time. If their
>experiment works out well they need to get others interested. It usually
>proves straightforward to integrate their stuff, so some people may try it
>with their own current code. If a consensus builds that the experimental
>code is good stuff, final integration is also easy.

>Easy integration has a profound and beneficial effect on working practices
>in large diverse projects.

Still doesn't say why these experiments could not have been
checked into a main branch. Do people not know how to write
code that doesn't break everything? Do they not know how
to clean up the truly dead code? I'm just not convinced
there's a problem here.

Steve
From: Steve Pope on
steveu <steveu(a)n_o_s_p_a_m.coppice.org> wrote:

>People are actually afraid to experiment to any significant extent in a
>project controlled by CVS. They know if the experiment works out, they will
>have to practically re-implement the idea from scratch to ever be able to
>merge it with the main line code - unless development of that code has been
>very stagnant during the experimental period. Compare that to something
>like the development of the Linux kernel with GIT.

My recollection is they were gushing over how good SVN was
until it required a license fee, then all of a sudden GIT
was so much better.

But I'm being cynical perhaps.

Steve
From: steveu on
>steveu <steveu(a)n_o_s_p_a_m.coppice.org> wrote:
>
>>People are actually afraid to experiment to any significant extent in a
>>project controlled by CVS. They know if the experiment works out, they
will
>>have to practically re-implement the idea from scratch to ever be able
to
>>merge it with the main line code - unless development of that code has
been
>>very stagnant during the experimental period. Compare that to something
>>like the development of the Linux kernel with GIT.
>
>My recollection is they were gushing over how good SVN was
>until it required a license fee, then all of a sudden GIT
>was so much better.
>
>But I'm being cynical perhaps.

SVN has always been free and the The Linux kernel people never used it.
They always said it was a waste of time. They did use and love BitKeeper,
which is commercial. When the relationship for using that went sour, Linus
Torvalds implemented GIT, which is closely modeled on BitKeeper's
functionality.

Steve

From: Michael Plante on
Steveu wrote:
>>steveu <steveu(a)n_o_s_p_a_m.coppice.org> wrote:
>>
>>>People are actually afraid to experiment to any significant extent in a
>>>project controlled by CVS. They know if the experiment works out, they
>will
>>>have to practically re-implement the idea from scratch to ever be able
>to
>>>merge it with the main line code - unless development of that code has
>been
>>>very stagnant during the experimental period. Compare that to something
>>>like the development of the Linux kernel with GIT.
>>
>>My recollection is they were gushing over how good SVN was
>>until it required a license fee, then all of a sudden GIT
>>was so much better.
>>
>>But I'm being cynical perhaps.
>
>SVN has always been free

Yes.


>and the The Linux kernel people never used it.

Not from what I'm reading. The people who were willing to used bitkeeper
under an agreement with the company, and others had some ability to
interoperate using svn and cvs. Not to say they liked svn/cvs necessarily,
but some apparently used it.


>They always said it was a waste of time.

Didn't see that, but not surprised. Bitkeeper and Git are distributed,
svn/cvs are not. And Linus claimed to have been forced to use CVS for 7
(?) years on another project and "hates it with a passion," claiming
emailing tarballs and patches are better than CVS.


>They did use and love BitKeeper,
>which is commercial.

And some complained about the license, but even RMS didn't deny the
technical superiority of BitKeeper here:

http://www.linux.com/archive/articles/44465

"[...]but those in our community who value technical advantage above
freedom and community were susceptible to it."



>When the relationship for using that went sour, Linus
>Torvalds implemented GIT, which is closely modeled on BitKeeper's
>functionality.