1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
|
<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>
|