Have You Met Your Dog, Patches?
codinghorror.com
codinghorror.com
Also, there is a picture of a dog.
I remember her bringing home a listing (remember listings?) and trying to figure out how to change some loop. It had already been 'fixed' a number of times using this methodology, so it was a mess of nested if statements. I suggested that it needed rewriting. (Although this was the right answer, I didn't actually have the programming experience to know this at the time). Unfortunately, she thought that was too large a change to be acceptable to the client.
I'm elbow-deep in patch remediation right now, and even though I'm not worried about breaking anything (I have good code coverage and a big automated test suite), it's still mentally draining to do it right.
These problems can be solved, one at a time, by carefully moving code, refactoring, changing interfaces. They can be done by one programmer working carefully and checking in his changes all at once, so that nobody else is disrupted. Even fairly major architectural changes can be done without throwing away the code.
Joel, I'm sure, is not advocating never re-writing anything at all, and if you think that, sheesh, I'd hate to see the code you work on...
Apache's design is completely degenerate: you're encouraged to do all of these logically independent things in one process, even the app execution!
Years ago I used lighttpd and even hacked it's webdav implementation for using on localhost as an alternative to FUSE on OS X. I eventually realized that they made all the same design mistakes as Apache, they just had the courtesy to use epoll (the Apache MPMs are a cruel joke).
I hear what you're saying about it being monolithic, but I do think it has its place.
If you just need to serve static pages nginx is perfect by itself. If you really need a monolithic swiss-army-knife, lighttpd is at least a pretty good implementation of a mediocre idea.
I really dislike a lot of things about Rails, but I will be eternally grateful for the way their community accidentally demonstrated to the world that the ASF's crap was not the alpha and the omega of webserving. At the time the only options that people thought viable were httpd and overarchitected babel towers (lots of Java crap, WS-*, Zope, etc.).