SUA Deprecated in Windows 8

The POSIX subsystem in Windows is headed for a slow death march, again. Not many people realize that Windows NT had a POSIX subsystem from the beginning which was enriched along the way to run a fork of OpenBSD called Interix. Originally the POSIX subsystem was bundled with Windows NT 3.1 and was a barely useful POSIX.1 environment to meet DoD purchasing requirements. Later, it was removed from the Windows core distribution, re-implemented by an ISV and called OpenNT and then Interix. Interix was acquired by Microsoft and sold for a while before being distributed free of charge. Later it was bundled with Services for UNIX 3.0 and 3.5 before being re-integrated into the Windows distribution as the Subsystem for UNIX-based Applications (SUA). At one time Interix actually ran Hotmail during the migration from a FreeBSD to NT backend.

After passing back to the Windows team and being rebranded SUA, Interix languished. The original developers scattered to other projects like Monad/PowerShell, left Microsoft or were never hired by Microsoft when it acquired the technology in the first place. Interix is maintained by a very small team at Microsoft India and these guys are focused primarily on just keeping it working through kernel updates. In practice, the quality of the product has been in decline. At one point, for example, it shipped with most of the .so shared libraries corrupt so that nothing that linked to those libraries would run. The toolkit that makes SUA useful lags many, many months behind the release of a new version of Windows and Microsoft required “premium” client SKUs (ultimate or enterprise) or server SKUs to access the technology which greatly limited its distribution. It is generally as unloved by the powers that be as anything could be, except perhaps IronPython and IronRuby which have already been killed.

The Windows 8 M3 developer preview shows that the other shoe has dropped:

Subsystem for UNIX-based Applications [DEPRECATED]

Subsystem for UNIX-based Applications (SUA) is a source-compatibility subsystem for compiling and running custom UNIX-based applications and scripts on a computer running Windows operating system. WARNING: SUA is deprecated starting with this release and will be completely removed from the next release. You should begin planning now to employ alternate methods for any applications, code, or usage that depends on this feature.

sua-deprecated

One obvious reason to deprecate SUA is that loading the extra subsystem makes Windows take a noticeably longer time to boot. The architecture is very much at odds with the instant boot goals of Windows 8.

There have been a number of developments over the last few years that makes Interix less compelling. Things like fast-CGI on IIS and an official PHP port from Zend, lots of dynamic languages with native Windows runtimes, mySQL and PostgreSQL for WIndows, C libraries like pthreads for win32 and msys which have made Interix less necessary. For perl-heads there is even Strawberry Perl which is supposed to be a lot more CPAN friendly than ActiveState perl. I think Hyper-V and PowerShell are the real strategic replacements for SUA, though. PowerShell integrates with COM and WMI and fits the object nature of Windows better than any POSIX shell could. Hyper-V lets you actually run your UNIX app on Windows on a supported Linux platform which I’m sure smells much less MacGuyver to CIOs than this weird Interix POSIX on Windows thing that nobody ever heard of.

From the time that Hyper-V officially supported RHEL with hast enlightened drivers and Jeffrey Snover decided that the new shell and automation for Windows would be based on .NET and pivoted to build Monad/PowerShell rather than putting KSH on every Windows machine, Interix’s days were numbered. Now it’s official, Interix will be gone from the world about 11 years when Windows 8 reaches end-of-life but if you are smart you will jump ship now because this product will have the minimum life support staff imaginable.

