Gnome, KDE, LXDE, Mate, Cinnamon (and windows 10) all seem to assume that I'd only every be doing the same thing on both monitors which just seems inherently wrong.
* one pool of WSs for all monitors (gnome,mate,win10)
* one shared pool of WSs for each monitor (xmonad)
* one pool of WSs for each monitor (awesome,dwm,e17)
So what xmonad has is one set of workspaces and each monitor can pick one from the shared pool! It's so great to have a WS dedicated for WWW on a side monitor and when something important comes up, I can bring that WS to the main monitor. Not easily done with the last idea.
I recently switched over to bspwm [0], and I really like it. Instead of automatic layouts, all areas can be split horizontally or vertically (similar to e.g. vim or tmux windowing). The layout tree can be manipulated in various ways, but the only on I use is rotate (ie. change vertical split to horizontal or vice versa). I don't have any status bars or launchers.
It's not all good, though. Just recently the config syntax changed and it was somewhat annoying to upgrade my old config to the new syntax, albeit the new syntax is much better. Hopefully it stabilizes soon.
It's also split in a funny way, so that bspwm only manages windows. It doesn't even listen to the keyboard, but typically uses another app (sxhkd [1]) for listening to the keyboard and launching a process (bspc) to control the wm. This is elegant and unix-ey but responsiveness suffers under heavy load. On the other hand, it's not tied together with a scripting language like e.g. Awesome is bound to Lua and XMonad to Haskell, which is nice.
Status bars and launchers are done with external apps but I don't use any at the moment. I do miss a desktop activity indicator a little, though (tint2 didn't work out of the box with bspwm, lemonbar was too hacky for my taste).
[0] https://github.com/baskerville/bspwm [1] https://github.com/baskerville/sxhkd