
<h1>About Mongrel2</h1>

<p style="font-size: 1.2em;">Mongrel2 is an <em>application</em>,
<em>language</em>, and <em>network architecture</em> <b>agnostic</b> web
server that focuses on web <b>applications</b> using <em>modern</em> browser
technologies. <img src="http://mongrel2.org/static/logo.png" align="right"></p>

<h2><a name="features">Features</a></h2>

<ul>
    <li><b>Language Agnostic</b> with a simple backend protocol supporting <a href="#languages">17 languages and platforms</a> all written by Mongrel2 fans.</li>
    <li><b>Modern Browser Friendly</b> designed to handle HTTP, Flash XMLSockets, or WebSockets, Long Polling on the same socket transparently.</li>
    <li><b><a href="http://zeromq.org">ZeroMQ</a> Enabled</b> as well as HTTP proxy support so it works with what you have already while giving you new super powers.</li>
    <li><b>Network Architecture Agnostic</b> so you can carve your operations up anyway that reduces costs.</li>
    <li><b>N:M Messaging Patterns</b> means you can have any N handlers answer to any M browsers arbitrarily, but still easy to do plain request/response.</li>
    <li><b>Automation Loving Configs</b> that are easily accessible via any programming language with an Model-View-Controller design.</li>
    <li><b>Modern Internal Design</b> using the Mongrel 1 HTTP parser powering many big companies with a proven security track record, event based I/O, fast coroutines
    to handle that I/O, and smart reasonable defaults with zero configuration needed usually.</li>
    <li><b>Documented, Documented, Documented</b> We <a href="http://mongrel2.org/static/mongrel2-manual.html">document everything</a> in a well written manual that
    shows you how to use every feature.</li>
    <li><b>BSD Licensed</b> and all with a <a href="/wiki?name=License">BSD 3-clause license</a>.</li>
    <li><b><a href="http://tir.mongrel2.org/">Tir</a></b> An official framework written in Lua that shows how to use Mongrel2 to create <a href=
"#frameworks">other frameworks for PHP, Python, etc</a>.</li>
</ul>



<h2><a name="download">Download</a></h2>

<p>Mongrel2 is now 1.7.5:</p>

<ul>
    <li><a href="/static/downloads/mongrel2-1.7.5.tar.bz2">mongrel2-1.7.5.tar.bz2</a></li>
</ul>


<h2><a name="docs">Documentation</a></h2>

<p>Mongrel2 is a very well documented piece of software, as we think great docs will make you
more productive and get you running.  The documentation is written to be easy to read, pack a lot
of information in a small space, and cover everything you need without going crazy on minute details.
Currently we have:<p>

<ul>
    <li><a href="/wiki?name=GettingStarted">GettingStarted</a> a crash course in getting up and running.</li>
    <li><a href="http://mongrel2.org/static/mongrel2-manual.html">The Mongrel2 Manual (HTML)</a> is a complete manual covering everything from getting started, to writing your first handlers.</li>
    <li><a href="http://mongrel2.org/static/mongrel2-manual.pdf">The Mongrel2 Manual (PDF)</a> grab this if you want better formatting.</li>
    <li><a href="/wiki?name=DesignCriticisms">DesignCriticisms</a></li>
    <li><a href="/wiki?name=ContributorInstructions">ContributorInstructions</a> for if you want to make a patch.</li>
    <li><a href="/wiki?name=TranslatorGuide">TranslatorGuide</a> for if you want to make a translation to another language.</li>
</ul>

<h2><a name="translations">Translations</a></h2>

<p>We've started translating the manual into Russian as well, for now you can read the 
<a href="/wiki?name=GettingStarted">GettingStarted</a> document in
<a href="/doc/tip/docs/ru/wiki/GettingStarted.wiki">Russian</a>,
<a href="/doc/tip/docs/es/wiki/GettingStarted.wiki">Spanish</a>,
<a href="/doc/tip/docs/de/wiki/GettingStarted.wiki">German</a> and
<a href="/doc/tip/docs/fr/wiki/GettingStarted.wiki">French</a>
with more to come.</p>


<h2><a name="languages">Languages</a></h2>

<p>Mongrel2 fans have written quite a few handlers already for many different languages.  Here's the
list of currently supported languages and platforms, in alphabetical order:</p>

