De-Ballmerization and Microsoft is oozing delicious developer love. What the hell happened. It's like Skeletor became He-Mans best buddy all of a sudden and started helping everyone.
I'm thrilled. The MS tooling is really, really good and the only thing stopping me from committing to the stack fully has been it's lack of open sourceness (vendor lock in is still feasible but getting less of an issue).
Edit: Pardon the fanboyism but I've tried a set of feasible Non-MS language options for my particular domain and F# in Visual Studio beats for me, my particular use case and coding style Scala, Clojure, Ruby, Python, Haskell, "browser technologies"...
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?
Who 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."
Sometimes 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.
> 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.
Nadella 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..
It'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.
As 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.
For 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.
I 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.
I wonder how this strategy is going to affect the bottom line of Microsoft. People writing with CLR languages are deploying web apps mainly (or only) to Windows now. They're going to have an option to deploy to Linux soon. This means less revenues from OS and DB licenses, so it looks bad. Do they expect a large number of people leaving Java, Node, Python, Ruby and picking up C# because of the Linux deploys? Those people would probably have to buy Windows and VisualStudio licenses to code in C# in a VM or just ditch Macs for PCs. More desktop licenses could make up for lost server ones but if I googled well a server costs more than a desktop. Or maybe they're playing a longer game: open source as much as they can, hope some network effect builds up, find out how to profit from it. In the medium term they might be losing money tough. Am I missing something obvious?
I am really interested to see what happens once ASP.Net is running on Linux. C# and Visual Studio are fantastic, mature tools and I think a lot of developers would enjoy using them whereas they might be hesitant at the moment due to OS lock-in on the code they are writing.
ASP.NET already runs on .NET with Mono, but not always the latest versions of things. Having it all open source could bridge that compatibility gap and let us fully enjoy the ecosystem, instead of having to be careful with taking dependencies all over.
This post is a few hours old, but I just want to put it out there: We're hiring OPEN SOURCE ENGINEERS. I'm one and our job is awesome[1]. Please get in touch with me if you're interested[2].
Since I wrote a string hash code function recently[1], I was interested to see what they use. Like many, they're using[2] the venerable djb hash. That sent me down a rabbit hole where I discovered that Bernstein was 19 when he wrote about it. Wow.
The string there is in multiple areas of that class, and the same behavior is displayed for all of them. Wouldn't logic suggest everything such as above would be moved in to a constant repository for clarity and also less potential human error for future additions?
It's sort of surprising to me how much huger the .NET version is, in terms of code. Virtually all the lines in the Java version are API docs. The .NET version doesn't seem to have them (they must be elsewhere?) but it does have a lot more code and that code is much lower level.
Not sure what that means, if anything, but it's interesting.
That does answer an unanswered question I had on SO about string hashing. If strings are immutable, why isn't the hash code memoized? Seems like it would make HashSet/Dictionary lookups using string keys much faster.
Today, .NET Core builds and runs on Windows. We will be adding Linux and Mac implementations of platform-specific components over the next few months. We already have some Linux-specific code in .NET Core, but we’re really just getting started on our ports. We wanted to open up the code first, so that we could all enjoy the cross-platform journey from the outset.
Think about all the things that Wall Street has said Microsoft should do over the past decade. None of them was "more open source."
All the groundwork was done by Ballmer. It had to be because now that he and Gates have reduced their ownership stake and are no longer the two largest shareholders, Wall Street's flavor of the month ideas cannot be ignored.
The 'new' Microsoft has been building at least since they hired Hanselman back around 2008. He was talking then on his podcast about taking the job to advocate open source. Even then Microsoft worked with the Mono team. They moved Office to an open file format.
It takes a long time to change an aircraft carrier's course. This is Ballmer's strategic vision. His passion for developers even made it onto Youtube.
I'm not sure those two statements are related. I don't see how having .NET open sourced is directly effecting Microsoft's bottom line. I like getting free stuff too, but that doesn't man it is necessarily profitable for the company.
I'm familiar with the philosophical differences between Free Software and Open Source.
But in this context you seem to imply that there are practical differences i.e: Not all Open Source licences are considered Free Software in the practical sense.
If that is the case, could you provide an example?
Noteworthy from the source: Microsoft does NOT use (unmergable) SLN-files for their projects, but instead scripts-msbuild invocations against specific projects:
I guess this explains why they saw no need to fix the somewhat broken SLN file-format in the first place, but actually did something about project-files. They don't share their customers pain on this point.
So I'm still a little fuzzy as to what this means. Is this basically the same thing that Mono is trying to provide? Would it now be possible to have the F# front end link to the CoreCLR backend on Linux?
This has all been set in motion during Ballmer.. Not from Ballmer himselve, but from inside out ( a lot of good employees there).
Now one of the guys pushing it, is CEO of Microsoft and we are finally seeing a (real) difference.. I joined the MS community a long time ago and this is (again) a heart warming addition!
Good job Microsoft, you're a bit late to the party. But no doubt, the ROI will show sooner or later! ;-)
So I am not sure what this means to the end user but as another reader pointed out, Google and other companies in future could use .Net/C# as part of their mobile architecture. You could host .net sites on OSX or Linux, test them on a Mac. What else?
[+] [-] fsloth|11 years ago|reply
I'm thrilled. The MS tooling is really, really good and the only thing stopping me from committing to the stack fully has been it's lack of open sourceness (vendor lock in is still feasible but getting less of an issue).
Edit: Pardon the fanboyism but I've tried a set of feasible Non-MS language options for my particular domain and F# in Visual Studio beats for me, my particular use case and coding style Scala, Clojure, Ruby, Python, Haskell, "browser technologies"...
[+] [-] Nelkins|11 years ago|reply
[+] [-] brudgers|11 years ago|reply
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."
[+] [-] maxlybbert|11 years ago|reply
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.
[+] [-] rodgerd|11 years ago|reply
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.
[+] [-] jiggy2011|11 years ago|reply
[+] [-] sourc3|11 years ago|reply
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..
[+] [-] aninteger|11 years ago|reply
[+] [-] oDot|11 years ago|reply
[+] [-] otterley|11 years ago|reply
[+] [-] unknown|11 years ago|reply
[deleted]
[+] [-] YorkianTones|11 years ago|reply
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.
[+] [-] WorldWideWayne|11 years ago|reply
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.
[+] [-] pmontra|11 years ago|reply
[+] [-] stevecalifornia|11 years ago|reply
[+] [-] MichaelGG|11 years ago|reply
[+] [-] felixrieseberg|11 years ago|reply
[1]: http://instagram.com/p/yqQe0bK3Bq/ [2]: [email protected]
[+] [-] benreic|11 years ago|reply
https://github.com/dotnet/coreclr/blob/master/src/mscorlib/s...
[+] [-] munificent|11 years ago|reply
[1]: https://github.com/munificent/wren/blob/master/src/wren_valu...
[2]: https://github.com/dotnet/coreclr/blob/master/src/mscorlib/s...
[+] [-] simfoo|11 years ago|reply
// We want to ensure we can change our hash function daily.
// This is perfectly fine as long as you don't persist the
// value from GetHashCode to disk or count on String A
// hashing before string B. Those are bugs in your code.
hash1 ^= ThisAssembly.DailyBuildNumber;
I'd love to hear the story behind this one :D
[+] [-] Aleman360|11 years ago|reply
http://referencesource.microsoft.com/#mscorlib/system/string...
[+] [-] sekasi|11 years ago|reply
IE: Environment.GetResourceString("ArgumentOutOfRange_Index")
The string there is in multiple areas of that class, and the same behavior is displayed for all of them. Wouldn't logic suggest everything such as above would be moved in to a constant repository for clarity and also less potential human error for future additions?
[+] [-] mike_hearn|11 years ago|reply
http://grepcode.com/file/repository.grepcode.com/java/root/j...
It's sort of surprising to me how much huger the .NET version is, in terms of code. Virtually all the lines in the Java version are API docs. The .NET version doesn't seem to have them (they must be elsewhere?) but it does have a lot more code and that code is much lower level.
Not sure what that means, if anything, but it's interesting.
[+] [-] DoggettCK|11 years ago|reply
[+] [-] sz4kerto|11 years ago|reply
https://github.com/dotnet/coreclr/commit/90ef39bc3c9886e7967...
"This change fixes a potential problem in unwinding on Linux"
[+] [-] Aleman360|11 years ago|reply
Today, .NET Core builds and runs on Windows. We will be adding Linux and Mac implementations of platform-specific components over the next few months. We already have some Linux-specific code in .NET Core, but we’re really just getting started on our ports. We wanted to open up the code first, so that we could all enjoy the cross-platform journey from the outset.
[+] [-] wtetzner|11 years ago|reply
"You can 'watch' the repo to see Linux and Mac support being added over the next few months."
[+] [-] dkarapetyan|11 years ago|reply
[+] [-] brudgers|11 years ago|reply
All the groundwork was done by Ballmer. It had to be because now that he and Gates have reduced their ownership stake and are no longer the two largest shareholders, Wall Street's flavor of the month ideas cannot be ignored.
The 'new' Microsoft has been building at least since they hired Hanselman back around 2008. He was talking then on his podcast about taking the job to advocate open source. Even then Microsoft worked with the Mono team. They moved Office to an open file format.
It takes a long time to change an aircraft carrier's course. This is Ballmer's strategic vision. His passion for developers even made it onto Youtube.
[+] [-] unfamiliar|11 years ago|reply
[+] [-] phkahler|11 years ago|reply
[+] [-] adl|11 years ago|reply
But in this context you seem to imply that there are practical differences i.e: Not all Open Source licences are considered Free Software in the practical sense.
If that is the case, could you provide an example?
[+] [-] tree_of_item|11 years ago|reply
[+] [-] iwwr|11 years ago|reply
https://en.wikipedia.org/wiki/Free_software#Definition
[+] [-] josteink|11 years ago|reply
https://github.com/dotnet/coreclr/blob/master/build.cmd#L140
https://github.com/dotnet/coreclr/blob/master/build.cmd#L159
I guess this explains why they saw no need to fix the somewhat broken SLN file-format in the first place, but actually did something about project-files. They don't share their customers pain on this point.
[+] [-] pmelendez|11 years ago|reply
[+] [-] j_baker|11 years ago|reply
[+] [-] simcop2387|11 years ago|reply
[1] http://www.theregister.co.uk/2015/01/15/codeplex_repository_...
[+] [-] hbbio|11 years ago|reply
[+] [-] Touche|11 years ago|reply
[+] [-] jongalloway2|11 years ago|reply
[+] [-] 4ad|11 years ago|reply
[+] [-] ixtli|11 years ago|reply
[+] [-] saosebastiao|11 years ago|reply
[+] [-] yellowapple|11 years ago|reply
[+] [-] NicoJuicy|11 years ago|reply
Now one of the guys pushing it, is CEO of Microsoft and we are finally seeing a (real) difference.. I joined the MS community a long time ago and this is (again) a heart warming addition!
Good job Microsoft, you're a bit late to the party. But no doubt, the ROI will show sooner or later! ;-)
[+] [-] josh2600|11 years ago|reply
Note: You'll need a terminal account to boot it, but it only takes 10 seconds to come online once you do that.
[+] [-] unknown|11 years ago|reply
[deleted]
[+] [-] cm2187|11 years ago|reply
[+] [-] Halienja|11 years ago|reply