top | item 3312009

Gow – The lightweight alternative to Cygwin

181 points| urza | 14 years ago |github.com | reply

93 comments

order
[+] markokocic|14 years ago|reply
I understand why someone wouldn't like to use cygwin, but why new project?

MSYS/mingw-get are active projects that provide a good base to build upon. Why not helping improve it? Unix tools on Windows is niche enough so that choice only leads to fragmentation, not competition.

[+] vog|14 years ago|reply
This is exactly what I also thought when I read the headline. And this becomes even more strange given that they are almost certainly building upon using MinGW.
[+] malkia|14 years ago|reply
Cygwin is not perfect, but he's the thing that I prefer over other options.

It's unix emulator layer, and as such tries it's best to emulate fork() - which the other alternatives does not even think to put in.

VM is not a real alternative, as there is actually more work to be done to plumb source A with tools B from the VM.

I don't use cygwin from bash, but rather start it directly from the FAR manager (console based Norton Commander/Midnight Commander application for Windows). It's very useful, as a lot of commands just work.

Then there are others, which are some kind of symlink (one of the downsides of cygwin for me), but that's understandable. Symlinks as they are on linux are just starting to appear on Windows Vista and 7 (and I'm not even sure how compatible they are).

So for such cases, sh -c would work. For example checking out latest SDL using cygwin, but from the command-prompt:

c:\p\sdl> sh -c "hg pull -u"

And then other stuff works even better:

c:\p\libzmq> git pull -u c:\p\libzmq> sh -c "gitk --all"

[+] 4ad|14 years ago|reply
I find it strange that no one is mentioning UWIN[1], started by David Korn about the same time and with the same goals as Cygwin.

I used to use it. I liked the fact that it used the host compiler instead of gcc, plus I preferred the non-GNU tools.

Now I'm using Inferno, it works much better. It's not Unix, it's Plan9, but I view that as a plus. Of course cygwin can install all kinds of Unixy tools, like gcc, openssh, xterm and whatnot. Inferno doesn't come with anything, but I don't need anything except the basic Plan9 tools.

[1] http://www2.research.att.com/~gsf/download/uwin/uwin.html

[+] RexRollman|14 years ago|reply
You run Inferno on top on Windows as an application? I have read that this is possible but I have never seen anyone doing this, not even in a screenshot. If so, what's your opinion of it as an environment?

(By the way, Inferno's implementation reminds me of Niklaus Wirth's Oberon, which could also run as either an application or as an operating system.)

