Log in to watch

Log in or create a free account to watch this video.

Log in
San Francisco 2015
Share
Download slides

The Cultural Battle To Remove Windows from Windows Server

In this session Jeffrey Snover, the inventor of PowerShell, will describe his difficult, painful, but ultimately successful, journey to challenge the foundation of one of the most successful businesses in the history of world. Imagine the challenges of removing Windows from Windows and replacing it with command line interface.


Anyone who has faced challenges making changes in their organization, or needing to create a culture change to succeed will find relevant lessons in this talk.

Chapters

Full transcript

The complete talk, organized by section.

Jeffrey Snover

Okay. So I'm Jeffrey Snover. This is my talk, "The Cultural Battle to Remove Windows from Windows Server." There's my Twitter information.

The subtitle of this talk is "My 16-Year Journey to Ship Nano Server."

Data centers used to look like this in the 1980s, okay? Big mainframes, VAXs, all this good stuff. Microsoft, along with IBM, invented the PC, the PC revolution. This was a command-line experience, and it did extremely well.

However, the world just exploded with Windows 95. Yes, there was Windows 3.1, very successful. But when Windows 95 came out, it's hard to overstate the impact this had on the industry. Literally, there were people lined up at night waiting to get their copy of Windows 95. They were spending thousands of dollars to buy a new PC just so they could run Windows 95.

Now, in this time, Microsoft learned a lesson. And they learned the lesson that, man, it's all about the GUI. And if we can make it about the GUI, we can win, and we can change the world.

So much so, in fact, that they decided, "Hey, we can get into the server business." And so they started Windows NT Server. There were some challenges here, because as they tried to get into the server business, this was at a time when the defining user experience of Windows was something we called the Blue Screen of Death, okay? So there were some challenges.

Additionally, we again tried to take a GUI approach to management, and there were challenges there as well.

So this went on for a number of years, until at some point, there was a review with Bill where he said, "Let's just be honest with ourselves here. We need some help." And the call, they got on the phone, and they called me. Why they called me, I'm not sure.

At the time, I was at Tivoli and had won a number of awards for the NT and management products that I had been doing. So they thought I'd be a good person to help them with their journey to the server.

So at the time, as I say, I was working at Tivoli. I had been running their network management business, and I was in the CTO office. And I've got to tell you, I loved working at Tivoli. Just a fantastic group of people, really bright, lots of fun, great culture.

So the question is, when Microsoft called, I was sort of not interested. I was just really happy where I was. So the question is, why? Why did I take the call?

And to answer that question, we've got to get to motivation. And now we've got to go back a little in history.

I was a physics major. I love physics. I had a deep, passionate affinity for physics. But it wasn't just any physics. It was Newtonian physics, okay? So I grew up in a time where we had the Vietnam War, and we had the Cultural Revolution. Lots of change and lots of ambiguity. And Newtonian physics, for me, was this rock bed. And it just wasn't science. It was truth. Foundational truth. There's all this stuff, but F = MA. Man, you can count on that. I love that.

And then I encountered Thomas Kuhn's book, The Structure of Scientific Revolutions. Kind of set that into question.

So I started to explore. And there was a guy, Leibniz. So Leibniz was another inventor of calculus, and he had this idea of monads.

Now, basically, here's how it all works down. Basically, two models of the world. Western civilization, Newtonian physics, believes that the fundamental building block of the universe is dead atoms. Dead atoms aggregated in sufficient complexity form life. Life in sufficient complexity forms consciousness, okay? So that's a Western philosophical view of the world.

Leibniz had a different view of the world. And this is sort of a more Eastern view of the world. He viewed that the fundamental building block of the universe was consciousness. He called this fundamental building block of the universe, of consciousness, a monad.

Now, these monads would sometimes decide to manifest themselves as physical matter. And sometimes they would look at other monads and say, "Hey, why don't we get together to solve something bigger than either one of us can do by ourselves?" And then those aggregations would form with other aggregations to do things, higher and higher purposes.

So in this world, it was all about composition. So it was a very different view of the world. And so this led me on my journey of epistemology and ontology, and ultimately ended my career in physics, because I realized it was just a model.

And I got heavily into philosophy. And there I meet my friend Nietzsche, right? Nietzsche said that he was an existentialist, and as an existentialist, he believes that when you die, that's it. There's nothing after that. And he goes farther and says, in fact, there is no truth, there is no meaning, and there's not a despair to that. Rather, there's an empowerment.

What he said is that each of you as an individual needs to figure out what you're going to do with this time. What's going to make meaning for your life? Why are you doing this?

And so that made me do a deep introspect, like, what am I going to do with my time? And I decided at that point that what I wanted to do with my life was to have an impact.

