I have at least one cygwin shell open all the time, when on windows machine. Any msys users out there? Why would anyone use msys over cygwin (except for building win executables)?
No answer, but I don't think I could live without cygwin. Great stuff.
From what I can tell, MSYS is built on MinGW, which has a much smaller DLL. But for day-to-day use, I don't think there's an advantage to it. (However, I've never played with it much.)
MSYS's stated design goal is just to enable the whole gcc(mingw)/autotools build system on windows, it's never going to be a full "posix-y subsystem" like cygwin (including a package manager!).
The main difference between mingw and cygwin is that mingw builds win32 binaries that are free from any extra dependencies.
I've gotten over cygwin recently. There's a lot of impedance mismatch between cygwin and the native platform (LF vs CR-LF for example). Look for native versions of the unix utilities (including shells) like the UnxUtils project.
If licensing is an issue, CYGWIN is distributed under the GPL which may places some restrictions on commercial software linked against the CYGWIN runtime. MSYS is more permissive in this respect and may be more appropriate for commercial software.
As far as the environments are concerned, however, I find CYGWIN to be a far more polished product.
Cygwin offers much more complete UNIX compatibility; i.e. it is more likely to easily build source from that tarball you downloaded that's never been compiled on Windows before. The package manager is pretty convenient. As the other users mentioned, programs built with Cygwin depend on the GPL-licensed Cygwin runtime DLL.
MSYS/MinGW is a thinner and less-complete compatibility layer, but it offers a significant performance advantage over Cygwin and carries no runtime dependencies. Since we got our project to build under MSYS (which took a little work), we favor this environment.