A change at the top, followed by a clearly defined focus, with an all-out embrace of open technologies and an increased update release cycle. Throw in a further commitment to consumer devices for good measure.

One could argue that 2014 was the year of Microsoft. Or, at least, the year it remade itself. But it needs to be careful to not alienate a big part of its user base. I’ll explain in a bit.

Former CEO Steve Ballmer was loud and bombastic, growing the company from US$21 billion in revenue in 2000, when he succeeded Bill Gates at the helm, to a $77 billion business when he left earlier this year. He recognized the value of the cloud and had the company roll out Windows Azure in 2010. He grew the company’s business software revenues more than 300% over that same time.

The company, though, fumbled two big matzo balls with its blind adherence to Windows, and its failure to assess and execute in the mobile market.

In February, the torch was passed to Satya Nadella, who brings the best of both Gates (technical genius) and Ballmer (business acumen) to the role of CEO. One of his first acts was to declare the Microsoft’s focus would be on a “cloud-first, mobile-first world.”

And the company followed up on that with releases of Visual Studio Online, Team Foundation Server in the cloud, and Office 365, which moved SharePoint, Exchange, Lync and more off dedicated servers and into the cloud. The year also saw important updates to Azure and the company’s smartphone platform.

Yet the biggest shift in direction (which, in fairness, began during Ballmer’s tenure) was the embrace of open source. In November, the company released .NET Core to open source, its most significant contribution of technology to date. It was also the move that has made the software development world finally believe that Microsoft wants to play well with others, and is no longer the evil Lord of Lock-in. (Or is it?)

Even more, Microsoft finally publicly admitted that it realizes the entire world does not run on Windows (and that it never will) by making its Office business productivity suite available on Android, iOS and Mac OS devices. The move clearly marks a dramatic shift, where the company will rely less on revenue from its operating system than it will from its business software, which itself is a multi-billion-dollar revenue stream.

In an interview I did with Soma Somasegar, Microsoft corporate vice president for the developer division, I asked him what his embrace of cross-platform technology meant for Windows. His reply, in effect, was that Microsoft wanted people to have a fantastic experience on Windows, and because the company doesn’t own Linux, it will have to work with those communities to do that.

(Related: Microsoft is the new Sun Microsystems)

To its credit, Microsoft is working with companies like Xamarin on its cross-platform capabilities in the mobile space, and has reached out to the Linux community to ensure its software will run on those servers just like it runs on Windows servers.

But this is where Microsoft needs to be careful. With its all-in approach to the cloud, it risks losing customers that want to retain their local servers, or forces them into infrastructure changes.

I understand that by de-emphasizing Windows, Microsoft will need to recoup that revenue, and its path is through hosting and software subscriptions, which are not as lucrative as old-fashioned server and software licensing. Also, by going cross-platform, Microsoft loses the one thing that guaranteed those revenue streams: Windows.

Now, Microsoft has to compete with Google for business software, and Amazon for cloud infrastructure and Platform-as-a-Service capabilities, and Apple on the device front—all coupled with business moving away from desktops and allowing workers to “bring their own” tablets and smartphones. This is undoubtedly a scary new world for the company.

Say you’re a Microsoft customer who has loyally purchased servers and software, has spent money and person-hours building custom applications critical to your business, and created a secure environment to run it all. Now you’re told you need to go to the cloud, where your custom applications might not perform as they do on your servers. You’re told you need to trust Microsoft on security, even as almost every large “trust me” IT company has been hacked and looted.

You’re told that you can keep your servers, but all the cool new features will be delivered to cloud customers way before you get them, potentially costing you a competitive advantage. Or, you can spend money to retool with Linux boxes, but as Somasegar pointed out, Microsoft doesn’t control Linux and can’t guarantee the user experience will be the same.

So, isn’t this just another form of lock-in? You’re left with no good choices—or at least none that allow you to do what you want to do. You’re basically forced into the cloud. And since your applications are likely built in C# or C++ and use other Microsoft technologies to house your code or store your data, you’re really locked in to the Microsoft cloud. Those applications that won’t run the same way? Those customizations that can’t be ported to the cloud? You’ll just have to make modifications and live with it. I see no other route.

Your hope is that Microsoft can deliver on its promises. So far, it looks like it’s making the right moves and saying the right things. Let’s see if it can deliver on that promise. The chances of that happening are certainly better with a technically-savvy CEO guiding the ship.