So now let's go back to Tivoli. How many of you out there, how many of your friends and family are using Tivoli?

Right. Not so many, okay? But there was this thing called Windows. And as much as, boy, it had problems, and I didn't really think that much of it, the entire world was using Windows. Just dominant operating system. So dominant that the guys who couldn't compete against it were enlisting the government to try and stop Microsoft. "Please, government, U.S. government, could you please stop them?" And we declared a monopoly.

So it was just a dominant force in the universe. Then I thought to myself, "Well, boy, if I can go there, and I can help them," because, boy, they need some help in the server business. "If I can help there, I can have an impact."

So that was great. And so I joined, I answered the call, got hired, and I became Microsoft's lead over all the management technologies and products. At the time, it was all Windows, Windows, Windows, because as I mentioned to you, everything was Windows. If we can make it about Windows, we win.

But I had a problem. Windows are great. Love GUIs when you're going to walk up to a server and give it a hug, and you manage it. Incredibly powerful for small, medium businesses. But I knew that to be successful, we needed to address the needs of these types of environments, data center environments. And having a local GUI on every server in a data center environment, I knew was not going to work.

And so I began. I began to press for automation through command-line interfaces.

Why through command-line interfaces? Because that's how admins work, right? The documentation, we all know the documentation's crap. It's always wrong. It's always crap. Real admins experiment, and they find out how things really work, and they experiment through the command-line interface. And then they take their experiments, and they put them into scripts, and then they make those scripts more and more formal, sharing with others and doing bigger jobs.

So I pushed for that model. And I failed. Oh my God, did I fail. It was like walking into a buzzsaw. Not a pretty sight, right? And so I just kept going at it, going at it, going at it, until finally one day, I remember it like it was yesterday. I had the meeting. I finally had convinced my executive that we would embark on a strategy of automation through command-line interface.

I cannot tell you how great I felt.

And then it came. Then it came. The question. "Which 10?"

I said, "I'm sorry, what do you mean?"

She says, "Well, we can't do everything, so let's start with 10 commands and see how it goes."

And I thought to myself, "Oh my God, this is going to take a long time." I had no idea what I had really gotten myself into.

So eventually, we threw some money at this, right? Couldn't get the developers to work on this, so we threw money, got contractors. Spent an incredible amount of money to get 70 commands. That was great.

And then I realized I had a flaw. I had missing coverage for WMIC. So I went, and I got a little bit of extra money, and I said, "Let me just get this one thing, because I need command-line interface for WMI."

Here, with this, what I did was I wrote an engine. I had a single parser against this engine that then worked against WMI, Windows Management Infrastructure. And what I did was I got the objects and was able to process them in a common way.

And what I did was I spent my Christmas holiday writing 72 cmdlets. So I'd spent upwards of, well, many, many, many millions of dollars to get 70 cmdlets. Here I had spent about $60,000 and my Christmas vacation, and I'd gotten 72. And you know what? They're pretty good.

So then I invested a little bit more, and that little bit more of investment in the engine then produced functions that applied to all 72 cmdlets. And I knew I was onto something. This was the heart, okay?

So enter into Bill Gates. Now, here I've got this great engine. I got this great command-line interface. All I need to do is to get the world to write WMI providers. But at the time, Bill had convinced himself that, hey, I need everybody to get on the .NET bandwagon, and he was beating that drum.

And anytime I'd go to talk to a team, and I'd say, "Hey, I need you to do WMI," they're like, "What? Haven't you got the memo, my friend? It's all .NET, .NET, .NET."

I said, "Well, can we do both?"

And they said, "No."

So I said, "Okay, that's a challenge."

So Bill was so enthusiastic about this .NET, I decided I really need to find out what he is on about. And so I decided to rewrite WMIC using .NET, okay? And instead of using pipelines of WMI objects, I was going to use pipelines of XML.

And at that point, I stopped, and I did a deep rethink of the Unix compositional model. The Unix compositional model can be best expressed as A pipe to B pipe to C. And every now and again, you want to stop and ask yourself dumb set of questions and see what happens.

And so I asked, "Why do people do this?" And there's the traditional Unix answer. Unix is all about a toolkit of small tools that are then aggregated together to come up with unique solutions to unique problems. Great answer.

But there's another answer, and that other answer is you pipe A to B to C because A doesn't do what you want it to do.

And why doesn't it do what you want it to do? And the answer is because A tightly couples three separate steps into one. A gets a set of objects, it processes those objects, it outputs the objects as text.

So when you say A doesn't do what you want it to do, what you're really saying is, "I didn't get the right objects, I didn't process them the way I wanted to, or I didn't output them to text the way I wanted to." So then piping it to B and C is really the process of trying to take the text and reverse engineer your way back to the beginning of the pipeline to do one of those steps differently.

