The online home for Greg Leedberg, since 1995.

Saturday, February 25, 2006

Leedberg's List: Cygwin

Leedberg's List is my own little soapbox where I can voice my opinion on a subject that, I think, I'm pretty darn knowledgable about: computer software. In this installment, I'd like to highlight a program which may not be required for every computer user, but for a segment of the population, it completely changes the way you use your computer. The newest addition to Leedberg's List is Cygwin.

Cygwin, fundamentally, is just a DLL -- a library of functions available to Windows program. That doesn't sound so exciting. The key to Cygwin is what functions it provides. Cygwin is an implementation of POSIX functions for use in Windows programs.

POSIX is the set of system calls that make Unix programs, well, "Unix programs." POSIX is pretty much common across all flavors of Unix. By providing a Windows implementation of POSIX functions, developers can produce programs using the POSIX calls they are used to on Linux, but have the programs running on Windows. Cygwin of course doesn't let you just run a Linux binary under Windows, but it lets source code that's written to the Linux environment be compiled and then run under Windows.

Now that would result in limited appeal, for sure. But the real usefulness of Cygwin is that they've taken a huge body of Linux software, and re-compiled it using the Cygwin DLL, making it available for Windows. Now we're getting somwhere!

When you download and install Cygwin, you have the option of also installing all of the programs Linux users are accustomed to having available. Bash, GCC, and all of the other great command-line utilities that make Linux so great.

Cygwin has even re-compiled the X11 GUI system for Windows, so you can run a large array of Linux graphical programs, such as Emacs and Grace. Lots of Linux programs out there supply Cygwin versions, since in most cases it's so easy to take a pre-existing Linux application and make it work with Cygwin -- thereby making it available to a whole new group of users.

For me, Cygwin has effectively negated my need to dual-boot Linux and Windows. I used to dual-boot the two operating systems because overall I liked the user-friendliness and device support of Windows, but there's lots of software on Linux that I like to use. With Cygwin, I can run Windows and enjoy the benefits of that, while at the same time using most of the software that was keeping me on Linux. Without having to reboot all the time!

Cygwin pretty much provides a full Linux-like environment on Windows, great for people who are used to Linux but also appreciate the good aspects of Windows. Even if Cygwin merely provided the great Bash shell, it would probably make Leedberg's List -- it's orders of magnitude better than the command shell that comes with Windows. But Cygwin goes way beyond that and provides pre-compiled versions of tons of other great Linux program at the same time -- all capable of running in Windows alongside Windows applications. If you've ever liked Linux but had to use Windows, Cygwin is for you.

Labels: , ,