all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Eric S. Raymond" <esr@thyrsus.com>
To: Alan Mackenzie <acm@muc.de>
Cc: "Eric S. Raymond" <esr@snark.thyrsus.com>, emacs-devel@gnu.org
Subject: Re: What a modern collaboration toolkit looks like
Date: Mon, 31 Dec 2007 10:25:09 -0500	[thread overview]
Message-ID: <20071231152509.GC8641@thyrsus.com> (raw)
In-Reply-To: <20071231131129.GA2737@muc.de>

Alan Mackenzie <acm@muc.de>:
> Emacs is an atypical, very old, piece of free software.  Wesnoth seems to
> be about 5 years old.  (I haven't found the repository online.)  This has
> some bearing on the differences in development processes.

Indeed.  It means we have a lot of history and bad habits to unburden
ourselves of, and that's a problem Wesnoth does not have as
acutely. (It dates from 2003.)

> > a) That change can be referenced, through its Subversion revision ID.  
> >    (So, for example, "Hey boucman, your r22615 broke linger mode!")
> 
> Hopefully, people are considerate enough not to do this too often;
> continually having to look somewhere else to get context is not nice.

In fact that particular situation is rare.  My point was that Wesnoth's
communications tools help us correct such problems quickly.  What a 
fighter pilot would call our "OODA loop" is very fast.
 
> > b) That change can be backed out as a unit.
> 
> That's fine if nearly all changes are independent.  In Emacs, I think,
> this is not the case.

It's actually very useful even when changes are intertangled.  For one
thing, it makes isolating regressions via a bisection search practical.
While this is theoretically possible under CVS, there is just enough
friction to make it something people seldom or never actually do.

> Such easy backing out could lead to problems.

I find that the problems of easy backout are far outweighed by its benefits.

As a recent example: my lieutenant on one of my other projects (GPSD) committed
a change that broke our regression tests.  It was a day and a half and about
a dozen commits later when I noticed this.  It matters that I was *immediately*
able to back out both the bad commits with high confidence that I was not
leaving the code in an inconsistent state.  (And rap him on the knuckles,
but that was a social act and not a technical one.)
 
> > 2. My commit is also echoed to the IRC channel, where there are almost
> > never fewer than three or four devs hanging out as they hack, chatting
> > in real time.  Review tends to happen instantly.
> 
> What about fixes that are too big for instant review?  Emacs has lots of
> bugs (and often fixes ;-) that are barely tractable, so that the slower
> pace of email seems a better fit.

IRC functions as a kind of triage on such changes.  If we can't resolve
a problem in real time, we fall back to the mailing list.  This happens
much less often than I myself would have expected before I became used
to this style.

I'll admit, it did take me some adjustment to get used to.  The
Wesnoth devs are mostly kids who have grown up in a post-MTV world,
used to constant multitasking.  I just turned 50.  When I first
contemplated getting involved, about nine months ago now, I had to
wrestle with some fear that (a) I would be distracted and losing focus
all the time, and (b) worse, I might discover that I was simply too
old and lacked the mental agility to keep up.

The second, especially, would have been crushing. I had to screw up my
courage to try doing things their way lest I discover myself to
be inadequate.

In fact, both fears proved groundless.  Nowadays I routinely have an IRC
client open in five tabs to three different projects, and it all just
becomes part of my flow.  I think it matters a lot that IRC chat is 
silent -- I absolutely can't imagine imagine maintaining concentration
while multiplexing that many voice channels.

And far from finding I can't keep up, I've discovered that I like the
stimulation.  I grok how the kids feel about this, because mailing-list-only
projects have started to seem slow and boring to me, too.

> I've no experience of IIRC.  But doesn't this way of working mean
> continually dancing from one thing to another?  I don't do that very
> well. 

See above.  I myself was afraid I wouldn't be able to handle this.  But 
I adapted, and now I feel really liberated by having done so.  

>       The "hyperlinks" bit sounds like you have to look at 3 or 4 things
> simultaneously to be able to synthesise a context.  How does this working
> style work for difficult problems?

