# About Mongrel2

Mongrel2 is an application, language, and network architecture agnostic web server that focuses on web applications using modern browser technologies.

## Features

- Language Agnostic with a simple backend protocol supporting 17 languages and platforms all written by Mongrel2 fans.
- Modern Browser Friendly designed to handle HTTP, Flash XMLSockets, or WebSockets, Long Polling on the same socket transparently.
- ZeroMQ Enabled as well as HTTP proxy support so it works with what you have already while giving you new super powers.
- Network Architecture Agnostic so you can carve your operations up anyway that reduces costs.
- N:M Messaging Patterns means you can have any N handlers answer to any M browsers arbitrarily, but still easy to do plain request/response.
- Automation Loving Configs that are easily accessible via any programming language with an Model-View-Controller design.
- Modern Internal Design 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.
- Documented, Documented, Documented We document everything in a well written manual that shows you how to use every feature.
- BSD Licensed and all with a BSD 3-clause license.
- Tir An official framework written in Lua that shows how to use Mongrel2 to create other frameworks for PHP, Python, etc.

## Download

Mongrel2 is now 1.7.5:

- mongrel2-1.7.5.tar.bz2

## Documentation

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:

- GettingStarted a crash course in getting up and running.
- The Mongrel2 Manual (HTML) is a complete manual covering everything from getting started, to writing your first handlers.
- The Mongrel2 Manual (PDF) grab this if you want better formatting.
- DesignCriticisms
- ContributorInstructions for if you want to make a patch.
- TranslatorGuide for if you want to make a translation to another language.

## Translations

We've started translating the manual into Russian as well, for now you can read the GettingStarted document in Russian, Spanish, German and French with more to come.

## Languages

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:

- C++: mongrel2-cpp
- C: mongrel2_c_handler
- Clojure: ring-mongrel2-adapter
- Common Lisp: cl-mongrel2 and m2cl
- Scheme: Mongrel2 for Chicken Scheme
- Haskell: web-mongrel2
- Java: MoJaHa and Mongrel2J
- Lua: mongrel2-lua
- .NET: m2net
- PHP: m2php
- Perl: Plack-Handler-Mongrel2 and AnyEvent-Mongrel2
- Python: Mongrel2-WSGI-Handler
- Ruby: m2r and rack-mongrel2

## Frameworks

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 specific frameworks that don't require any middleware and take advantage of Mongrel2 new protocol features:

- Tir is a Lua framework written to show how to do direct frameworks with Mongrel2.
- Brubeck is an asynchronous, non-blocking web framework written in Python.
- Bamboo is a Tir derivative with a bunch more features.
- Photon is a PHP framework similar to Tir and *way* faster than PHP.

It is very easy to create a handler, you should read the manual about handlers for information on writing one for your language.

## IRC and Mailing Lists

- You can join the Librelist mailing list by emailing mongrel2@librelist.com.
- There is an IRC channel #mongrel2 on irc.freenode.org

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

## Contributors

Here's the current list of contributors of people hacking on Mongrel2:

- agartrell works on core Mongrel2 like directory serving and the kegogi testing tool.
- wink wrote the PHP stuff and hacks on Mongrel2.
- daltonmatos contributes patches and fixes and hacks on the filters system.
- jsimmons wrote the Lua binding and hacks on the core Mongrel2.
- tordek finds bugs in Mongrel2 and edited the manual.
- zedshaw started it all.
- jasom contributes patches and fixes.
- pbastov works on translating things to Russian.
- phred hacks on procer and some of the core Mongrel2.
- rkelly (not the singer) wrote the tnetstrings C code we use and fixes things.

### Thanks To

- Webster Clay
- Cramerdev
- ThinkCode.TV
- Envato
- Highgroove Studios
- Infinitely Beta
- Pragmatic Badger
- .. and Friends.