The software giant placed Surface chief Panos Panay in charge of Windows earlier this year, and is now reshuffling parts of that team. It follows Microsoft’s decision to slice Windows into two parts more than two years ago after the departure of former Windows chief Terry Myerson. Microsoft moved core Windows development to a cloud and AI team (Azure), and created a new group to work on Windows 10 “experiences” like apps, the Start menu, and new features.
Now, Microsoft is moving parts of Windows development back under Panos Panay’s control. Specifically, that means the Windows fundamentals and developer experience teams have been returned to what we traditionally call the Windows team. It’s an admission that the big Windows split didn’t work quite as planned. We’ve seen plenty of evidence of that with a messy development experience for Windows 10, delayed Windows updates, a lack of major new features, and lots of Windows update issues recently.
That’s a lot of reshuffling, but I wonder what the purpose of it all really is. It seems most Windows users want Windows to just be… Windows. They don’t want ‘modern’ apps forced upon them, they don’t want touch-optimised user interfaces, they don’t want application stores, and they certainly don’t want Windows anywhere else but their desktops and laptops. How much freedom to push the Windows platform forward do you really have when all users want is to run the same set of Win32 applications in perpetuity?
They’ve tried creating a version of Windows only capable of running ‘modern’ apps, and it failed – twice (and a third attempt is on the way). They tried combining the two into one with an adaptable UI – and everybody hated it. They’ve been trying to just kind of coast by on Windows 10, and as the above article notes, it’s been quite problematic. They’ve tried to put full Windows on phones – twice! – and nobody wanted that either.
What other options remain?
Win32 API is “inelegant” when compared to modern alternatives (or it can be seen as “from a more civilized age” as being very low level). The program needs to keep track of many essentials (including simple things like moving the window, or dispatching timer events). Even though this is almost always abstracted by a UI framework, it still causes issues.
The alternative was built as the .Net/C# APIs, which unfortunately did not take root. The next iteration of C++/CX (or WinRT) was slightly better, but still not good enough.
“Foreign” toolkits, like GTK or QT run okay on Windows, but they have highly observable issues. The main being having different User Experience paradigms (i.e.: they don’t ‘act’ the same). So that is also out.
Moving everything to HTML was tried (in early Windows Start Menu apps, and now with Electron and others). But that is clunky to say the least.
The leaves Microsoft in a tough position. People want to run Win32 as much as possible, and as long as Windows supports Win32 natively no other toolkit seems to be able to displace it. There are many modern issues like Hi Dpi displays, multiple displays, remoting, security, and so on that are tough to do, would benefit from a real positive overhaul.
In what way would you say Qt differs on windows? apps like vlc, qbittorrent and clementine looks and acts like a well suited win32 app should and works from windows 2000 onwards to the latest builds of w10. Gtk on the other hand looks line an unpolished turd on most systems, ill give you that.
“The alternative was built as the .Net/C# APIs, which unfortunately did not take root. The next iteration of C++/CX (or WinRT) was slightly better, but still not good enough.”
It is hard for such things to take off, when the Windows team (responsible for Windows/C++) makes an active effort to sabotage the work from DevTools team (responsible for .NET, VS).
What killed Longhorn wasn’t technical issues, those could have been solved if the teams worked together, as proven by Singularity and Midori projects.
Joe Duffy has a couple of remarks on his talks about those efforts, where he mentions even with the platforms running in front of some responsible people on Windows team, they were sceptic of its capabilities. Yet for a while Midori was even responsible for powering parts of Bing.
“Systems Programming in C#”
https://www.infoq.com/presentations/csharp-systems-programming/
“RustConf 2017 – Closing Keynote: Safe Systems Software and the Future of Computing by Joe Duffy”
https://www.youtube.com/watch?v=EVm938gMWl0
“While never reaching commercial release, at one time Midori powered all of Microsoft’s natural language search service for the West Coast and Asia.” taken from https://www.microsoft.com/en-us/research/project/singularity
So after successfully taking Longhorn, Windows Dev team went on a crusade to implement all Longhorn ideas in COM instead of .NET, which eventually has lead us to UWP.
So UWP on its latest from, after several iterations, is basically COM with type libraries replaced with .NET metadata, with updated ABI support for generics, enums and value types. Strangely similar to the ideas being discussed for Ext-VOS (aka COM Runtime) before DevTools decided to go with a Java like runtime instead.
https://docs.microsoft.com/en-us/archive/blogs/dsyme/more-c-net-generics-research-project-history-the-msr-white-paper-from-mid-1999
So while in some sense UWP is what .NET version 1.0 should have been all along, the migration execution has been pretty lame.
Even how they ended up executing C++/CX => C++/WinRT migration, so we finally had a C++ environment that could resemble the RAD tooling from C++ Builder, and what do they do? In name of ISO C++ should trump everything, for brownie points even though others also have extensions (e.g. Linux compiles only with GCC’s C dialect), they kill C++/CX and state that for the missing features like enable rich VS tooling experience we should just wait and hope that ISO C++23 does include them (e.g. reflection).
Also after successfully killing the Managed DirectX and XNA projects, the DirectX team refuses to expose their underlying COM interfaces as proper WinRT components, thus forcing all .NET devs that want DirectX integration and don’t need a full blown engine, to go down the path of either writing their own bindings or grab one of those WIP libraries (SharpDX is no more).
So even those of us that are really into UWP and the benefits that it brings into the table, it is no surprise that such mismanaged product development, where internal politics always get surfaced into the development tools, has made the majority stick with the tried and true Win32.
Yes, I know the unfortunate story. Even when C# was very popular, and we were actually using Silverlight to gather data from our peers across the world, Windows team was sabotaging their work.
I remember the day when Scott Guthrie was expected to announce Version 5 of Silverlight and other .Net tools, but he was on stage, upset, talking about start screen apps.
I had the chance to meet him in person, he was a nice guy, and I was really sad to see his (and the entire dev team’s) work undermined that day.
It’s very simple. Win32 is still the King and has won countless battles. It’s not dead yet, why does Microsoft want to dethrone it?. Alternatives are ver young and without enough feathers.
Windows is one of their two big monopolies and they’d be foolish not to continue investing serious R&D money. That said, Windows is extremely crufty with stacks layered upon stacks that can’t be removed because of compatibility. I actually expect Microsoft to come up with a complete replacement for Windows, written from scratch but not Linux or BSD-based, within 6-8 years. It could be written in house but more likely it’ll be a buyout of a startup or university project, because of Bill Joy’s law (most of the smartest people in the world don’t work for your company). The new OS wouldn’t necessarily have to be able to run all those existing Win32 and .NET apps, because they’d still be selling Windows.
“I actually expect Microsoft to come up with a complete replacement for Windows, written from scratch but not Linux or BSD-based, within 6-8 years.”
This is ignoring history of Microsoft attempted replacements. You have Singularity from Microsoft in 2007 to 2008. Then Midori until 2015. Turns out even with all Microsoft money writing a OS from scratch and getting vendor support is not some simple or easy process. So even if Microsoft attempts in the next 6-8 years there is no promise of success.
‘The new OS wouldn’t necessarily have to be able to run all those existing Win32 and .NET apps, because they’d still be selling Windows.”
This is ignoring why Windows IOT exists. You come back to the same chicken and egg problem. You cannot get market share without driver support from hardware vendors and you cannot hardware vendors support for drivers without market share. Windows IOT being based off main windows gets to share driver support with main version of windows.
You have to look at edge using chromium browser as it core. Its another market share problem. If you don’t have a decent market share in web browsers web sites don’t have to support you. Fastest and simplest way to by pass this market share problem is use some exsiting solution as your base that starts you with some market share.
Microsoft has attempted to be their own hardware producer as well they don’t have the support like Apple has.
I would say the reality is that in the next 6-8 year that Microsoft might release their own desktop Linux that would be use able. If Microsoft releases a new from scratch OS in the next 6-8 years likely hood of success is very low and most likely will not be really user ready and usable until 12-16 years at least if at all.
https://en.wikipedia.org/wiki/Google_Fuchsia
Another thing that should be a warning is Google Fuchsia is that its 3 year old now and it still has bugger all market share. It will take at least 6-8 years just to get vendors on side to have any volume of production to give customers.
Its really hard to crack into a preexisting markets particularly if you are attempting to make a profit. Think about this as well no OEM/ODM need to pay Microsoft any more to make a product to sell to customers. OEM/ODM are only paying for Windows because Windows has existing market share with a pool of applications end users want and brand recognition. Any new OS that Microsoft comes up with that is not Windows application compatible in current market you can 100 percent hardware vendors will want for free and open source that they can tweak.
The problem with Singularity was that it came out of Microsoft Research, which is an academy for well-known researchers to scratch their itch on pet projects with little or no commercial relevance. If, alternatively, an in-house development group was chartered to develop the next gen OS, there would quickly be so many conflicting requirements and changes in direction from the brass that little forward progress would be made. That’s why I suspect Microsoft’s next OS will begin its life outside the company, and will be fairly well along in development when MS comes along with an offer that can’t be refused (possibly forking an existing open source codebase). Then of course Microsoft would take over development, but they’ve done that many times with commercially viable products in the past. It could initially be offered as a server VM option in Azure, with limited driver support but with compilers for various programming languages, some sort of IDE, ports of MS products like SQL Server, Exchange and Teams, and .NET Core.
During this gestation period MS could still push Windows as their main server and client OS.
https://en.wikipedia.org/wiki/Azure_Sphere
Azure path you will run into the wall that most of their team is working with Linux.
“That’s why I suspect Microsoft’s next OS will begin its life outside the company, and will be fairly well along in development when MS comes along with an offer that can’t be refused (possibly forking an existing open source codebase).”
There are very few operating systems with market share to get driver support. So there are very few parties you could do the offer than cannot be refused.
https://en.wikipedia.org/wiki/Linux_kernel#Estimated_cost_to_redevelop
Lets start considering what that cost is for a offer that cannot be refused would look like. To buy a decent OS with decent offer is 20 billion dollars now a cannot be refused value is 3 times that yes more than Microsoft yearly operating profit. So like it or not Microsoft might have a lot of money but buying something decent in a OS is off the tables it too expensive.
“IDE, ports of MS products like SQL Server, Exchange and Teams, and .NET Core.”
Out of that list only Exchange is not on Linux at all. Teams server is not for Linux yet.
Also something else to consider is the DX12 support in WSL2. So lot of ways Microsoft is showing signs of setting up a footing for a Microsoft Linux.
Of course something like DX12 on Linux that only Microsoft can provide on their version of Linux sounds like a solid Microsoft move.
I can see a new OS for MS hardware, no different to what Apple is doing with it’s propriety hardware for it’s custom OS.
So I expect it’s about closing the loop on MS Hardware devices to allow them to do customisation and tricks that are going to be new hardware specific. Leaving the other side of the business lacking in the new features, but debugged and rock solid for corporate clients using legacy software that can still pay for and build new functionality from Cloud/SaaS as required.
I find many non-technical retail clients are not so interested in Cloud anything, they want there software to load with or without a network. They have a more utilitarian outlook, they paid for it so it should work on it’s own. We can debate this all day as software developers, but we won’t win or influence the retail end users because we look at it from a different perspective.
If MS do this, the set the creative types free, and eliminate land mines for the corporate clients.
I don’t believe any of those attempts were flawed in concept – it was all a failure of execution. Getting rid of the structure that failed makes total sense.
” It seems most Windows users want Windows to just be… Windows. They don’t want ‘modern’ apps forced upon them, they don’t want touch-optimised user interfaces, they don’t want application stores, and they certainly don’t want Windows anywhere else but their desktops and laptops.”
This, again. First and foremost there is the issue that nobody really likes Metro, which is the flattest and less colorful of all major flat UIs (and as a result the ugliest). Sure it wins design awards by art critics who care more about “ideological purity” than actual aesthetics (in a similar fashion that fugly brutalist buildings like the London National Theatre do) but this doesn’t change anything, it’s still ugly. Long story short, ever since Zune was launched, public reaction to Metro has been “Ewww….”. Then there is the issue that Metro doesn’t really serve any purpose in Windows beyond duplicating some Control Panel functionality and being a wasteland of apps. Last and certainly not least, there is the reason that nobody cares about Microsoft’s hybrid approach. As a laptop user I don’t want any Metro apps with huge buttons on my laptop, and tablet users don’t want an OS that frequently drops people to a Control Panel with tiny buttons not pressable by fingers (which however make perfect sense on my laptop).
Imagine if all that time spent on Metro was spent at refining win32: Granular app permissions, properly packaged apps, control over what installers put on startup or directories other than their own, better SDKs,.. it really makes me sad as a daily Windows user.
And Microsoft will soon wish they had done all those things. Chrome OS is not the joke it once was, and with Parallels Coherence it will offer all those things.
I am a long time Windows user and I DO like to have touch on my machines and an optional application store. I don’t use those all of the time but there are absolutely situations where I love them. And for kids it seems impossible to work on a machine that doesn’t have a touchscreen.
Metro looked great on Windows Mobile, but I also hate the flatness and lack of color and borders and easily distinguishable controls on Windows 10. I do like the “search for everything”, scaling, instant apply.
What I really don’t understand is how 5 years later there is still a need for Control Panel. Every new Windows 10 release has more functionality in settings, but I still need Control Panel once in a while.
ChromeBooks are indeed growing nicely. They are growing by becoming more complex, more expensive and more powerhungry though so not everything is great. And adding Parallels just means that Microsoft will sell more Windows licenses and that Windows will remain available for (legacy, aka real) work purposes for many more years
Do we see the problem here? Taking a heavyweight OS with tons of non-finger-friendly UI dialogs in the Control Panel and other system apps (disk cleanup, disk management, explorer) and trying to turn it in a tablet OS (where any non-finger-friendly UIs are an ergonomical no-no), from a company not known for their speed in OS development. While removing the traditional dialogs to annoy laptop and desktop users.
I still stand by my original assertion, Metro dialogs annoy desktop and laptop users and traditional non-finger-friendly dialogs annoy tablet users. Windows is an unspecified mix of Metro and traditional dialogs.
No, I don’t see the problem. I only see an inconvenience. But that is because I don’t consider Windows 10 as being turned into a tablet OS, but as receiving additional tablet OS features. Nothing that was there is being taken away. More choice is more better 😉
Otherwise your analysis is fair, but in reality I am not really bothered by it because my devices are not only a tablet or only a laptop. They have all the inputs and outputs available. I couldn’t operate my computer with just a mouse or just a keyboard or just a pen or just a touchscreen…I use whatever the best input is for a specific task. Most often that is the “traditional” combination of a keyboard and mouse but pen and touch are useful as well.
Still, it boggles the mind why the traditional desktop wasn’t retained in full (instead of having Control Panel drop you to Metro screens occasionally), and Metro being an addition.
It reeks of “we ‘ll make you like Metro either you actually like it or not”. Nice confidence in the product there (not).
@kurkosdr: Which control panel applets are you talking about that drop you to Metro screens? The only reason I could think of would be for new functionality to avoid duplicating code but I cannot think of any such example.
The other way is unfortunately way too common. Where the Metro screens aren’t all there yet and you get dropped back to control panel. (Like Regional settings, Display Settings, Mouse and keyboard, etc)
The problem with Windows is that Microsoft tried all the right things in all the wrong ways.
1. Touch:
Touch is great, Windows tablet mode sucks Part 1: There are so many UI elements that don’t work and could have been solved with some form of magnification as a stop gap. Microsoft could provide developers with API wrappers that allow them to more easily port their older programs to newer touch based interfaces. I’m not saying the wrappers are a solution, but take a text editor like Notepad++ which is reliant on old Windows APIs being ported in stages to a newer functionally adjacent API with another legacy API still in place for the desktop. At some point Microsoft developer and program developers can reach to a point where you can have most of the software being developed with wrappers that look like old API but target the new environment for most but not all of their OS/program interfacing which would significantly boost app development for touch based Windows.
But as I said, Windows tablet mode sucks part 2: The response time and accuracy of Windows tablets leave a lot to be desired. They were ground breaking when they first came out but every touch screen on a phone is miles ahead of Windows devices. Not only is the touch sensing in the screen not great, the OS also doesn’t respond well to being used in touch mode. The equivalent task using a keyboard and mouse is less jittery and more responsive even for switching programs.
2. App stores:
I love/hate app stores. I love the ability to have everything updated through a central updating mechanism instead of me having to keep each app I use updated. I love having an integrated paying mechanism instead of having to re-enter my payment info and hand over my potentially exploitable financial information to every entity that I want to download their paid stuff. I hate that app stores are a gimmick that platforms use for nothing more than monetary exploitation. Apps that are bigger than a certain size have to be hosted outside of the store on a separate server and developers have to fork out a percentage of their revenue for access. App stores are no more than artificial toll gates that in the case of iOS and Android block you from installing apps from outside to make themselves the only entry point for users. Microsoft doing the same on Windows is like a step down where the step is the height of a sky scraper, blocking the internet after having access to the world. App stores should be services provided to developers just like a hosting service facilitates a website to exist online and store payment mechanism is a solved problem since PayPal. The problem is that Apple showed the world that being greedy and controlling can be profitable so the whole world of platforms dropped their jaws to the ground and haven’t picked them up yet. It’s clear that Apple influences the app store arena by seeing how in a few weeks the Google Play Store shifted to 15% revenue cut for subscriptions older than one year just because Apple announced it, even though Apple hadn’t implemented it at that time. Apple should not be sought after when it comes to innovation because Apple has a different ecosystem play that can’t be replicated without having to deal with rough edges from shoehorning whatever Apple did onto another platform. Microsoft should have figured that out since they can’t get their xCloud service running on iOS because of Apple’s rules. Rules that break developers will eventually break the platform because Karma’s a biiii.
3. Modern apps:
I want modern apps. They have less ties to older APIs and should therefore have less baggage and performance burdens on the underlying system, except that their performance and capabilities where inexplicably worse. That part baffles me. How did performance regress with a supposedly modern and lighter system? Also, why are modern apps so restricted to the point of sometimes being useless? I think I know why to this one. It’s monetization and store rules. Don’t copy Apple, they suck, ask developers (or just ask the xCloud team).
4. Windows has to fragment:
You can’t have a single OS that works in different operating modes at the same time. Desktop and mobile environments restrict apps in different ways, even if you ignore their legacy/modern architectures. On a desktop you have a lot of power with a keyboard and mouse but a lot less touch capability. This allows foreground and background tasks to operate without much concern over processing time and power usage while providing an interface that requires a keyboard for input and a pointing device for manipulation. Touch first interfaces are usually power constrained and have to provide interfaces that work with the human condition called “fingers” rather than pointers with single pixel precision. You can try to bridge the gap but there’s a gap for a reason. Even if many underlying technical aspects of OS architecture are resolved, there will always be new ones that arise with time. Having said that, I do use a keyboard with my phone when I can, but a mouse is mostly useless and probably overkill. It isn’t lost on me that Apple is coming out with a new OS that tries to bridge their desktop and mobile OSes but that should only be applied using the principle: Having similarity is different from having identical systems. I for one was enthralled by the Surface Neo primarily because of the new OS that Microsoft was touting. This way I can have my desktop on my desk and another OS when I’m not in an ergonomically engineered environment.
5. Familiarity:
I don’t want to learn a new way of driving just because a new way can be made. I don’t want my fridge to have new operating requirements just because it’s a newer model. I don’t want to have a coach that allows me to sit in one way but not another way or not let me sleep on it because of some arbitrary design decision by it’s makers. Which circles back to the previous point of Windows fragmenting as a solution. Classic Windows can coexist with other versions of it. Familiarity can be preserved while another Windows experience is explored through daily users trying other forms of computing.
That’s my take.