Collaborative Flaming

Roy T. Fielding (fielding@avron.ICS.UCI.EDU)
Sun, 2 Oct 1994 12:21:55 +0100

*sigh* This list gets more like netnews every week.

At 6:37 PM 10/1/94, Richard Huddleston wrote:
>I've just spent the past six weeks wading through the biggest collection
>of spaghetti code I've ever seen in my life: the NCSA httpd.

And Marc Andreessen responded:
>New to this whole programming thing, hm?

Richard,

Sure, Marc may have seemed a bit presumptive with that caustic remark,
but you most certainly deserved it. Yes, the code is spaghetti, but for
many good reasons -- Ari mentioned just a few. Personally, I've seen much
worse (and it wasn't even free). NCSA httpd is mostly nasty because it
works on 40-odd different platforms, including such bone-headed examples
as NeXTOS, AIX, and Solaris, and each platform was added one at a time
(often via patches from elsewhere). Rob certainly knows it is spaghetti --
he was planning on re-architecting the whole bloody thing, but got swept
off his feet [by the MCom wave] before he could start.

I like some of the obscure comments. For one thing, they remind me just
how much I owe Rob [literally -- do a "grep Roy *.h *.c" on the src directory
to find out how much]. In many cases, they explain why a particular
section of code looks so strange -- because "normal" code broke on one
(or more) of the many platforms. Sure, I would *prefer* that the code had
better commenting, and the occasional "goto" causes my heart to skip a beat,
but then if I *really* cared about it, there was nothing stopping me
from producing a public patch. And, when I couldn't figure something
out, Rob would ALWAYS answer my questions.

Collaborative software development is more a social process than an
engineering process -- your brash statements about the quality of the
NCSA httpd code is the social equivalent of a neophyte entering the
monastery for the first time and yelling for everyone to hear:

"The New Testament makes for a pretty good story, but geez the
writing is crap! The grammar sucks, sentences run on and on,
and the spelling looks like it was checked by an illiterate
sheep-trainer! Why, I've seen more divine inspiration in the
arrangement of puke after a fraternal rush!

So, would any of you like to help me rewrite it?"

Well, okay, so I'm exaggerating a bit -- nobody's been burned at the stake
for misinterpreting HTTP (yet). Mind you, Rob has performed a few miracles
in his time, so I'd avoid getting on his bad side (just in case ;-).

You see, the fact is that you haven't EARNED the right to criticize that
code yet. Rob (of course) has, Ari (CERN httpd) has, Marc (Mosaic) has,
and even I have (libwww-perl), but that's because we have already
contributed to it (or the WWW code in general).

THAT IS THE NATURE OF PUBLIC-DOMAIN CODE.

You are perfectly welcome to bewail the state of Microsoft code at any
time -- you paid for it. The only way to "pay" for public-domain code is
to contribute toward its development.

Fix it first and make the result publicly available. THEN you will have
the right to complain until you are blue in the mouth (or fingertips)
and we will all like you anyway (assuming you eventually stop).

.....Roy Fielding ICS Grad Student, University of California, Irvine USA
<fielding@ics.uci.edu>
<URL:http://www.ics.uci.edu/dir/grad/Software/fielding>

p.s. my apologies to religious-types everywhere. ;-)