New tricks for old Windows devs
Unfortunately, not all Windows Server software has been written with this idea in mind. Beginning now, Snover said, developers writing server-side software for Windows should be considering Nano Server as their target. If they need more features than Nano Server provides, Server Core and full-fat Server will still be there as options. But coders shouldn't create dependencies on APIs that they don't really need.
Snover stressed, however, that Nano Server is not a new OS. It is Windows Server, albeit a version that only offers a subset of the full Win32 API.
"All the APIs in Nano Server are the same APIs that are in Full Server," he explained. "There are just fewer of them. APIs that put things on the desktop, they don't exist."
Various other APIs don't exist in Nano Server, either. Naturally, that means some existing software will never run on Nano Server – at least, not without modification. But a surprising amount of it is running on Nano Server already, thanks to a feature called Reverse Forwarders.
The problem with yanking APIs out of an OS is that software that once a DLL is removed, software that's written to call its APIs will crash. So, for example, a server application that's been written to throw up a dialog box on the screen when it wants to send a notification will bomb on Nano Server, because those GUI APIs aren't there.
Reverse Forwarders is an optional package that gets around this by providing shims for the missing APIs. With it installed, calls to missing APIs are handled gracefully by simply returning a "Not Implemented" code, allowing the software to run on Nano Server without recompilation, even if it tries to do a few naughty things that it shouldn't, here and there.
This doesn't mean developers will never need to modify their existing code to run on Nano Server. Just for starters, Nano Server is 64-bit only, meaning 32-bit binaries won't run. But Snover said Reverse Forwarders have already got the OS off to a good start.
The packages Microsoft already has running on Nano Server, Snover said, include Chef, Go, Java (OpenJDK), MySQL, Nginx, Node.js, OpenSSL, PHP, Python 3.5, Redis, Ruby 2.1.5, and SQLite , among others.
Drivers à la carte
If developers will have to change their tactics to target Nano Server, however, admins will also have to get used to different ways of installing, configuring, and managing the pint-sized OS.
For starters, although Nano Server is technically an installation option of Windows Server, it won't be listed as an option in Setup. Instead it will be provided in a separate folder on the install media, and admins will have to install it from there. The reason for this is that another way Microsoft has reduced Nano Server's disk footprint – and its security surface area – is by stripping the OS down to include as few device drivers as possible.
This isn't to say that Nano Servers won't come with any drivers. One of its strengths is that it is fully driver-compatible with every other version of Windows Server, so all of the hardware that works with Windows Server today will work with Nano Server.
But Nano Server doesn't include any drivers by default. Nestled within the Nano Server folder on the install media is another folder full of OEM drivers, and admins are expected to create their own, custom Nano Server images by picking the drivers they want.
"If you want to take all of the drivers available in Server Core and just put that big blob in, you can do that," Andrew Mason, a principal Windows Server program manager, explained at Build. "Or you can customize it and just pick the drivers specific to your hardware and have a very small and light image."
As clever – and refreshing – as Nano Server's method of installation sounds, however, installing software onto the micro-OS is still something of a work in progress. In fact, for the time being, the only way to get applications onto Nano Server is simply to copy the necessary files onto the system image.
Because the traditional Windows MSI installation process has a lot of GUI dependencies, Snover said, it isn't available on Nano Server.
Snover said Microsoft is working on a Nano Installer that will handle many of the roles of traditional MSI-type installers, including uninstalls, registering and de-registering COM objects, creating and deleting Registry keys, and so on.
He added, however, that with Nano Server, Microsoft is making a clear distinction between installation and configuration. Nano Installer will handle getting software onto your Nano Server system, Snover said, but configuration is a separate step that should be handled with PowerShell's Desired State Configuration, for example.
When will we see it?
"[Nano Server] is a first step toward a fully compositional, factored operating system where you get the components that you want," Snover said.
It will run on any environment, he said, including bare metal, as a guest OS in a VM, or as a host OS for containers. And while the first iteration of this new Windows Server flavor will be focused solely on cloud infrastructure and cloud applications scenarios, Microsoft plans to move more roles on to Nano Server as time goes on.
For most of us, though, it still doesn't exist – at least, not yet. There was no download available timed to coincide with Build. But Snover and Mason did confirm for the first time that we'll get our first hands-on look at Nano Server with the next Technical Preview build of the new Windows Server arrives in "early May."
Development of Nano Server is being done in parallel with that future version of Windows Server – which some sources are now calling Windows Server 2016, though it's too early to say whether that will be its final name – and so Nano Server will become generally available whenever it does. ®