11 ms·
I would be curious to see the effects of completely open-sourcing Windows. Businesses would continue to use it, because it's Microsoft and they want enterprise
by Nelkins 12y ago
I would be curious to see the effects of completely open-sourcing Windows. Businesses would continue to use it, because it's Microsoft and they want enterprise support. I think it would get even more love than it already does from the development community. Piracy of Windows is already rampant, so they're not really in a worse position from that (plus I think that most people who can pay for Windows do so already). Foreign governments who are concerned about NSA backdoors would have their fears allayed. Is there any way it could seriously damage their business model?
- otterley 12y agoAs a practical matter, I doubt that they can. There's probably quite a lot of third-party code intertwined with Windows itself (especially in the device drivers that ship with it) that's subject to strict redistribution and publication restrictions.
- bigdubs 12y agoDevice drivers can be divorced from the core os.
- mackwic 12y agoThey are divorced from the core os. Windows is a microkernel and the drivers run in userland since vista. It's a completely different matters.
- tormeh 12y agoIt's not really a microkernel, but a hybrid. Isn't the drivers the only thing that runs in userland?
- mackwic 12y agoI don't think so, the windows manager is also in userland. It's not the most documented thing, and it depends on what are "the things" of windows, there are many. :)
- vardump 12y agoAs someone who has done Windows driver development, I can assure you drivers run at ring0, kernel context. Not in userland (except maybe some USB device and printer drivers). At least this was still true in Windows 8.1.
- deleted 12y ago[deleted]
- Someone 12y agoSome Windows drivers run in user space, but many run in kernel space (https://msdn.microsoft.com/en-us/library/windows/hardware/ff557565(v=vs.85).aspx https://msdn.microsoft.com/en-us/library/windows/hardware/ff... shows Windows has kernel drivers; the some/many distinction is my guesstimate, based on the fact that anything that needs to process data fast benefits from being a kernel driver)
- lobster_johnson 12y agoThe NT kernel is not a microkernel. It all runs in ring 0, including device drivers: I/O, graphics, HID, file systems, etc. It's modular, but there is no protection between the various parts, which all run in a single kernel process, with a single address space. The NT kernel is sometimes called a _hybrid_ microkernel, but this refers only to the fact that the internal modules are logically decoupled (with message passing between them, for example). Also, graphics actually used to run in userland until they moved it into the kernel for Windows 2000.
- tanzam75 12y agoSince NT 6.0 (Vista), graphics drivers run primarily in user mode. There is still a kernel mode component, the miniport driver, but it is kept small to reduce the likelihood of crashes. There are some other drivers that also run in user mode, but graphics drivers were the really big change. Most bluescreens in Windows XP were caused by graphics drivers. Since Vista, Windows has been able to recover from a failure in the graphics driver. The screen blinks for a second, and then a balloon notification comes up, saying that the graphics driver has been restarted.
- useerup 12y agoNT is a hybrid kernel for sure. In a monolithic kernel everything would be running in ring 0. NT is a hybrid kernel because some drivers run in ring 0, others (typically peripheral drivers) run outside ring 0. Some drivers (specifically graphics card drivers) run split in kernel mode and user mode: A small part runs in kernel mode, while the complex part runs in user mode. While you are correct that the graphics driver was moved to kernel mode for Windows 2000/XP, it was actually moved half-way back with Vista. This was in fact the reason why graphics drivers sucked in the beginning for Vista: MS only gave the vendors 4 months since the last change to the graphics driver model before Vista was released.
- lobster_johnson 12y agoIt's still running pretty much everything in ring 0 that a traditional monolithic kernel would. All the "complex parts" run in kernel mode. The new WDDM driver model runs a user-mode driver, but it's still backed by a set of kernel-mode drivers [1], including the "display miniport" driver. As kernels go, it's pretty monolithic. What makes it more like a microkernel is that many of the internal APIs use a message-passing model rather than direct calls. [1] https://msdn.microsoft.com/en-us/library/windows/hardware/ff570589(v=vs.85).aspx https://msdn.microsoft.com/en-us/library/windows/hardware/ff...
- otterley 12y agoPerhaps so, but an OS lacking device drivers is not particularly useful.
- jstanek 12y agoPotentially Microsoft could use their significant market power to convince other companies to open source their code.
- jiggy2011 12y agoLarge enterprises would continue to pay for support, individuals and small business might not. It could cut license sales in half.
- maxlybbert 12y agoSometimes I forget that they did the Shared Source release several years ago. However, once in a while I see it mentioned in an academic paper. Point being, the most common reason companies give for not releasing source for a project is that they have code from contractors that they aren't able to release. That shouldn't be the case with Windows.
- thanksgiving 12y ago> Point being, the most common reason companies give for not releasing source for a project is that they have code from contractors that they aren't able to release. That shouldn't be the case with Windows. There are probably some parts that won't make it like Pinball [old new thing] but it shouldn't be significant at all. >> Hey everybody asking that the source code be released: The source code was licensed from another company. If you want the source code, you have to go ask them. [old new thing] blogs.msdn.com/b/oldnewthing/archive/2012/12/18/10378851.aspx
- oDot 12y agoAren't the forks the real threat for Microsoft in open sourcing Windows?
- brudgers 12y agoWho is going to support 20 million lines of code other than Microsoft employees as amateurs bungle their way through thirty years of patches for backward compatibility wrapped around stupid and clever things OEM's and third party developers did to get their code to work? It's not like Linux because there isn't a team of experienced volunteers already working on the code base and the Windows code base contains a lot functionality for business reasons that Torvalds has been in a position to not just say "no" but to add "and go fuck yourself."
- njharman 12y agoNo one "supports" it. People will improve the bits that bother them. In the aggregate, these activities amount to more than you could ever pay to have done. The beauty of open source model is it gives the desperately motivated the means to fix their problems in a way that benefits everyone.
- brudgers 12y agoIt's all in isolation unless the trunk takes pull requests. Forking doesn't change that either. There's still got to be someone evaluating changes in light of their impact on 20 million lines of code.
- YorkianTones 12y ago^This. This is the hard part. Interdependencies and compat.
- pekk 12y agoThe answer is that nobody will support it as-is... they would just use the source to make or improve other things. Because this is what would be in the interests of the users. Even if it meant Windows got buried. But this is strictly imaginary because I doubt that 20 million lines of code are all under the unilateral control of Microsoft.
- brudgers 12y ago
- aninteger 12y agoIt's certainly not "official" but we already have Wine and Mono. I understand that they don't promise write once run anywhere but the support is pretty good. For awhile it was one of the only ways to get Netflix working on Linux based platforms.
- otakucode 12y ago.Net actually promises a bit more 'write once run anywhere' than Java. Java stuff is not, and does not seek to be, binary compatible across platforms. .Net is. I'd really love to see, once .Net is all open, browser makers to throw the CLR into the browser. Overnight it would release us from the tyranny of js and let us use basically any language we ever want.
- rodgerd 12y ago> Piracy of Windows is already rampant, so they're not really in a worse position from that (plus I think that most people who can pay for Windows do so already). I seriously doubt piracy of Windows is a huge concern in most markets; MS will still be making a lot of money from Dell, HP, Lenovo, et al selling their stuff.
- deleted 12y ago[deleted]
- WorldWideWayne 12y agoI don't see why everything needs to be open source. People who simply don't like Microsoft will not use it just because it's open. Quite the opposite I think - they'd probably immediately fork it and provide an alternate download in order to hurt Microsoft. Are foreign governments a big market that Microsoft has lost a lot of customers from? I don't think so. The vast majority of the potential market for Windows is already running Windows, so I don't see what they'd really have to gain. The small but loud minority of open-source zealots won't be happy until every single Microsoft product is open.
- mahyarm 12y agoWhen your debugging code, being able to see all of the code in the stack trace is valuable alone.
- brudgers 12y agoGood debugging tools that filter out the irrelevant are perhaps better. Odds are that any time you break out the debugger the fix is in your code not Windows, Linux, the JVM etc. That's not to say those things don't have bugs, only that they are orders if magnitude more debugged than most code under development.
- scrollaway 12y agoYou are so completely wrong. Follow the Wine project for a few weeks/months to get familiar with just how buggy, inconsistent and inconceivably obscure all of Windows' APIs are. If Windows was good and near-bug-free, Wine would have long been completed. Windows is not just its kernel.
- sourc3 12y agoNadella has worked on the cloud computing at Microsoft. Microsoft is betting big time on the cloud. Although MS never publicly admits, the OS business for the end user is slowly fading away with the tablets, smart phones taking over and Browser becoming the new OS. You can see this by looking at their Office 365 strategy (iOS, Android release, online version push). Making Windows 10 free to 8 users, removing licensing fees for windows phones, making Visual Studio available for free. Making the ASP.NET vNext to run on Linux. Instead, MS sees the growth in Azure. Whether they use Linux or Windows servers, MS can make money off of the enterprise/startup segment. Whether or not it is a sustainable strategy in the long run, we will see. But in the short term, at least for the "consumer" market, MS is giving up on Windows and it is moving its focus to Azure and the software that runs on top of Azure (Office, Sharepoint, Dev Services, XBox, Bing, etc). The marketing strategy behind this is also interesting. Things are still labeled "Windows" to give the illusion that the "Windows" the end user gets on their new laptop is somehow "related" to the Windows in the cloud (Azure). Interesting strategy to make the "Windows" brand live for a little more at least..
- pmontra 12y agoI'm not sure Windows (and transitively Microsoft) is a positive brand and its continuity an illusion worth keeping. It reminds me of antivirus, slow boots, periodic reinstalls to make XP quick again, BSOD and many other things that drove me away from it years ago. Anyway, if one never tried anything else not to leave home could be reassuring and it seems that Win7 wasn't so bad anymore (but I still get calls from friends with infested Windows machines).
- YorkianTones 12y agoFor one, it's big. When I was working on part of the UIPlat team for Windows, my private enlistment just included build infra and maybe 5% of the sources and associated tools/tests and it still took up 60+ GB (100+ GB with binaries). I don't think you can just throw it on Github. Two, compatibility. Even if you fix a bug, it usually needs to be versioned in some way to avoid breaking apps that rely on the bug. OS code, once shipped, becomes feature. Fixes require a fair amount of due diligence besides just identifying the problem and the correct fix. The historical context of how the issue was introduced and how it has migrated to other branches needs to be understood by grepping through the source history graph. Suites of build verification tests, regression tests, integration tests, and unit tests need to pass. Although Microsoft has extensive infrastructure for buddy builds and integration staging, external parties won't. So at best they could suggest a fix to Microsoft to complete the due diligence on. But usually suggesting a fix is easy and vetting it is the grueling part. Three, private forks of Windows seem like maintenance and compatibility nightmares. Fragmentation would likely disrupt windows update's ability to apply patches and keep the system secure. Windows' ability to run across so many devices is kept sane by keeping a relatively small, consistent trusted computing base. Merging together forked Windows repos is a disaster. The XBOX team forked Windows 8 for a few months and made some tweaks to get XBOX One out the door, and then some folks had the nasty job of having to try and consolidate the codebases against moving targets. No one has enough context or time to perform these kinds of merges individually, nor would ever volunteer to, so they need to be massive coordinated efforts between teams. Four, variants. You're not going to want to deal with all the possible permutations of Windows SKUs, processor architectures (ARM/X86/AMD64/IA64), build flavors, etc. Five, it's a mess. There's plenty of archaic cruft, possible trade secrets, and lurking vulnerabilities. Open sourcing everything would be like opening Pandora's Box. It's too risky. Curating out some portion of this to open-source would be a massive undertaking and ongoing maintenance cost. I think it makes more sense to take more mature modules, like .NET core or Roslyn, and open source them as separate entities. Modules are more reusable, and community-driven changes are easier to curate when they can be isolated. Windows has some components which it probably makes sense to open-source, but the entity as a whole is too unwieldy in its current form. .NET is designed more modularly. TL;DR - Windows is an unwieldy behemoth and would be difficult to open source.
- 12y ago