Cygwin

Cygwin passed away quietly this morning. At least the copy on my workstation passed away. The original is still live at http://www.cygwin.com/.

Cygwin helps you run Unix based applications on Windows. You cannot just take a Unix program and run it without modification. Instead you get the source code for the Unix application and compile it under Cygwin on Windows. Many Unix programs are precompiled for Cygwin on Windows and Cygwyn has an automatic update system to find and download the Cygwin version of Unix programs.

Microsoft's NT operating system had part of Unix built in through POSIX support, which was removed from subsequent Microsoft operating systems. Cygwin provided more than the POSIX interface and on several occasions I used Unix programs on NT that were available through Cygwin but not POSIX. On Windows 2000, which is in part based on NT, POSIX is missing and Cygwin is the only option for grabbing those native Unix programs.

Cygwin used to be a pig to install use and equally hard to use. Most of the useful Unix programs developed Windows version to save you using Cygwyn. The Windows versions of Unix programs use GTK and similar software to give you more than just a Unix program running on Windows, they give you a full Windows graphical user interface. Forget Cygwin and Unix command line junk. Go for the easy to use GTK version.

I still use lots of Unix programs on Windows, and add new ones every month, but all of the programs now have native Windows versions and none require Cygwin. Goodbye Cygwin.

As an example of the changes that happened to severl Unix prorams, look at PostgreSQL on Windows. The PostgreSQL database was needed to do some things you could not do with MySQL and Cygwin used to be the only way to run the PostgreSQL database on Windows. Over the years MySQL grew to do everything that PostgreSQL does with the result that I never have to load PostgreSQL onto a Windows machine. While MySQL was killing off the need for PostgreSQL, PostgreSQL was killing off the need for Cygwin by developing a native Windows version of PostgreSQL.

Cygwin was too hard for the average Windows user which made PostgreSQL too hard. People learnt how to push MySQL to the limit to avoid PostgreSQL so they did not have to use Cygwin. If PostgreSQL had gone straight to a native Windows version instead of depending on Cygwin, more people would use PostgreSQL instead of MySQL.

Cygwin is an example of something that is useful to test Unix programs on Windows but should not be used long term because it makes the whole process too difficult. Even with the new automated update, Cygwin is one extra layer of complexity you do not need.

Even the choice of staying with Windows is becoming harder as Microsoft makes their software licensing more painful while Linux becomes easier to use. GTK on Linux gives you a really easy way to make a Windows program run on Linux. You just change your Windows program to use GTK on Windows, which can be a long learning experience but is worthwhile. You are then ready for what will be, in most cases, an easy change to Linux.

Cygwin is no longer needed for anything but let us not forget the brave people who pioneered Cygwin. They helped many people convert from Windows applications to Unix equivalents on Windows back when Linux was not viable as a replacement for all Windows computers. People could change one program at a time. Now that Linux is ready to replace most Windows computers, many people are already using many Unix programs and already know common differences, including Unix file name conventions. Those people will have to learn only a small extra amount to switch over to Linux.

Consider Cygwin as a motorcycle. You learn to walk then you get a job and buy a car. How do you learn to drive? If you have already used a motorcycle then you are half way toward driving a car. People who used Cygwin on Windows are the people who tried a motorcycle first and are ready to try a car.