From: Gregory Collins <greg@maptuit.com>
To: rms@gnu.org
Cc: emacs-devel@gnu.org
Subject: Re: What a modern collaboration toolkit looks like
Date: Mon, 07 Jan 2008 12:17:22 -0500 [thread overview]
Message-ID: <m1sl19sggt.fsf@subrosa.ca> (raw)
In-Reply-To: <E1JB20Y-0006GY-AT@fencepost.gnu.org> (Richard Stallman's message of "Sat, 05 Jan 2008 00:55:46 -0500")
Richard Stallman <rms@gnu.org> writes:
> It sounds like "git push" is the real analogue of CVS commit, and that
> this is the closest match-up between the concepts of git and the
> concepts of CVS:
>
> CVS GIT
> save file = commit
> commit = pull or push
>
> But I still don't understand what step actually alters the trunk that
> users will get by default from the public repository. Does `push' do
> that? If not `push', then what?
The discussion thusfar has been centred on the nuts and bolts of
distributed version control, and I think the point that's getting
overlooked is that decentralization allows you to arbitrarily redefine
the topology of how change flows through a project.
To make this more concrete, here are some commonly-used workflow models:
1. CVS-style / star topology
----------------------------
There is a centralized "one true repository" at a known location
(e.g. http://savannah.gnu.org/.../hg/emacs-trunk). A medium-sized group
of hackers have "push" rights there. (It's the "push" that alters the
trunk here.)
This approach doesn't scale well, although for emacs the commit rate is
probably low enough that this topology is manageable. (That said, how
many times have you asked "who committed this wonky change that broke
X?" this year?)
2. "Lieutenant" / "subsystem percolation"
------------------------------------------
There is a "canonical" version of emacs that lives on savannah. (This is
always true so I'll stop mentioning it.) The project is split by
subsystem (and possibly is split further, resulting in a tree
structure), and for each a maintainer keeps a source tree with changes
to that given subsystem. When two subsystems need to be updated
simultaneously due to an interface change, the lieutenants coordinate
amongst themselves, pulling changes between each other.
When a change is deemed ready to go to trunk (or to a parent node in the
tree), the upstream maintainer pulls these changes into her tree. Note
here that changes are only pulled, never pushed.
Very often, subsystem maintainers "merge down" changes from trunk, so
that bugfixes/stable new features from other branches are continually
integrated. Everyone works hard to ensure that changes don't break
anything upstream. (cf. the ongoing VC-mode restructuring; under this
scheme those changes would not have been pushed to trunk until they were
complete and tested.)
This approach scales VERY well (it's what linux-kernel uses, and their
code churn rate is *incredible*) but is probably wrong for emacs.
3. Mailing list w/ gatekeeper(s)
---------------------------------
This is how mercurial manages its own development. Proposed changes are
sent in patch form to a mailing list, which is dedicated to the
discussion and review of such patches. The central repository is
read-only except for a small set of integrators. When a change has been
reviewed + tested, an integration crew member pulls the patch from email
into the central tree.
This is the approach I'd suggest for emacs (and it's the one we
instituted for the project I maintain at my workplace). The main
advantages:
- code gets reviewed by more eyes. Cf. the emacs-devel+emacs-commit
lists; it's my observation that bad changes are often discussed +
reviewed AFTER they've been committed to the trunk. How many
questionable or marginal changes are slipping by, do you think?
- VC tools streamline the process of sending + reviewing changes. I can
type "hg email tip" from my working branch to send my last changeset
to the list for discussion.
On the negative side, this approach becomes asymptotically less
efficient as the number of patches per day increases. However: the
beauty of distributed version control is that you can rework your
topology at will.
To get a flavour for how this process works from a cultural standpoint,
you can read the mercurial-devel mailing list archive at:
http://selenic.com/pipermail/mercurial-devel/
Thanks,
Gregory Collins <greg@maptuit.com>
next prev parent reply other threads:[~2008-01-07 17:17 UTC|newest]
Thread overview: 277+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-30 12:22 What a modern collaboration toolkit looks like Eric S. Raymond
2007-12-30 15:32 ` Thien-Thi Nguyen
2007-12-30 15:42 ` Richard Stallman
2007-12-30 17:22 ` Eric S. Raymond
2007-12-30 20:25 ` Robert J. Chassell
2007-12-30 21:55 ` Nick Roberts
2007-12-30 22:25 ` Lennart Borgman (gmail)
2007-12-30 22:58 ` Richard Stallman
2007-12-30 22:58 ` Richard Stallman
2007-12-31 2:58 ` Eric S. Raymond
2007-12-31 12:14 ` Thien-Thi Nguyen
2008-01-01 23:57 ` John S. Yates, Jr.
2008-01-02 1:46 ` Thien-Thi Nguyen
2007-12-31 22:29 ` Richard Stallman
2008-01-01 0:19 ` Leo
2007-12-31 4:31 ` Eli Zaretskii
2007-12-31 13:07 ` Eric S. Raymond
2007-12-31 20:57 ` Eli Zaretskii
2007-12-31 21:41 ` Eric S. Raymond
2007-12-31 23:00 ` Nick Roberts
2008-01-01 0:50 ` Eric S. Raymond
2008-01-01 4:22 ` Eli Zaretskii
2008-01-01 6:20 ` Eric S. Raymond
2007-12-31 23:12 ` Eli Zaretskii
2008-01-01 0:27 ` Dan Nicolaescu
2008-01-01 3:00 ` Mike Mattie
2008-01-01 7:57 ` Drew Adams
2008-01-02 19:28 ` Agustin Martin
2008-01-03 9:50 ` Richard Stallman
2008-01-05 3:34 ` Mike Mattie
2008-01-06 8:09 ` Richard Stallman
2008-01-03 9:50 ` Richard Stallman
2008-01-01 20:44 ` Eli Zaretskii
2008-01-02 4:17 ` Dan Nicolaescu
2008-01-05 10:48 ` Eli Zaretskii
2008-01-01 0:57 ` Eric S. Raymond
2008-01-01 4:21 ` Eli Zaretskii
2008-01-01 0:10 ` Miles Bader
2008-01-01 1:06 ` Eric S. Raymond
2008-01-01 1:41 ` Miles Bader
2008-01-01 2:16 ` Eric S. Raymond
2008-01-01 19:43 ` Tom Tromey
2008-01-01 21:11 ` Nick Roberts
2008-01-02 0:25 ` Miles Bader
2008-01-02 1:12 ` Tom Tromey
2008-01-02 17:19 ` On-the-fly compiling (was Re: What a modern collaboration toolkit looks like) Mark A. Hershberger
2008-01-02 20:57 ` On-the-fly compiling Stefan Monnier
2008-01-02 22:33 ` Lennart Borgman (gmail)
2008-01-02 23:09 ` Tom Tromey
2008-01-02 9:53 ` What a modern collaboration toolkit looks like Richard Stallman
2008-01-01 11:28 ` Tassilo Horn
2008-01-01 20:36 ` Eli Zaretskii
2008-01-02 0:29 ` Miles Bader
2008-01-02 4:14 ` Eli Zaretskii
2008-01-02 4:33 ` Miles Bader
2008-01-02 8:24 ` Werner LEMBERG
2008-01-02 8:20 ` Tassilo Horn
2008-01-03 9:50 ` Richard Stallman
2008-01-03 13:15 ` Ævar Arnfjörð Bjarmason
2008-01-04 13:56 ` Stefan Monnier
2008-01-02 8:41 ` tomas
2008-01-03 9:50 ` Richard Stallman
2008-01-03 10:16 ` Miles Bader
2008-01-05 5:55 ` Richard Stallman
2008-01-05 6:59 ` Óscar Fuentes
2008-01-05 15:29 ` Eli Zaretskii
2008-01-05 19:53 ` Óscar Fuentes
2008-01-06 8:09 ` Richard Stallman
2008-01-05 8:55 ` David Kastrup
2008-01-05 9:55 ` Werner LEMBERG
2008-01-05 15:23 ` Eli Zaretskii
2008-01-05 15:31 ` Lars Magne Ingebrigtsen
2008-01-05 15:39 ` David Kastrup
2008-01-06 8:09 ` Richard Stallman
2008-01-06 9:51 ` tomas
2008-01-06 11:02 ` David Kastrup
2008-01-06 12:05 ` Robert J. Chassell
2008-01-06 12:40 ` David Kastrup
2008-01-06 16:51 ` Robert J. Chassell
2008-01-06 17:03 ` David Kastrup
2008-01-07 4:18 ` Richard Stallman
2008-01-05 22:46 ` Stefan Monnier
2008-01-06 18:09 ` Richard Stallman
2008-01-07 17:17 ` Gregory Collins [this message]
2008-01-07 23:21 ` Stephen J. Turnbull
2008-01-08 0:25 ` Gregory Collins
2008-01-08 0:51 ` David Kastrup
2008-01-08 2:43 ` Mike Mattie
2008-01-08 3:03 ` YAMAMOTO Mitsuharu
2008-01-08 4:25 ` Mike Mattie
2008-01-08 19:07 ` Richard Stallman
2008-01-03 10:32 ` David Kastrup
2008-01-01 17:11 ` Alan Mackenzie
2008-01-01 18:05 ` Werner LEMBERG
2008-01-01 18:27 ` Alan Mackenzie
2008-01-01 18:28 ` Werner LEMBERG
2008-01-02 9:53 ` Richard Stallman
2008-01-02 10:36 ` Werner LEMBERG
2008-01-02 12:23 ` Eric S. Raymond
2008-01-04 5:27 ` Richard Stallman
2008-01-02 11:27 ` Thien-Thi Nguyen
2008-01-02 12:17 ` Eric S. Raymond
2008-01-03 1:26 ` Stephen J. Turnbull
2008-01-03 2:49 ` Eric S. Raymond
2008-01-04 5:27 ` Richard Stallman
2008-01-04 5:35 ` Miles Bader
2008-01-04 12:47 ` Eric S. Raymond
2008-01-05 14:30 ` Richard Stallman
2008-01-06 1:10 ` Miles Bader
2008-01-04 12:45 ` Eric S. Raymond
2008-01-05 14:30 ` Richard Stallman
2008-01-05 15:29 ` Eric S. Raymond
2008-01-05 15:59 ` Andreas Schwab
2008-01-06 2:14 ` Mike Mattie
2008-01-03 1:08 ` Giorgos Keramidas
2008-01-03 2:56 ` Eric S. Raymond
2008-01-03 3:18 ` Giorgos Keramidas
2008-01-04 5:27 ` Richard Stallman
2008-01-04 8:51 ` David Kastrup
2008-01-05 14:30 ` Richard Stallman
2008-01-05 15:28 ` David Kastrup
2008-01-06 10:46 ` Richard Stallman
2008-01-06 11:10 ` David Kastrup
2008-01-07 4:18 ` Richard Stallman
2008-01-07 4:36 ` dhruva
2008-01-07 4:52 ` Sam Steingold
2008-01-07 5:09 ` dhruva
2008-01-07 8:17 ` David Kastrup
2008-01-07 15:37 ` Stefan Monnier
2008-01-07 15:47 ` David Kastrup
2008-01-07 16:22 ` Stefan Monnier
2008-01-07 17:09 ` David Kastrup
2008-01-07 15:40 ` CHENG Gao
2008-01-07 23:36 ` Stephen J. Turnbull
2008-01-08 4:31 ` CHENG Gao
2008-01-08 5:07 ` Mike Mattie
2008-01-08 2:56 ` Mike Mattie
2008-01-08 9:37 ` Andreas Schwab
2008-01-07 5:16 ` Jason Earl
2008-01-07 17:16 ` Richard Stallman
2008-01-07 17:45 ` Gregory Collins
2008-01-08 19:07 ` Richard Stallman
2008-01-08 19:50 ` Miles Bader
2008-01-13 20:06 ` Giorgos Keramidas
2008-01-14 11:28 ` Richard Stallman
2008-01-07 21:28 ` Jason Earl
2008-01-07 8:15 ` David Kastrup
2008-01-07 8:33 ` Giorgos Keramidas
2008-01-07 23:50 ` Stephen J. Turnbull
2008-01-05 21:11 ` Stephen J. Turnbull
2008-01-06 18:08 ` Richard Stallman
2008-01-07 9:35 ` Piet van Oostrum
2008-01-01 20:53 ` Nick Roberts
2008-01-02 9:53 ` Richard Stallman
2008-01-02 12:24 ` Eric S. Raymond
2008-01-02 15:19 ` David Kastrup
2008-01-02 20:35 ` Karl Fogel
2008-01-02 19:19 ` Andreas Schwab
2008-01-02 19:23 ` Romain Francoise
2008-01-03 1:18 ` Giorgos Keramidas
2008-01-03 7:55 ` David Kastrup
2008-01-02 9:53 ` Richard Stallman
2008-01-02 10:03 ` David Kastrup
2008-01-02 10:05 ` Tassilo Horn
2008-01-02 11:31 ` Alan Mackenzie
2008-01-02 11:28 ` Tassilo Horn
2008-01-02 14:26 ` Óscar Fuentes
2008-01-02 19:48 ` Karl Fogel
2008-01-02 18:43 ` Andreas Schwab
2008-01-02 22:10 ` Alfred M. Szmidt
2008-01-03 2:58 ` Karl Fogel
2008-01-03 1:21 ` Giorgos Keramidas
2008-01-03 9:14 ` Andreas Schwab
2008-01-03 10:57 ` Giorgos Keramidas
2008-01-01 19:37 ` Eric S. Raymond
2008-01-01 21:46 ` Alan Mackenzie
2008-01-01 22:49 ` Eric S. Raymond
2008-01-02 17:05 ` Mark A. Hershberger
2008-01-03 9:49 ` Richard Stallman
2008-01-02 8:35 ` Tassilo Horn
2008-01-02 5:54 ` John S. Yates, Jr.
2008-01-02 11:52 ` Eric S. Raymond
2008-01-03 9:50 ` Richard Stallman
2008-01-02 8:51 ` tomas
2008-01-02 9:53 ` Richard Stallman
2008-01-01 22:01 ` Romain Francoise
2007-12-31 13:11 ` Alan Mackenzie
2007-12-31 13:24 ` Miles Bader
2007-12-31 13:44 ` Alan Mackenzie
2007-12-31 15:45 ` Eric S. Raymond
2007-12-31 15:14 ` Juanma Barranquero
2007-12-31 15:31 ` Eric S. Raymond
2007-12-31 15:25 ` Eric S. Raymond
2008-01-01 20:34 ` Alan Mackenzie
2008-01-01 20:57 ` Eric S. Raymond
2008-01-02 9:53 ` Richard Stallman
2008-01-02 12:29 ` Eric S. Raymond
2008-01-02 12:59 ` dhruva
2008-01-02 13:11 ` Miles Bader
2008-01-02 13:17 ` Tassilo Horn
2008-01-02 13:49 ` David Kastrup
2008-01-04 5:28 ` Richard Stallman
2008-01-04 7:03 ` John S. Yates, Jr.
2008-01-05 14:29 ` Richard Stallman
2008-01-02 13:48 ` Werner LEMBERG
2008-01-02 13:56 ` dhruva
2008-01-02 14:55 ` Eric S. Raymond
2008-01-03 1:13 ` Giorgos Keramidas
2008-01-02 14:50 ` Eric S. Raymond
2008-01-19 17:45 ` Jari Aalto
2008-01-20 2:59 ` dhruva
2008-01-20 5:10 ` Miles Bader
2008-01-20 5:36 ` Juanma Barranquero
2008-01-20 6:03 ` Miles Bader
2008-01-20 19:28 ` Eli Zaretskii
2008-01-20 20:42 ` Juanma Barranquero
2008-01-20 20:17 ` Juanma Barranquero
2008-01-20 20:28 ` Juanma Barranquero
2008-01-21 2:11 ` Miles Bader
2008-01-21 2:38 ` Karl Fogel
2008-01-21 2:49 ` Miles Bader
2008-01-21 3:06 ` Nick Roberts
2008-01-21 3:17 ` Miles Bader
2008-01-21 3:26 ` Stephen J. Turnbull
2008-01-21 3:16 ` Glenn Morris
2008-01-21 4:11 ` Nick Roberts
2008-01-21 10:00 ` Thien-Thi Nguyen
2008-01-21 2:41 ` Juanma Barranquero
2008-01-21 3:01 ` Nick Roberts
2008-01-21 9:07 ` Richard Stallman
2008-01-21 15:51 ` Dan Nicolaescu
2008-01-21 17:37 ` Miles Bader
2008-01-21 17:53 ` Tom Tromey
2008-01-21 20:06 ` Stefan Monnier
2008-01-21 19:50 ` Tom Tromey
2008-01-22 0:33 ` Dan Nicolaescu
2008-01-24 14:43 ` Mark A. Hershberger
2008-01-24 15:00 ` Juanma Barranquero
2008-01-24 15:34 ` dhruva
2008-01-24 19:52 ` Stephen J. Turnbull
2008-01-25 0:43 ` Juanma Barranquero
2008-01-25 22:47 ` Richard Stallman
2008-01-25 23:13 ` Alfred M. Szmidt
2008-01-25 23:36 ` Miles Bader
2008-01-27 0:45 ` Richard Stallman
2008-01-27 17:39 ` David Kastrup
2008-01-27 20:06 ` Nick Roberts
2008-01-27 22:21 ` David Kastrup
2008-01-27 23:58 ` Johan Bockgård
2008-01-28 7:17 ` Richard Stallman
2008-01-28 7:17 ` Richard Stallman
2008-01-28 7:57 ` GNU Project [was: Re: What a modern collaboration toolkit looks like] Nick Roberts
2008-01-28 21:32 ` Richard Stallman
2008-01-28 7:18 ` What a modern collaboration toolkit looks like Richard Stallman
2008-01-28 7:30 ` David Kastrup
2008-01-28 9:18 ` Stephen J. Turnbull
2008-01-28 21:32 ` Richard Stallman
2008-01-26 1:23 ` Thomas Lord
-- strict thread matches above, loose matches on Subject: below --
2008-01-01 3:09 Nick Roberts
2008-01-01 6:24 ` Eric S. Raymond
2008-01-03 20:32 Trey Jackson
2008-01-04 9:46 ` dhruva
2008-01-05 13:36 ` Eli Zaretskii
2008-01-05 15:04 ` dhruva
2008-01-05 15:13 ` Eli Zaretskii
2008-01-06 1:17 ` Miles Bader
2008-01-04 13:43 ` Gianluca Della Vedova
2008-01-05 14:30 ` Richard Stallman
2008-01-06 5:03 ` Trey Jackson
2008-01-06 6:58 ` Nick Roberts
2008-01-07 4:57 ` Trey Jackson
2008-01-07 5:54 ` Nick Roberts
2008-01-06 18:09 ` Richard Stallman
2008-01-07 5:16 ` Trey Jackson
2008-01-07 6:15 ` Nick Roberts
2008-01-07 15:41 ` Stefan Monnier
2008-01-29 5:43 Werner LEMBERG
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m1sl19sggt.fsf@subrosa.ca \
--to=greg@maptuit.com \
--cc=emacs-devel@gnu.org \
--cc=rms@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
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).