git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Slaughtering the sacred cow
@ 2010-06-08  9:34 Michael J Gruber
  2010-06-08  9:50 ` Ramkumar Ramachandra
  0 siblings, 1 reply; 2+ messages in thread
From: Michael J Gruber @ 2010-06-08  9:34 UTC (permalink / raw)
  To: Git Mailing List

Now that I got your attention, here are some observations and thoughts
about our development model for git.git. In fact I think we have a
successful model (and a great maintainer) but there is always room for
improvement.

The sacred cow from the subject line is backwards compatibility, and it
is sacred for a good reason. People can happily run git.git's master or
even next without too many surprises as long as they're on their watch
for some slightly larger changes in 1.x.0 releases. Distros choose to
follow maint or master.

Still, lately several discussions here have put me in a slaughterous
mood so to say. Our code base is "naturally grown", and as much as I
like that for a garden, it basically makes any attempts at providing a
consistent and smooth sur^Winterface impossible, because this always
requires some cuts. So, why not let the cow do the greenkeeping to get
the ball rolling smoothly again ;)

I think the technical reason behind this issue is the short-livedness of
our topic branches and pu. Who's looking at any 10+ patch series? I
mean, it was always easy to, say,

git merge $(git rev-parse ":/Merge branch
'mg/rev-parse-lrbranches-locals")^2

for stuff on pu and this is even easier now with the topic branches
pushed out by Junio to github. But large series simply get over-grown.

We don't have a place like kernel-next for large structural incompatible
changes. Our "next" is a very stable branch with what will be the next
small increments on master, and it serves a very good purpose.

Shortly before an upcoming 1.x.0 we often have "for-1.x.0"-topics but I
don't think that can house large developments like

- consistent interface for subcommands ("branch --setupstream" vs.
"remote add" etc.),

- consistent approach on DWImery (may require removing some, or making
it dependent on config),

- consistent treatment of porcelain/plumbing hermaphrodites (may require
breaking some assumptuous scripts).

Those are just a few examples of issues which are confusing for new
users, which are there just because they grew to be there (or because of
implementation details), and which don't go away because of that cow.

I don't pretend to have a perfect solution for this, but I'm wondering
whether a longer-lived for-1.x.0 branch (with or without an extra pu,
i.e. not rewinding itself [leaving that for the extra pu] or rewinding)
would be feasible which gets everything from next-master-maint and which
would also be a place to cook larger structural, backwards incompatible
changes. An alternative would be to have a branch like that for a
specific large topic (like one of the above) and focus on that for the
upcoming release.

The idea behind all this is that it would allow to work on a large topic
(breaking compatibility) early on, right after a 1.x.0 (which is
impossible right now), and hopefully have it exposed to more people,
maybe providing an integration branch if we go with the "long lived
large topic branch" approach rather then the first one described above.

As time goes by the cow can do her thing, and people can be aware of
upcoming changes much earlier. Then it should be alright to break a few
more scripts in a 1.x.0 release - we always broke a few, so people would
always have to check before switching anyways.

Cheers,
Michael

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

* Re: Slaughtering the sacred cow
  2010-06-08  9:34 Slaughtering the sacred cow Michael J Gruber
@ 2010-06-08  9:50 ` Ramkumar Ramachandra
  0 siblings, 0 replies; 2+ messages in thread
From: Ramkumar Ramachandra @ 2010-06-08  9:50 UTC (permalink / raw)
  To: Michael J Gruber; +Cc: Git Mailing List

Hi,

Michael J Gruber wrote:
> I don't pretend to have a perfect solution for this, but I'm wondering
> whether a longer-lived for-1.x.0 branch (with or without an extra pu,
> i.e. not rewinding itself [leaving that for the extra pu] or rewinding)
> would be feasible which gets everything from next-master-maint and which
> would also be a place to cook larger structural, backwards incompatible
> changes. An alternative would be to have a branch like that for a
> specific large topic (like one of the above) and focus on that for the
> upcoming release.

I'm relatively new to the list but from what I've seen, I think
keeping a longer-lived branch that accepts less-than-complete patches
is a good idea. Small patches that break backward compatibility are
often criticized (often leading to rejection), while larger patches
with the promise of showing the whole picture often tend to be ignored
due to their sheer size.

-- Ram

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

end of thread, other threads:[~2010-06-08  9:50 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-06-08  9:34 Slaughtering the sacred cow Michael J Gruber
2010-06-08  9:50 ` Ramkumar Ramachandra

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 NNTP newsgroup(s).