19 Responses to SUA Deprecated in Windows 8

  1. StuartRothrock says:

    Thank you for the interesting article. I still have my Interix CD I purchased from Microsoft for $99 in the 1990’s. Somewhere I also have the glossy OpenNT brochure I received in the mail a year before that. I have thoroughly enjoyed the bash and openssh implementations with the hundreds of unix/linux utilities through the years. We even solved a sticky issue by running the unix version of apache natively on Windows Server 2003. So to say the least, my head was hanging low today after installing Win8 and seeing SUA as depreciated. Good luck and god speed to Rodney at Interopsystems and his future endeavours.

  2. I am sad to see that it finally has come to this. I liked being able to use my Unix/Linux knowledge to some extent on Windows to do the things I want to do. Sure there are other ways:
    – free (for personal use) replacement tools (JUCK!)
    – GNUutils port for Windows
    – Cygwin (MEH!)
    Interix felt as the cleanest solution to do something in the Unix way on Windows: If you are in an Interix environment if feels like Unix and you are not all the time reminded of the simulation (cygwin — dll missing there, PATH snafu, configured separately, …).

  3. Can’t say this is a surprise. Same people who decided to name something windows “metro” 🙂 Actually cygwin is more solid now than people might think. Still no 64 bit version, and of course releasing commercial software for it is out (but was it ever in for SUA? either). I concur that this is more antagonism towards allowing end users to develop with native code etc. Which is very hard to reconcile with a desire for ARM support. Just less and less biodiversity in the windows ecosystem. Itanium being another example.

    Another way to look at it is who want to run GNU userland / popular F/OSS on these funky environments anyway? AIX, HP-UX are very rough in this regard. One big reason sun folded.

    Anyone remember Xenix?

    • Sloth says:

      > “Still no 64 bit version, and of course releasing commercial software for it is out (but was it ever in for SUA? either)”

      Can’t speak for other commercial software outfits, but I’m part of team that distributes a large (2M+ lines of code) Unix+Motif+OpenGL suite of applications commercially. We brought out support for Interix back in 2005 and it has worked well for us, up until this point.

      We’re obviously a little concerned now about Interix’s future, although our main supported platform is still Linux.

  4. Robert Oeffner says:

    It would be rather sad if and when SUA disappears. Over the years SUA has been starved of oxygen probably due to Microsoft being ambivalent about whether to fully incorporate a genuine unix subsystem in Windows. This is a great shame as the NT kernel allows for running different subsystems side by side in a clean and lean fashion. Win32 is just one such subsystem.

    It is doubtful that alternatives such as running Linux through emulators like VirtualBox, HyperVisor, etc. will ever provide the same speed and small memory foot print than SUA compiled programs which essentially run as native code on the CPU. Besides, these alternatives are inherently clunky: you first need to install the emulator, then install the guest OS, then there’s the fiddling with sharing of peripherals and the frustation that the rest of Windows cannot see any of the files within the virtual disk hosted by the guest OS. This on top of the fact that emulators typically hijacks a sizable chunk of memory and fail to scale performance with the number of CPU cores makes one wonder why Microsoft is ditching what is basically the best solution to providing a unix environment on a Windows PC. My guess is that “SUA + Metro UI” doesn’t sound particularly sexy to the marketing department within Microsoft.

    Consequently Microsoft is shooting itself in the foot if they wish to make inroads in the increasing numbers of academic users that now choose MacOSX or Linux for the very purpose of running unix compiled HPC number crunching programs as native code and not emulation.

    The demise of SUA would be sad and only consolidate Microsofts departure away from academic users doing natural science.

    • Brian Reiter says:

      The architecture of the NT kernel is pretty cool technology. It has a tiny HAL layer abstracting away CPU platforms and an OS-flavor agnostic, object-oriented kernel that provides services to “personality” subsystems. There were originally Win32, OS/2 and POSIX subsystems and the NT team didn’t know which was going to be the primary. OS/2 was presumed to be the future until Win32s Windows 3.11 and Microsoft’s partnership with IBM went south.

      I have nothing to back this up, but I think Steven Sinofsky decided a while back that Interix was not strategic. I can see the business case that Windows has ~95% desktop market share and huge business server market share–something like ~75%. If someone like Sinofsky is comparing consumer and tablet markets to academic or HPC markets, it is a no-brainer which one to pursue from a strictly revenue and fiduciary responsibility to share holders perspective. I don’t have to like it, but I can see how executives might come to think Interix is not strategic. It’s not a wholly bad thing in my mind. The language architect for PowerShell, Bruce Payette, came from the ashes of the original Interix team. PowerShell is cool technology and more useful for administering Windows than Interix ever was.

      I’m not sure what the overhead of a subsystem is relative to an OS in a hypervisor, though. I have a minimal CentOS installation running in VMWare that I have assigned 512MB of RAM. I run it disconnected in the background and SSH into it from my host. I could mount the host file system onto it if I wanted or expose the guest via SAMBA–which is admittedly not the most elegant thing in the world. It runs with no noticeable overhead on my 2009 MacBook Pro which is starting to approach its end of lease. There are disadvantages over Interix but there are also definite advantages to the hypervisor system. For example, a subsystem has to start with the OS in Windows and can’t be restarted without a reboot. I have crashed psxss.exe–especially the newer editions–enough to find this really annoying. An OS in a hypervisor can be started, stopped or paused at will. Also, there is a huge difference in the size of the repo for RHEL/CentOS compared to what Rodney can manage on the /Tools Warehouse, especially with a crippled system that hasn’t got a complete working API. Basic stuff like poll(3)–for example–has remained broken for like 15 years now. Finally–obviously–you get binary compatibility with Linux which is important for tools which are only distributed that way.

      So I guess, in summary, things change and maybe its time to move on.

      • Robert Oeffner says:

        The suggestion that “things change and maybe its time to move on” is as headstrong as when Bill Gates sometime in the mid-nineties boldly proclaimed that “Today’s Internet is not the information highway” he imagined. Let’s return to that statement by the end of the lifecycle of Windows 8. If it’s time to move on then among academics and students it’s likely that it will be away from Windows.

        True, the SUA API is broken here and there. That is to be expected given the infinitesimal resources Microsoft is drip-feeding it with. So the broken SUA API is really something for Microsoft to fix. My guess is that for political reasons some within Microsoft prefer that SUA is being starved as to make it easier to argue that because it is clearly broken people should adopt Powershell, Hypervisor and so on for their needs.

        The colleagues at my work use PCs and Macs and Linux. Most software we write and maintain is for unix platforms. That’s where Windows could make wonders had SUA been properly supported. Because it’s very unlikely that our users would want to run any of it on a Linux emulation or that our software would be rewritten from scratch to target Windows API.

        I believe that had Microsoft devoted resources into SUA it would have been a very strong player up against Linux and MacOSX.

      • Brian Reiter says:

        …“things change and maybe its time to move on” is as headstrong as when Bill Gates…

        Mostly, this is a reflection of my personal frustration with the decline of Interix starting with Windows Server 2003 R2. I’ve been through the seven stages of grief and arrived at acceptance.

        If it’s time to move on then among academics and students it’s likely that it will be away from Windows

        You may be right on this. Microsoft is gambling that they can bring developers along but the risk is that they lose a generation and Windows becomes a legacy backwater.

        …the broken SUA API is really something for Microsoft to fix. My guess is that for political reasons some within Microsoft prefer that SUA is being starved…

        I agree, technically there is no reason that Interix couldn’t be a 1st class UNIX implementation with OpenGroup certification and everything , but as you say SUA is a starved project. There is no reason to think they will fix things. The death march started with the absorption of SFU directly into the Windows Group as SUA.

        I believe that had Microsoft devoted resources into SUA it would have been a very strong player up against Linux and MacOSX.

        I agree. At one point–maybe a couple of times–it looked like Microsoft was going to quietly provide a first class UNIX implementation on NT but they are clearly walking away from that. I think this is likely strictly a business decision. Look how well Sun did selling UNIX. Apple does well but the UNIX stuff is kind of a side effect of their NeXT heritage. It helps them with a niche audience of hackers, Web 2.0 startups and academics but the core reason they make money on the Mac is superb industrial design and superlative marketing and retail delivery. From a purely business perspective, it is hard to make money on a really open platform because there are so many substitutes. Easy substitutes drives the replacement cost down close to zero. Microsoft’s strategy has always been to commoditize hardware and own a profitable, proprietary software platform. At the moment Apple occupies something a little more than 5% of the desktop and laptop computer market. Linux is much less. If the market changed so that OS X and Linux really started eating into that market share specifically because Windows fails to provide POSIX C interfaces and a UNIX environment, then Microsoft would try really hard to implement something compelling. Failing that, I think they won’t and Interix will die and also the SDK and tools will likely come out a year after Win8 is released and be flaky to boot, if history is a guide.

      • Hugues says:

        Just to point out that OS/X is Unix, so is Android (Linux) and so is iOS. I don’t know what the business market share of Windows is, but I somehow doubt it’s 75%

      • James says:

        @Hugues We’re talking exclusively about desktop operating systems here, not mobile. So iOS and Android aren’t really contenders. I suspect Windows *does* have 95% of the desktop operating share. I do doubt however that it holds 75% of the server share, after all, doesnt most of the Internet infrastructure run Linux (or at least Unix)?

  5. Annoyed says:

    No longer deprecated, its actually *missing* from the latest Preview Release of Windows 8. I know this doesn’t necessarily mean it has been dropped, but it certainly doesn’t look good. Especially as all the other Enterprise Windows Features (IIS, etc) were all present.

    I would post on the SUA Community forums about this, but what do you know – they’re locked as “read-only” as the administrator has “upgraded the forum software”. Co-incidence?

    • Annoyed says:

      OK, perhaps a little hasty. It would appear the old forums were still in place and I was attempting to login to those. The new forums are up and going and a post has already been made about the missing Windows Feature.

  6. dreaming says:

    AFAIK the old forum is up for search engine hits/matches. The new forum is supposed to have all of the same content. Have to reset your password in the new forum though (not a big deal).

    It’d be nice if Microsoft could “set it free” for interested people to work on it. I know it takes time to start the subsystem, but the space and load it takes up is soooo much less then even something like Word.

    • Brian Reiter says:

      I’m not happy with the direction MSFT has taken. The silver lining might be support for Ubuntu in Hyper-V but like many others my company has moved development to Apple Mac hardware with Windows Server running in VMWare and I use MacPorts. I also like the Bitvise WinSSHD server for SSH access on Windows. Mac Terminal.app needs to report $TERM as xterm-color instead of xterm-256color but then ssh in Terminal works great with WinSSHD and PoweShell as the shell.

      This setup gives us access to the full range of functionality on dev machines that we got via SUA — actually more. We replaced any use of SUA shell script automation on Windows servers with PowerShell a couple of years ago. It overall works better and I suspect Server 2012 will be an even better guest OS. Depending on your environment, hosting Windows on a VM in Precise or CentOS 6 might work or vice-versa you can host Linux or FreeBSD in VMWare or Hyper-V or VirtualBox on Windows. (I found VirtualBox to be well behind VMWare in features and stability.)

      There was a (fairly brief) period where I was doing iOS development on virtualized OS X in VMWare Workstation on a Windows host. That did not work so well. OS X was dog slow in VM with occcasional kernel panics and the lack of Quartz Extreme virtual drivers is problematic.

  7. Pingback: Solving Very Slow Visual Studio Build Times in VMWare « Brian Reiter's Thoughtful Code

  8. Pingback: Does Windows 8 Still Implement POSIX? | Click & Find Answer !

  9. The concern about memory footprint doesn’t apply, or at least it didn’t for SFU 3.5, which could be persuaded easily into running the subsystem only when needed.

    • Brian Reiter says:

      I find that I run a minimalist Windows Server 2012 R2 VM with Visual Studio and msysgit and without “Desktop Experience” these days for .NET development.

  10. taco says:

    So, if they’re deprecating SUA then we can assume that the next version of windows will just be inherently posix compliant, right?

    I don’t understand all the gloom. This is wonderful. The last remaining non-posix OS is finally taking the plunge and joining the rest of the world.

    The only alternative would be that they aren’t interested in posix at all, which would be… suicide, right?

Leave a comment