As many of you may remember I did a review of Windows Services for UNIX 3.0 (SFU) a few months ago. I remember being frustrated with that release because it seemed to me that all Microsoft did was throw something together just to be able to say “Hey look, we have this”. I thought, since Microsoft released version 3.5, I would revisit and see what changes were done with it. I downloaded the beta version a while back and from the beta I was very impressed with the improvements that Microsoft made. Being a beta version it was buggy and some things just didnt quite work. I finally got the final version of the OpenBSD-based SFU 3.5 and this release makes dynamic leaps and bounds over previous releases of this software package. I am glad to see a lot more work was put into this release.What is Windows Services for UNIX
Windows Services for UNIX is intended as an interoperability package. This is a far cry from previous versions which were inteded to be migration packages, enabling UNIX customers to leave UNIX and bring their skills and resources over to the Windows platform as well as run some older UNIX apps and scripts. While migration strategies are part of the role of 3.5, Microsoft did a lot of work so UNIX and Linux admins can seamlessly integrate Windows into their current infrastructure.
What Windows Services for UNIX is not
SFU is not an operating system. It is a subsystem and we will discuss how this differs from Cygwin and UWIN later on in this review. SFU is tacked on as a process that houses sub processes. SFU is a full UNIX environment to to let UNIX developers continue their Linux/UNIX work but leverage the advantages of the Windows platform but you must have Windows 2000/XP Professional Server 2000/2003, it no longer runs on Windows NT and it cannot be installed on Windows XP Home Edition. SFU does not make you immune to viruses or security issues. Make sure you keep up with Security patches and virus updates to make sure your systems are secure. SFU is not a Linux or UNIX killer. I will stress this point because of many of the initial responses I have seen regarding this release, SFU is intended for Interoperability and in certain scenarios, migration that is all.
I am also going to answer some misconceptions people have approached me about. It is not illegal to use UNIX software with SFU and it does not violate the BSD or GPL license to port Open Source software to SFU or the Interix subsystem. Microsft has ported many Open Source tools to SFU and Interop Systems also makes many free and proprietary tools to run on SFU. Also, it is not illegal to use Microsofts development tools and or .NET to develop Open Source software.
The new features of SFU 3.5
One of the good things about new releases is that they house new features. SFU has many new features. One of the things that I like is PThread support and Multi-Thread suport. This allows many more apps to run on SFU, whereas before you could run those apps but it could not utilize the speed and full functionality of those apps. The Cron version has been improved a great deal, more UNIX tools have been added. Perl 5.6.1 is available and it has also been improved because it is now compiled under the Interix subsystem which helps with speed and makes it very very fast. Python is not included with SFU but it is available from ActiveState and Interop. Another cool feature is that now the installation adds a path to the Environment settings and you can launch Windows apps from the command line without having to include the extension for those of you that find that useful. Microsoft has also added support for clustering NFS shares. They also improved the speed for NIS and Microsoft claims that it can now handle 64,000 users. I am unable to verify that because I do not have 64,000 users to test this. Microsoft has updated its Telnet services for native Windows and it has added a more UNIX centric Telnet services inside of InterixFor text editing Microsoft has always included VI, for you Emacs lovers out there a full version of Emacs is available for native Windows. Microsft includes the Csh and Ksh shells with SFU and for me thats not a problem, Im a C man, I always have been and I always will be. I personally dislike Bash but hey thats me, its seems that the defacto standard for Linux users is bash. While Microsoft does not make it available, users can download bash from Interop Systems. A host of other tools are available via Interop Systems.
Performance with SFU is wonderful. Since it is a subsystem it runs at native speeds and things that I have tested such as GCC have had some really great results, apps that I have compiled with SFU have gone without a hitch. Microsoft claims it will only support AIX 5.2, HP-UX, Solaris and Red Hat 8. I have had great success with those as well as UnixWare, Irix 6.5, SuSE Linux Enterprise Server 8 and OpenBSD. The only machine I had problems connecting to was my Xserve at home, yes my Mac OS X 10.3 Server. I have a colleague that runs his webserver with Windows 2000 Server with SFU 3.5 beta and Apache compiled for Interix and he has reported to me that he has had better performance than he did with Solaris and Apache. I had no unexpected crashes and or machine hangs even when I should have, I threw some pretty intensive programs at this thing and I had no negative side effects. Microsoft claims 90% of Linux and UNIX apps will run on Interix, I had all of my apps run and I have some old ones that did pretty well. As for cross platform issues I even compiled some corporate apps that I wrote that are targeted for Interix, compiled on Interix, and successfully run them on SuSE Linux Enterprise Server and Solaris, the only thing I had to do was mess with the libraries some, while some may argue that this is not seamless, I would rather have to locate a few libraries then have to rewrite for an entirely new Platform.
Price. For this kind of functinality one would expect to pay hundreds or thousands of dollars. SFU is free as in no cost free. The source is closed but Microsoft does include some GNU tools with this package. For those that would argue that Linux is a free download, well so is SFU and it is much “lighter” than most Linux distributions. Performance is great as I reported and for those that already have Linux/UNIX experience there is no learning curve at all.
For the future since Linux is rapidly taking over some UNIX space I would like to see Services for UNIX contain some of the libraries and paths for Linux. I really had no negatives with SFU, which is weird because I can ussually find negatives in most software. It does whats advertised and then some. I never thought I would give a thumbs up to Microsoft, but there is a first time for everything.
Comparisons to other Interoperability tools
SFU is much better than Cygwin, its largest competitor, Cygwin is an emulation layer. With emulation layers you give up speed and performance. SFU being a subsystem means you are working in a native UNIX environment and you are not giving up speed. If you have an app crash in SFU it does not have the potential to bring down the entire system like Cygwin does. For those people still on Windows NT, while you will be unable to install SFU 3.5, Interop Systems makes many of the tools available to you for free and you can update SFU 3.0 to the newest versions of the GNU and BSD tools that are available.
For those of you waiting for Microsoft Linux forget it. I doubt we will ever see it. But as the need for interoperability grows Microsoft will make good on that commitment. I dont think we will ever see a 100% no Microsoft world so this is where Services for UNIX fits in. Services for UNIX will not make a loyal Linux/UNIX user switch to MS Windows no more than we can change Diehard Mac or Windows fans but for people like me who have to deal with UNIX, Linux and Windows, Services for UNIX is a great tool for that arsenal without having to dual boot or hunt down an available system with the OS you need. My only hope is that people do not snub SFU just because it is an Microsoft product but rather embrace it and use it and support Microsoft for their efforts.
About the Author
Roberto J Dohnert is a Unix/Linux Consultant and software developer. His first introduction to Unix based systems dates back to NeXTStep. He is a member of the GNU Darwin Distribution and has made several contributions to that and other projects. His personal webpage is here.