[+] chrisballinger|14 years ago|reply
How does this compare to the MinGW/MSYS (http://mingw.org) project?
[+] DiabloD3|14 years ago|reply
I was about to ask the same question. MinGW is already the lightweight alternative to Cygwin, and has largely taken over for the task of compiling unixy things on Windows.

The major difference between MinGW and Cygwin is MinGW tries to use native Microsoft libs by dummy wrapping them (like, MS's libc is often compatible with POSIX standard stuff, the POSIX version merely starts with _ frequently, MinGW uses this fact).

Most stuff that won't compile "natively" on Windows through Visual C's compiler, those projects use MinGW, I never hear of anyone using Cygwin especially because of the requirement of shipping the Cygwin runtime dll (of which MinGW has none).

Even Strawberry Perl, the Perl distro for Windows, uses MinGW to compile XS perl modules from CPAN.

[+] ez77|14 years ago|reply
Oh, heretics! How dare they leave ed out of the list [1]?

[1] https://github.com/bmatzelle/gow/wiki/executables_list

[+] joshu|14 years ago|reply
ED IS THE STANDARD UNIX EDITOR! IT MAKES THE SUN SHINE AND THE SKY BLUE AND THE GRASS GREEN!
[+] william42|14 years ago|reply

  william@aldebaran ~ $ ed
  bash: ed: command not found
[+] RexRollman|14 years ago|reply
I recently decided to learn ed, as I felt it couldn't hurt to be familiar with it, and I was surprised to see that it wasn't installed in Arch Linux by default.
[+] xpaulbettsx|14 years ago|reply
We really need to port Homebrew to Windows so that projects like this can be the base, but people can pull in packages on top of it, like a lightweight Cygwin but more Windows'y.
[+] tikhonj|14 years ago|reply
Does porting Homebrew make any more sense than porting something from Linux (for example)? My impression is that the Mac OS ones aren't as good.

A package manager really sounds like the sort of project where the incompatibilities between *nix and Windows are large enough that writing a new one would make more sense. I think there are even existing projects like that for Windows; I remember seeing one on HN a while back, but can't recall the name.

[+] xer0|14 years ago|reply
https://code.google.com/p/apt-cyg/

"apt-cyg is a command-line installer for Cygwin which cooperates with Cygwin Setup and uses the same repository. The syntax is similar to apt-get. Usage examples:"

    "apt-cyg install <package names>" to install packages
    "apt-cyg remove <package names>" to remove packages
    "apt-cyg update" to update setup.ini
    "apt-cyg show" to show installed packages
    "apt-cyg find <pattern(s)>" to find packages matching patterns
    "apt-cyg describe <pattern(s)>" to describe packages matching patterns
    "apt-cyg packageof <commands or files>" to locate parent packages
[+] Niten|14 years ago|reply
pkgsrc already supports Windows Services for Unix, it may well work on top of this too (though I haven't looked at Gow yet and I honestly have no idea how it differs from MSYS).

But when I think "Unix-like core plus package management on Windows"... well, Cygwin is already there.

[+] daemin|14 years ago|reply
Well for a far more light weight solution there's GnuWin32 and GetGnuWin32 (which installs GnuWin32), both available via an easy Internet search. They both run from the command prompt and you don't need any other environment for them.
[+] snotrockets|14 years ago|reply
This is not an alternative to Cygwin, and shouldn't be called such.

Cygwin isn't a collection of binaries; that's a distribution. But the idea is to emulate UNIX, including fork(), etc., allowing you to easily recompile for Windows.

[+] zoobert|14 years ago|reply
Would be good to have a standard ssh client similar to the ones in linux and other unixes. I use Cygwin mainly for that. I do not want to do putty -ssh ... and I want to copy my keys and other config in ~/.ssh. Like that I can "standardize" the way I setup my accounts on cygwin and linux. Without that it is kind of a big hassle
[+] guan|14 years ago|reply
Is there an SSH server for Windows that will work with this?
[+] andrewf|14 years ago|reply
KpyM seems to do a decent job of providing SSH access to a cmd.exe prompt (and anything you care to run from one). It's free although the provided binaries do an annoying nagware thing on login. I've been using it for SCP access to Windows servers.

http://www.kpym.com/2/kpym/index.htm

[+] buu700|14 years ago|reply
Or an SSH client which can be called by the gow shell?
[+] niyazpk|14 years ago|reply
No support for Pipes. :(
[+] bbulkow|14 years ago|reply
The real point:

1) if you want to program in "gnu", run unx, and if you want Windows as your host OS, run virtualization; (yes, you need 8G, yes, you should have an SSD, if you don't, buy a new laptop for $700 and run linux native)

2) if you want a better command line, There's lighter weight ways like http://unxutils.sourceforge.net/ http://gnuwin32.sourceforge.net/packages/coreutils.htm ... and a set of binaries I found 5 years ago that seem to have vanished, works OK for me.

[+] mhartl|14 years ago|reply
Has anyone used this to run Ruby on Rails? If so, I might want to recommend it in the next edition of the Rails Tutorial.
[+] ams6110|14 years ago|reply
A smtp client (e.g. something like msmtp or ssmtp) so scripts can send email easily would be a nice addition.
[+] swah|14 years ago|reply
What is the use case for Cygwin in the days of virtualbox/vmware?
[+] elmindreda|14 years ago|reply
Being able to use a real shell with all the tools I'm used to when developing on Windows.

Cygwin in combination with MinGW and the Windows native version of GVim lets me have almost exactly the same environment as I do on Linux and Mac OS X.

[+] barrkel|14 years ago|reply
Using Unix utilities (including Unix paths and forking semantics) on your Windows system. I regularly use Unix utilities to e.g. manage Windows processes; frequently, when a game crashes and leaves me with a blank screen, I can blindly alt-tab to a terminal and 'killall foogame', or if it's worse, ssh in.

I use Cygwin to get approximately the same terminal environment in Windows as I do in Solaris, Linux and Mac. I have a suite of scripts to massage platform differences (e.g. Cygwin getclip / putclip vs xclip vs pbcopy / pbpaste, or cygstart vs open vs gnome-open / xdg-open / etc.). It means that in the terminal environment, I'm equally at home no matter what the OS.

I run Cygwin in rxvt. Using a better terminal than a Windows command window is a must; until I started using rxvt, I didn't even live in bash. Rxvt / bash combo uses considerably less memory, less startup time and less disk space - my dual-boot macbook air has Cygwin installed in the Windows 7 partition.

[+] to3m|14 years ago|reply
Half-decent interop between the unix-y bits and the Win32 native bits.

e.g., you might want to have a mostly unix-style build process that uses VC++ as the C compiler, and run it all inside Visual Studio using a makefile project.

[+] RexRollman|14 years ago|reply
Because not everyone want to emulate an entire PC just to run a Unix command?
[+] DanHulton|14 years ago|reply
I like Windows 7, but I prefer bash for my console. Enter Cygwin + Console 2. Now life is better.
[+] ez77|14 years ago|reply
Cygwin gives you (seamless) access to the Windows file system. Is it possible to (say) 'sed ... | wc' a file in the host's directories from a VM?
[+] msluyter|14 years ago|reply
I work at a company that currently provides a 32bit version of Windows 7 (the reasons are somewhat unclear.) But the bottom line is that we have the 3gb max addressable memory problem. When I have eclipse, outlook, chrome, various other dev tools and whatnot open, I'm often near the limit, and adding VMWare player or whatnot would probably be too much. So that's one reason... Plus, I find switching back and forth between a vm and the host OS still somewhat slow/clumsy.

(Yes, I know I should get a new job...)

I like the idea of Gow. Anyone know if you can achieve middle mouse button pasting as when you have X11 under cygwin?

[+] nupark2|14 years ago|reply
I'm a UNIX and Mac OS X transplant using Windows for embedded hardware development (almost all the tools are Windows-only).

I need a terminal from which I can operate on my Windows file system, but running an entire virtual machine is enormous performance-impacting overkill.

[+] nalbyuites|14 years ago|reply
I work with a hosting provider and Cygwin is used all the time to provide SFTP access on Windows boxes. Haven't looked at sshwindows though.
[+] Vivtek|14 years ago|reply
Running Unison for easy local mirroring/backup, if nothing else.
[+] keshet|14 years ago|reply
No awk? I'm outta here.
[+] 4ad|14 years ago|reply
Well Brian Kernighan offers a Windows download, though I use awk.exe from Inferno.
[+] earl|14 years ago|reply
A somewhat heavier version of cygwin, in which everything will work the way it's supposed to: http://www.centos.org

I kid, I kid...

[+] jurjenh|14 years ago|reply
Then there's always colinux - where you can have both, at the same time, without virtualization.
[+] swah|14 years ago|reply
But then you can't run a decent Window Manager like Windows 7.