Same way it does for easy ones.  The difference is that with older, slower
workflows we had to absorb all those bits of context more or less serially
and buffer them in our heads for relatively long periods of time.  I don't 
have to do that as much now -- it's more about keeping track of where the
context is and quickly swapping in the parts I need at any given time.

> > Yet a third is that when we decide to do it, we can converge on a
> > releasable state with almost absurd ease.  Like, Ivanovic (our release
> > manager) will announce "Point release scheduled this coming Wednesday"
> > and everyone will pretty much flip into bug-stomping mode.  The tracker
> > bug list tends to shrink dramatically when this happens -- not only do
> > we get prepared for release but *we know we've done so*.
> 
> Eric, how well do you think this could work at all for Emacs?

I'm going to stop waving my hands and run some numbers.  According to
sloccount, the C core of Emacs is just about twice the size of
Wesnoth's C++.  Assuming the usual quadratic rise in bug density with
LOC, the equivalent release tempo would be three months.

But I think that's an overestimate.  Our devs are more capable, and a fair
amount of the Emacs core is either effectively dead (like, say, the VMS
support) or so stable that it never needs to be touched.  Then there's
the C vs. C++ difference.  

All in all, I think six weeks is a reasonable guess for where we'd end up.

"But..." I hear you say "you're ignoring the Lisp!".  Yes, I am -- and
that's because one thing rather clear from the Changelogs and NEWS
files is that the Lisp code is not where the long-term release
blockers tend to pop up.

> > More generally, development happens *fast*.  I don't have to wait weeks
> > to find out whether other devs think of an idea.  Commonly I know
> > within minutes.
> 
> On emacs-devel, this takes hours, not weeks.  At any given time, most
> Emacs developers are either asleep or doing other things (like earning
> their living).  Doesn't this quick-fire style end up excluding lots of
> hackers from participation?

It doesn't seem to work that way in practice.  Or, at least, I don't
hear hackers bitching about not being involved in decisions.  What the
core devs (including me) seem to do is keep one eye on the project IRC channel 
more or less constantly while doing those other things.
 
> > The Wesnoth devs are good but not exceptionally so, and we're weighed
> > down by a crappy implementation language (C++).
> 
> Yuck!!

Indeed.  I've had to become competent at it.  This has been painful.

> > Nevertheless our productivity, in terms of goals achieved per hour of
> > work, is quite high.  That's because our collaboration tools support
> > everything we do without imposing noticeable process friction.  This
> > makes us dramatically more effective as individuals and as a group than
> > we could possibly be without them.
> 
> Might it also be because your code base is still young, clean and
> flexible?

It's an appealing theory, but...no.  The Wesnoth code is not at all clean
internally, and the Wesnoth devs themselves often bitch about its rigidity.

There are two reasons for this.  One is C++; enough said. The other is
that the Wesnoth devs are, on average, somewhat less capable and a lot
less experienced than Emacs's have been -- and their most serious
weakness tends to be a very limited understanding of design for
maintainability.

The result, unfortunately, is that while the Wesnoth code is much younger
than of Emacs, it has already achieved a comparable cruft level :-(.

> > Lessons for the Emacs project?  Hell, yes.  But I'm not going to write
> > that rant until y'all have had a little time to absorb this description
> > of how things can be.
> 
> I'll look forward to that!  We'd all welcome a process for releasing
> every few months rather than twice a decade.

Yeah.  That would be good.  

My worst-case estimate, with modern tools, would be a three-to-four
month release cycle. 
-- 
		<a href="http://www.catb.org/~esr/">Eric S. Raymond</a>

  parent reply	other threads:[~2007-12-31 15:25 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
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 [this message]
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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20071231152509.GC8641@thyrsus.com \
    --to=esr@thyrsus.com \
    --cc=acm@muc.de \
    --cc=emacs-devel@gnu.org \
    --cc=esr@snark.thyrsus.com \
    /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 external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.