And the heart of PowerShell and the heart of Monad was, I said, "Hey, let's just keep that model, but have pipeline objects instead of text, and only output text when you need to." And it dramatically simplifies everything. So that's the heart of it.

I stepped back, wrote this all up as part of the Monad Manifesto, a deep, comprehensive document. If you've never read it, I encourage you to do it. Really quite a thing.

I described the problem that our customers had. I described the philosophy we were going to take and the approach to solving those problems. I described a roadmap, multi-release roadmap, for how we were going to achieve this. I was very specific about what success looked like for different audiences, and then this acted as a framework for contributions for other people to add their IQ and do things.

For instance, the PowerShell language is about 10 times better than I had anticipated or I had envisioned. That's because I had great engineers, Bruce Payette and Jim Truher, who were able to take this and say, "Well, hey, how about this?" And it fit perfectly. So great stuff. Yeah. Awesome?

Yes, good answer.

Not so much. So I wanted to work on this full time, and basically the answer was, "What are you talking about? You're supposed to be our industry leader taking us to the server, and you want to mess around with this stupid little shell? Like, no."

And I said, "Well, no, I really want to do this." So I ended up taking a demotion to go work on PowerShell. That, and by the way, cost me a lot of money.

Okay, so now anybody ever heard of this thing called Windows Vista? Yeah. Not our best release. However, the thing you understand is that was the save. Originally, it was Windows Longhorn. Boy, if you thought Windows Vista was problematic, you should've seen this thing, okay? This was a mess.

Because what had happened was that everyone was on this Bill Gates .NET. And then these bad engineers just went and did stupid things. They took this wonderful, just I love .NET, this wonderful application framework, and they were putting it in the kernel, right? They went and put it in the common controls.

So you go and you say, "Well, I got Notepad," and that's about 10K. And then you say File, Open, and all of a sudden it brings in .NET. So 10K to like 10 megabytes. It's just crazy. Just out of control, okay? So that was a problem.

And it created a mob. There was a backlash. People were not happy. I mean, I cannot tell you how difficult what we called the Longhorn reset was. And during this Longhorn reset, a group of architects went off and defined the seven rules for using .NET in Windows. And this document, these rules were brutal. I mean, these were tough. These were really hard things. So much so, in fact, that everyone stopped trying to put .NET into Windows.

Everybody but one guy.

And so what I did was I actually pulled the product out of .NET, out of Windows, and I said, "When we got this covered, we'll come back and we'll knock on the door, and then we'll bring it back into Windows."

So at that point, the mob was fired up, and they came after us. Oh, my Lord, did they come after us. I had one guy tell me, "Hey, admins don't want command-line interfaces, and we know this."

I said, "What'd you do before you came to Microsoft?"

And he said, "Well, I came here from college."

I said, "Yeah, I knew that. Dope."

Okay. At some point, I had a senior executive basically telling me, "Exactly what part of effing Windows is confusing you, Jeffrey?"

These were difficult periods. I mean, years of just bad stuff.

In fact, here's a little side story. I'm running out of time, but I'll tell it. At some point, some guy said, "Hey," I think finally shipped it, and the guy says, "Wow, things have really turned around for you."

I said, "Yeah, they did."

And he said, "You were a pariah for years."

And I said, "Yes, I was."

He says, "We were rooting for you."

I said, "Really? I never knew that. Would've been nice to tell me."

Okay. So people ask me, "Oh, Jeffrey, do you hate GUIs?" No, I love GUIs. But again, my job's about the data centers, and I love the data centers even more than I love any particular GUI, right?

So this is really a story about command line and the GUI, not command line versus the GUI. In particular, I want GUIs running on clients, where they're optimized for, and then managing lots and lots of servers. That's the deal, okay?

So what we did was we partnered, we got a coalition of the willing. We worked with the Exchange team, great group of engineers, common vision. We worked together, very successful project. They wrote their enterprise management console, layered on top of PowerShell, GUI layered on top of PowerShell.

Together we wrote a very influential Think Week paper called "How Exchange and PowerShell Finally Got Administration Right," okay?

So at that point we said, "Okay, we're ready. We're going to go back into .NET." And we went and do these reviews.

"Are you green on this item?"

They said, "Yes, we're green."

I said, "It's not good enough. You got to be fluorescent green."

"How about this one?"

"No, you got to be radioactive green. They're not going to want to let us in. So I want super green on everything."

And we were.

And so we knocked on that door. And when we knocked on that door, we found out, oh no, there are eight rules of getting .NET into Windows, and you only find out about the eighth rule when you get through the first seven. And the eighth rule is no .NET in Windows.

