My hate for Cygwin continues undiminished

| 5 Comments
Talk about your controversial start.

Yes, I do hate Cygwin. This is most likely due to two factors:

  1. I began my career as a Windows administrator.
  2. My first experience with Cygwin was not a good one, and was a very long time ago (1998!)

Far, far, far too often I see Cygwin used by Linux admins working on Windows machines for the first time. They get to the incomprehensible labyrinth that is Windows Administration, get all wide-eyed, start googling for ways to make it more comprehensible and leap on Cygwin with the glad cries of a drowning person sighting a boat.

And then start complaining up a storm when it doesn't work like it should.

Those installs are the ones I simply loathe, and it was just that kind of install that I ran into back in 1998. I had no idea what that was, and left it in there longer than I should have. These days if I run into in on a system I'm managing I uninstall it with vigor unless it is required to keep it.

There are legitimate reasons to use it. Not many, but they do exist. Such as integrating Windows into a majority-Unix environment because one key piece only runs on Windows and you're committed to a specific platform. In that circumstance, when used knowingly, and with analysis, it can solve key problems.

But that is not how I run into it.

If you're looking at Cygwin and think, AHAH! SSH for Windows! I'm saved! Keep looking. There are better and faster solutions out there that don't incur the configuration and performance penalties of Cygwin. Some of them built from the ground up in .Net. Cygwin is much, much more than just an SSH server, so using it just for that is overkill.

If you're looking for remote Windows management the same way you remotely manage Linux machines, Cygwin still won't help you. Windows Management, unlike Linux management is not all about files and attempting to make it all about files will lead to madness, pain, and heavy drinking. For that you want to look to platform-specific tools like WinRM. Did you know you that once you have WinRM set up right in a domain you can use Remote Powershell? Looks a lot like ssh, and is far more powerful. 

And if you're looking for actual file-level control on Windows, both Puppet and Chef now have Windows agents these days and they're well designed to do that kind of thing.

Cygwin has gotten a lot better in the 13+ years since I saw it first, but it continues to snare drowning Linux admins.

5 Comments

I am so, so glad to see that I'm not the only one who has blood-rage hatred for Cygwin. Like you, I started as a Windows admin. However, now I'm predominantly a Linux admin. I am now comfortable with both.

Using Cygwin on Windows is like welding a Phillips head to a hammer. Just use each tool to its own strengths. If you believe that you've found something that should be done with a hammer that has a screwdriver welded to it, you are probably wrong.

I too feel hatred towards Cygwin, but haven't tried to use it to admin windows machines in an attempt to make them more unix-y. Instead, I've only ever used it in build systems where some of the software is open-source and hence wants to use gnu tools (gnu make, gcc, etc) and Cygwin used to be the only option. Mingw/msys and gnuwin32 help a bit here, but it seems that everyone wants something different and you can end up with several of these installed when you have a large set of tools to build :/

It's all a horrible, horrible hack.


(Let's not mention Services For Unix and Interix as well, yeah?...)

You're really off-base here. Your problem with Cygwin seems to be that you think, or you think that others think, that installing Cygwin magically transforms Windows into Linux, and then are disappointed when that's not the case. The main problem here is that attitude, not Cygwin itself.

I've administered Linux servers for 15 years, and I use Windows on my desktop. You have to use each platform in its own way, without trying to force it into something its not. Cygwin provides a unix-like environment to get things done that you couldn't otherwise do with Windows, but it is not forcing Windows to act like Unix, merely providing a similar toolset.

You should be selective about using native Windows tools vs Cygwin tools. For an SSH client you're better off with Putty, even though openssh works just fine. If you want to get into using tools like git and rsync, you really don't have much other choice than Cygwin. Most of the "Windows" versions of tools like that are just repackaged Cygwin files.

Windows+Cygwin is a hybrid, and you need to expect it will work as such. Don't malign a tool for not being some other tool that you wish it would be.

Yes, Cygwin is far too often abused for it's whistles.
It has it's uses, but imho more on the development side of things.

Having no clue of Windows is not solved like that. Just like
net stop does generally not manage linux services. You'll see both kinds of people trying and failing.

The annoying thing is not cygwin, it's just all the people running around telling you how smart a solution it is (to download megabytes of gnu toolchain just to be able to run "ps") instead of reading the manual and getting the right tools.

And hell yes, I only see that from Linux folks. Unix guys might still have version of MKS toolkit around, but that was at least _windows native_ and knew things like UNC paths, so you could DD a disk with it.