<ul>
    <li>C++: <a href="http://github.com/akrennmair/mongrel2-cpp">mongrel2-cpp</a></li>
    <li>C: <a href="https://github.com/derdewey/mongrel2_c_handler/">mongrel2_c_handler</a></li>
    <li>Clojure: <a href="http://github.com/mikejs/ring/tree/master/ring-mongrel2-adapter/">ring-mongrel2-adapter</a></li>
    <li>Common Lisp: <a href="http://github.com/vseloved/cl-mongrel2">cl-mongrel2</a> and <a href="https://github.com/galdor/m2cl">m2cl</a></li>
    <li>Scheme: <a href="http://wiki.call-cc.org/eggref/4/mongrel2">Mongrel2 for Chicken Scheme</a></li>
    <li>Haskell: <a href="http://github.com/cmoore/web-mongrel2">web-mongrel2</a></li>
    <li>Java: <a href="https://github.com/kwo/mojaha">MoJaHa</a> and <a href="https://github.com/asinger/mongrel2j">Mongrel2J</a></li>
    <li>Lua: <a href="http://github.com/jsimmons/mongrel2-lua/">mongrel2-lua</a></li>
    <li>.NET: <a href="http://github.com/AustinWise/m2net">m2net</a></li>
    <li>PHP: <a href="http://github.com/winks/m2php">m2php</a></li>
    <li>Perl: <a href="http://github.com/lestrrat/Plack-Handler-Mongrel2">Plack-Handler-Mongrel2</a> and <a href="https://github.com/jrockway/anyevent-mongrel2/">AnyEvent-Mongrel2</a></li>
    <li>Python: <a href="http://github.com/berry/Mongrel2-WSGI-Handler">Mongrel2-WSGI-Handler</a></li>
    <li>Ruby: <a href="http://github.com/perplexes/m2r">m2r</a> and <a href="http://github.com/darkhelmet/rack-mongrel2">rack-mongrel2</a></li>
</ul>

<h2><a name="frameworks">Frameworks</a></h2>

<p>Mongrel2 works with man WSGI, Rack, Plack and similar framework
middleware systems, so most framework should operate with it out of the box.
In addition to that, there's Mongrel2 <b>specific</b> frameworks that
don't require any middleware and take advantage of Mongrel2 new 
protocol features:</p>

<ul>
<li><a href="http://tir.mongrel2.org/">Tir</a> is a Lua framework written to show how to do direct frameworks with Mongrel2.</li>
<li><a href="http://github.com/j2labs/brubeck">Brubeck</a> is an asynchronous, non-blocking web framework written in Python.</li>
<li><a href="https://github.com/daogangtang/bamboo">Bamboo</a> is a Tir derivative with a bunch more features.</li>
<li><a href="http://www.photon-project.com">Photon</a> is a PHP framework similar to Tir and *way* faster than PHP.</li>
</ul>


<p>It is very easy to create a handler, you should read the <a href="http://mongrel2.org/static/mongrel2-manual.html">manual about handlers</a> for 
information on writing one for your language.</p>




<h2><a name="lists">IRC and Mailing Lists</a></h2>

<ul>
    <li>You can join the <a href="http://librelist.com">Librelist</a> mailing list by emailing <a href="mailto:mongrel2@librelist.com">mongrel2@librelist.com</a>.</li>
    <li>There is an IRC channel #mongrel2 on irc.freenode.org</li>
</ul>

<p>I reserve the right to boot anyone I want off these for being obnoxious, and I arbitrarily define "obnoxious" however I want.</p>


<h2><a name="contributors">Contributors</a></h2>

<p>Here's the current list of contributors of people hacking on Mongrel2:</p>

<ul>
    <li><a href="http://twitter.com/alexgartrell"><b>agartrell</b></a> works on core Mongrel2 like directory serving and the kegogi testing tool.</li>
    <li><a href="http://twitter.com/anderiasch"><b>wink</b></a> wrote the PHP stuff and hacks on Mongrel2.</li>
    <li><a href="http://twitter.com/daltonmatos"><b>daltonmatos</b></a> contributes patches and fixes and hacks on the filters system.</li>
    <li><a href="http://twitter.com/joshrsimmons"><b>jsimmons</b></a> wrote the Lua binding and hacks on the core Mongrel2.</li>
    <li><a href="http://twitter.com/tordek"><b>tordek</b></a> finds bugs in Mongrel2 and edited <a href="http://mongrel2.org/static/mongrel2-manual.html">the manual</a>.</li>
    <li><a href="http://twitter.com/zedshaw"><b>zedshaw</b></a> started it all.</li>
    <li><b>jasom</b> contributes patches and fixes.</li>
    <li><b>pbastov</b> works on translating things to Russian.</li>
    <li><b>phred</b> hacks on procer and some of the core Mongrel2.</li>
    <li><b>rkelly</b> (not the singer) wrote the tnetstrings C code we use and fixes things.</li>
</ul>



<h3>Thanks To</h3>
<ul>
<li><a href="http://websterclay.com/">Webster Clay</a></li>
<li><a href="http://cramerdev.com">Cramerdev</a></li>
<li><a href="http://ThinkCode.TV">ThinkCode.TV</a></li>
<li><a href="http://envato.com/">Envato</a></li>
<li><a href="http://highgroove.com/">Highgroove Studios</a></li>
<li><a href="http://infinitelybeta.com">Infinitely Beta</a></li>
<li><a href="http://pragmaticbadger.com/">Pragmatic Badger</a></li>
<li><a href="http://mongrel2.org/wiki?name=Donors">.. and Friends.</a></li>
</ul>