I'm not making this up. I really am not. Because as I mentioned to you, there really was just this incredible, like, hey, we had a problem, we did a reset. We are getting things together, and we don't want to be messing around.

But at the time, as I mentioned to you, it was all about the data center. And the business owner of the data center, the executive in charge of that, was our sponsor and said, "No, I need this for my business."

And so ultimately, because of his sponsorship, he was able to fight that battle after we had gained the initial win with the Exchange team. He was able to prove that this was important and got it shipped as part of Windows PowerShell. Yahoo, okay?

So this is a video of me at our ship party. A little bit younger then. Okay.

We then took that and we did something called the Common Engineering Criteria. Common Engineering Criteria was a set of standards that all products that Microsoft ship have to adhere to. And we were able to leverage that success to put PowerShell into this, and this is where it became everywhere. All the products use it.

And now, IT pros, that's you guys, IT pros everywhere are using PowerShell to be heroes of their corporations and save the world.

Okay. So good news, I got my position back five years later. Five years later. Okay, so that was a bit of a challenge. And then after that, I got promoted again, because we were having such an impact, we were really changing the industry.

I got distinguished engineer, and I was asked to become the lead architect for Windows Server. Now let me tell you, the lead architect for Windows Server, that's just one of those jobs you put on your tombstone, right? On the back of the tombstone, it's like, "Oh, yeah, and he was a loving father and husband," right? But this is the headline, right? And so it really was just this gratifying thing.

And then I could start to go do the rest of what we needed to do to make Windows Server be a great server.

Okay. So after that, that worked out pretty well. 2012 R2, pretty great release. They made me the lead architect and distinguished engineer, not just of Windows Server, but of System Center as well, the data center products.

And here we began to really focus in on Nano Server. So Nano Server's the next leg of our server journey. It's a headless, no Windows in Windows Server. It's a headless, 64-bit-only deployment option for Windows Server.

If you want to have a GUI, a server with a desktop for small businesses or medium-sized businesses, you can still have that. But now you can have a version that's the very smallest possible thing, okay?

Now, the results, boy, I can spend an hour talking about them, but they're enormous, okay? Setup time goes from 300 seconds to 40 seconds. The VHD size from Server Core, it was 6.3 gigabytes. Nano Server, 400 megabytes. With Server, it's 20 times smaller than Server with a desktop. These are stunning results.

Okay. This is the login to the Emergency Management Console. Behold, it is a thing of beauty.

In September, I was blown away by being promoted to Technical Fellow, and I'm now the lead architect for Enterprise Cloud Group. So that is both Windows Server, System Center, our Operations Management Suite, which is basically System Center running in the cloud, managing anything anywhere, and then our Microsoft Azure Stack, the project to take Azure and run it on your hardware.

Now, it's worth trying to get this Technical Fellow thing a little in focus, okay, just to see how big this is. Microsoft has well over 100,000 employees. We have only 23 Technical Fellows. The vast majority of them are really vice presidents, people with 300, or 700, or 1,000 people working for them. We only have 11 individual contributors. That's what I am. I'm an individual contributor. I have no reports.

Microsoft has had five Turing Award winners work for it. Only three of them were Technical Fellows. So this is a pretty big deal. And again, there's me at my promotion celebration.

Okay, so the cultural battle to remove Windows from Windows Server. It was a little 16-year journey to get to Nano Server. Let's talk about it. How did I change the culture?

One, align your vision with business objectives. Difficult times will come. They will come. It will be brutal at times. But if you are aligned with business objectives, you can endure it, and if you're not, you won't be able to.

Number two, focus in on the why and the how versus the what and the when. The Monad Manifesto allowed me a framework for people to add their IQ, and I was able to attract fantastic engineers because they had the space to contribute their best work to this in a coherent fashion.

Next, start small. We hear that a lot through this conference. Start small. When you're successful, then expand.

And you have to respect the existing culture even as you try and change it. We've had people come in from the side, and they didn't respect the culture, and they were unable to ever get anybody's time. You've got to respect the existing culture even as you change it.

Okay, my friend Nietzsche said you need to have chaos in your soul to give birth to a dancing star.

I will tell you, this conference is an inspiration to you. Many of you people are my customers. All of you people are part of my tribe. And I will tell you, your efforts to take and transform your businesses with new methods, it inspires me. And I wish this conference had existed 15 years ago. Maybe it would've been an eight-year journey instead of a 16-year journey if I had learned some of the techniques from the people in this room.

Again, here is my contact information. I'm available on Twitter. And if you fill that in, you'll get a Microsoft Jolt or something.

That's it. Thank you.