Recs.
Updated
xmonad is a tiling window manager for X. Windows are arranged automatically to tile the screen without gaps or overlap, maximizing screen use. Window manager features are accessible from the keyboard: a mouse is optional.
xmonad is written, configured and extensible in Haskell. Custom layout algorithms, key bindings and other extensions may be written by the user in config files. Layouts are applied dynamically, and different layouts may be used on each workspace. Xinerama is fully supported, allowing windows to be tiled on several physical screens.
SpecsUpdate
Pros
Pro Fully extensible with Haskell
Typesafe configuration! The whole language is available, basic configuration is a simple one-liner, lots of additional modules available for most setups.
XMonad is written, configured, and fully extensible in Haskell. This means that users aren't limited to a small set of pre-programmed layouts and actions - anything can be programmed in to the configuration. It's simple to modify basic settings, and the example config has lots of comments to get you started. Haskell keeps this code clean, concise, and readable, and its type system keeps you safe from any serious mistakes. This makes it fast and light, even on very small and slow systems.
Pro Great availability of libraries
The use of Haskell as an Extension language means that popular pieces of functionality are easily shared and widely available as Haskell Libraries. Many default layouts, and tools for quickly and easily building your own, are available through xmonad-contrib, and highly re-usable configurations are commonly shared through blog articles and the Xmonad Wiki.
Cons
Recommendations
Comments
Flagged Pros + Cons
Pro Very stable
Use of Haskell, in conjunction with smart programming practices, guarantees a crash-free experience.