I think the "traditional" family of tiling window managers (like ratpoison, awesome, dwm, xmonad, i3, etc) are kind of simplistic in their assumptions that 1. they can at any time force any window into any size and position, and 2. they must always force every window into some size and position.
In my opinion, a good algorithm of where to place a window (and what size to use) would go like:
1. Where the user expects it (e.g. last position)
2. Where it doesn't obscure anything else (optimal use of screen real estate without forcing a specific size/position/layout)
3. Wherever the application thinks it's best (the WM should never need to hardcode/configure rules like "GIMP is like this" or "xcalc works best with that")
As for automatic tiling, I'm a big fan of what Windows is doing, and would love the traditional tiling WMs to iterate on this idea, while recognising floating windows as first-class citizens.