about summary refs log tree commit homepage
path: root/site/src/not_mongrel.page
diff options
context:
space:
mode:
Diffstat (limited to 'site/src/not_mongrel.page')
-rw-r--r--site/src/not_mongrel.page97
1 files changed, 0 insertions, 97 deletions
diff --git a/site/src/not_mongrel.page b/site/src/not_mongrel.page
deleted file mode 100644
index b7ff121..0000000
--- a/site/src/not_mongrel.page
+++ /dev/null
@@ -1,97 +0,0 @@
----
-title: Not Mongrel
-inMenu: true
-directoryName: Not Mongrel
----
-
-h1. What Mongrel Isn't
-
-h2. Or, Write Your Own Damn Web Server
-
-Every once in a while I get someone who sends me an e-mail a lot like this:
-
- "Hey Zed!  I got this great idea for Mongrel.  All you have to do is
- completely change the internal processing, add 200 more methods to the HTTP
- parser, make it run on Solaris ZFS with AIX backends, serve Bittorrent over
- Ethernet, and have it save Korean orphans while eating a Mango in the back
- seat of an El Camino driven by twenty midget clowns.  If you do that I'll be
- rich!  Uh, we'll be rich!"
-
-Mongrel is an HTTP server for Ruby applications.  It does the bare minimum necessary to
-serve a Ruby application.  That's it.  No more, no less.  I fight off features all the
-time until they're absolutely needed, and usually if someone needs it they can write
-their own special GemPlugin and serve it up without even talking to me.  Mongrel is
-great that way and I love when people extend it for their own uses.
-
-Notice I said "I love it when people extend it for their own uses."  I didn't say
-any of the following:
-
-* "I love doing other people's dirty work so that they can make millions off the sweat on my back."
-* "I am your whore, so sure I'll get right to writing that Bittorrent client."
-* "I would love to be your corporate tool since I'm all about getting screwed."
-* "Wow that idea is so brilliant I think I'll sign an NDA right away so you can take all my rights and all my work."
-
-If you have a feature that you think would be great for Mongrel, then go for it, but you
-implement it first.  I can give you advice, give you help, encouragement, meet you for
-coffee at conferences and I'll even take reasonable patches if you find bugs and do come up
-with nice little ideas.
-
-But don't send me monster patches that make your application work better and expect
-it to get put into the Mongrel core within the hour.  This is called "code fisting".
-
-h2. Code Fisting
-
-I worked with this guy once who walked into my office one day to tell me that
-he had started reorganizing the code base for the product.  Problem was he
-started this completely useless reorganization two days before a big
-deployment, checked it into the CVS repository without telling anyone, didn't
-get it working at all, and then had to go on vacation that same day.  He was in
-my office to *tell* me to clean up his mess since his changes completely broke
-the build.  He did all of this without telling anyone or asking first.
-
-This is "code fisting", where you shove large amounts of code at people where
-it isn't wanted.  When you do this all you're doing is pissing off the people
-you work with and costing your employer money.  In an open source project it
-can get you kicked out, ridiculed in public, and jeopardize your reputation.
-
-I find that people who do this seem to not understand the #1 rule about working
-with others on a software project:
-
-  "Whenever you do something make sure it causes the least amount of suffering
-  for others."
-
-Change is important and the project needs it to improve, but if you go
-thrusting your nasty designs on other people in surprise Ninja moves then
-you're not following the rule.
-
-So how do you reduce the suffering that comes from big changes?
-
-h2. Code Lube
-
-Code lube is the answer to *necessary* code fisting.  Code lube is a
-combination of communication, coordination, and gently applying your changes
-slowly over time until they're in sync with the rest of the world.  You have to
-baby step the other participants and if they aren't receptive, then put your
-stuff into a patch or a branch and come back to it later.
-
-This includes changes that aren't related to code.  Deployments need to be
-heavily coordinated.  Moving servers, changing database schemas, installing new
-versions of tools, and changing important documentation all require talking
-with people.
-
-
-h2. Contributing To Mongrel
-
-Hook everyone up with a bit of code lube.  Talk with people on the project,
-contribute something small and useful first.  Don't just change all the
-STDERR usage to $stderr so that you can get a nice printout for your unit
-tests (especially when there's already a simpler existing way).  Talk with
-people first and see if they're receptive.
-
-If they're not receptive, take the Mongrel code and do it yourself.  You never
-know, maybe we're all stupid and you're brilliant.  Since Mongrel is open source
-and you've apparently got the free time, then grab the code and try out your
-idea.  If it turns out to be a great one *then* talk with people to get it
-implemented.
-
-Otherwise, have fun with the project.