What are the practical differences between Interix and Cygwin?

Solution 1:

I've only used Windows SFU on Windows 2008 before, but I believe that's based on Interix. I've played with cygwin on occasion, but not a huge amount, so someone please correct me if I say something obviously wrong here.

  • Unix-like feel: Interix wins this one. The environment feels far more "complete". I'm not sure how to put it. Interix runs alongside the win32 subsystem, where as cygwin runs on top of it. So, interix is a "first class citizen" in Windows kernel land. Things like ps and df work fine.
  • Performance: Having not done any major performance testing, I'd guess that Interix wins this too. Again, it's running at a lower level. You're not just running Win32 apps with a POSIX compatibility DLL linked in.
  • Packages/random software: Cygwin wins this one for two reasons. Firstly, cygwin is far better known. A lot of Unixy software will have support for its quirks. You can also install things very easily from the GUI installer. Interix doesn't (I believe) have anything like this built into it. Sure, you can download something, compile it using gcc (Which I think you can get prebuilt), and pray that it works, but it's a bit like porting software to any other random variant of Unix (like Solaris, or AIX) - some things will work, other things will try to bite your leg off and murder your children.
  • Integration with Windows apps and tools: To be honest, both sort of suck at this. If you have, say, an Apache server running inside cygwin or Interix, then sure, it's going to be able to communicate over TCP with Win32 programs, but that's about as far as it goes. From inside interix, I believe you can kill Win32 programs and list them using ps, not sure if you can do this with cygwin. With both, you can use the Windows task manager to kill things.
  • Integration with VMs: Addressing your example of sharing a home directory, then yes. You can either use samba for this, and I believe NFS works on Interix too for something more unixy. You won't find any nice GUIs or anything to do the work for you though. Both cygwin and Interix allow you to access your regular filesystems.
  • Size of user base: Cygwin wins here, I'd say. It was very difficult to find things that had been tested and developed to run on Interix, where as most open source stuff seemed to support cygwin as a compile platform.

If you have a copy of a Windows OS that will support Interix (as you said, an Enterprise edition, an Ultimate edition, or a Server edition), it's no harm giving it a go. It is a very complete feeling environment. Cygwin, as you said, runs on everything, and is better known and better supported, but feels a bit like a dirty hack to me. Some people use it regularly though.

Solution 2:

/*meta note- I hate that comments are so short */

I'd mostly agree with andrews answer with a couple of comments. I've replaced many unix systems with SUA/SFU (no they are not the same but close) under windows.

  • performance- SUA is much faster than services for unix but SFU was no slouch either, both are usually faster than cygwin (but not always)
  • integration- integration is the whole point of SFU/SUA and there is alot of docs on what you can and can't do on the technet site. Cygwin is designed to run *nix command on windows- not to make the 2 co-operate. See Unix/Linux interoperability components in Windows (SUA, IdMU, NFS, etc.)
  • user base-I think there are more working, supported solutions on the interix side than on the cygwin side and far less compatibility problems than with cygwin side see http://www.suacommunity.com/ (tool warehouse). Cygwin probably has more overall installs since it's good for the "I need a unix shell" solution Cygwin runs commands, SUA is a unix environment that is a peer to windows.