You can’t keep a trade secret under embargo in the open source world — then it wouldn’t be open. So when Microsoft revealed on Wednesday that it was adding a Windows version of the overwhelmingly popular virtualized container system Docker to the next version of Windows Server, it effectively admitted there was a next version of Windows Server with a game changing new feature.
And with an unexplained major "Cloud OS" announcement in the server space slated for Monday, to be made by CEO Satya Nadella and Azure chief Scott Guthrie, there are more signals than ever that Azure and the company’s server OS will be more closely tied together, perhaps in unusual ways.
In its short lifetime, Docker has been the most innovative and automated approach to distributing Linux applications across platforms. With Docker’s version of the container system, applications are packaged along with the runtime components necessary to run them in any version of Linux.
Granted, only one company produces Windows Server, so there are some Linux supporters and admins who are wondering what all the fuss is about. As a Windows Server admin will tell you, distributing a Windows application is a tricky business.
Windows 3.0 was the first version of the operating environment designed to be the provider of every resource that an application would need to run, besides the code that was exclusive to itself. It was the early 1990s, and at that time, Microsoft touted the architecture as enabling slimmer, leaner apps — which, of course, never quite happened that way. Still, the gadgets and user environment elements that made applications functional, were provided within the Win32 API.
The problem with that approach was that every tie between an application and the library providing those functions, had to be explicitly stated within the System Registry — a colossal database of the relationships between installed components for every single version of Windows. The rising success of Java prompted Microsoft to implement its .Net Framework, which was its first just-in-time runtime environment. The Framework maintained a single set of guaranteed available resources, and acted as a middleman between applications and libraries.
But even that approach became constrained as the Web evolved into an applications platform. You couldn’t write a C# or Visual Basic app that could be deployed in a Web page. Microsoft’s solution to that was Silverlight, a plug-in that featured a subset of .Net, that could run Web apps in a sandboxed environment like a Java app.
In the era when plug-ins were necessary, Silverlight lost out to Adobe Flash as a development platform. Then HTML5 rendered both obsolete. When Microsoft adopted its Windows 8 strategy, it ceased development on Silverlight, moving that platform’s principal champion, Scott Guthrie, into the Azure team manager post. No one at Microsoft has advocated more for a nimble and agile approach to apps distribution, than Guthrie.
.Net deployment by other means
According to Microsoft Open Technologies — the company’s official liaison to open source — the new Docker daemon in Windows Server will be focused on delivering .Net across systems, presumably by way of cloud deployment. If it could deliver Win32 applications without formal registration, it would be somewhat miraculous.
In either case, a Docker system for Windows apps on Azure (a Linux apps on Azure system already exists) would enable a rapid deployment model for applications that was not possible on Windows Server before due to its Registry-shackled architecture. In fact, Linux’ rapid gains in the server space are largely due to how relatively easily applications and virtualized platforms can be deployed. Even before Docker, and even with the success of PowerShell for Windows, administering Linux systems became far less of a headache overall. (The licensing models helped too.)
But the fact that Microsoft is making this game changing open source announcement now is also an indication that the next version of Windows Server, to which the announcement refers, remains down the road a ways. Development teams can keep projects secret when they own the projects; with Docker, the project is led by one company but not owned by it. The public announcement is effectively the sound of a starting gun for the development process. And as is the case with open source, itineraries are never set in stone.
"Microsoft and Docker share a common vision that multi-container applications should be assembled using both Dockerized Windows and Dockerized Linux components," reads a blog post from Docker on Wednesday. "The two companies will work with emergent infrastructure tools for multi-container applications like Kubernetes, Mesos, Helios etc. to provide a uniform Docker interface that provides developers with multi-platform orchestration capabilities leveraging Dockerized content from these two ecosystems."
Cross platform deployment?
The amazing suggestion here is that cross-platform applications utilizing multiple containers on different platforms may be feasible through a common development tool. For now, both companies are obviously restraining themselves from direct references to Visual Studio, Microsoft’s proprietary dev platform for Windows.
Yet a preliminary picture is emerging of a new concept for Windows Server that will be partly assembled using open source virtualization tools, and as such, whose development agenda will be largely determined — as it is with Linux — by the open source community.
Strategies for reducing operational expenditure whilst maximizing operational resiliency and efficiency