Want to know the facepalm-worthy reason for MS naming the next OS Windows 10 and not Windows 9?

Recommended Videos

RA92

New member
Jan 1, 2011
3,079
0
0
Check out these codes.


http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7u40-b43/sun/tools/attach/WindowsAttachProvider.java#39

https://searchcode.com/?q=if%28version%2Cstartswith%28%22windows+9%22

See something odd common to all those code?


...

if (os.startsWith("Windows 9") || os.equals("Windows Me")) {

throw new RuntimeException(

...


Basically, it's because of old software which assumes any OS named Windows 9 equates Windows ME, throwing a runtime exception and refusing to run. And MS, for whom backward compatibility has always been a paramount (for instance, here is a list of 6500+ old badly written software [http://www.testtrack4.com/cracked/appcompatlist.txt] Windows has exception handlings for so that your PC doesn't crash when it tries to run them), has decided to skip it altogether.

... pretty sensible, actually.
 

Remus

Reprogrammed Spambot
Nov 24, 2012
1,698
0
0
And here I thought it was because MS wanted to break the curse of even-numbered Windows versions. Huh.
 

Redingold

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Mar 28, 2009
1,641
0
0
Why not just call it something that is neither 9 nor 10? They don't actually need to number their OSs sequentially. Just give it a name that is not a number, like XP and Vista.
 

lechat

New member
Dec 5, 2012
1,377
0
0
why would you write code that says if "version" = 9?
that displays a monumental level of poor forethought
 

Mezahmay

New member
Dec 11, 2013
517
0
0
I guess it's unreasonable for MS to just pay their staff to clean up an entire operating system of the Windows 9 exceptions, but doing so still calls into question why the hell they were included in the first place.
 

Seracen

New member
Sep 20, 2009
645
0
0
Mezahmay said:
I guess it's unreasonable for MS to just pay their staff to clean up an entire operating system of the Windows 9 exceptions, but doing so still calls into question why the hell they were included in the first place.
This allows them to pimp out the new version, b/c the older versions would start acting wonky. An acquaintance who once who worked for MS said he was effectively told to introduce obsolescence and bugs into the code, so consumers would be forced to update/upgrade (I think the exact situation was: QA and QC told him not to worry/code as messy as he wanted, as it would either be fixed in patches or in future versions).
 

DoPo

"You're not cleared for that."
Jan 30, 2012
8,665
0
0
lechat said:
why would you write code that says if "version" = 9?
that displays a monumental level of poor forethought
Exactly like what a lot of Microsoft are displaying. Hence the need for that code. You can't fight stupidity with cleverness...well, you could, but not always - stupid code is most often fixed with stupid code. And the stupid code originates at Microsoft.

Anecdotal example: I worked at a web dev company and we used a third party JavaScript WYSIWYG plugin. It wasn't great, but it worked, however, when IE9 was released, it just refused to work there. Why? Well, IE has historically been an absolute shit and to even get the plugin to work with it, the devs had a number of places where they had something along the lines of

if (isIE){
// use broken code that only works on IE
} else {
// use proper code
}
IE9 came in and decided to adhere to ECMAScript standards...so when being fed the broken code it broke. Both expectedly and unexpectedly.

Also, a different example, related to Windows 10-like renaming: IE11 no longer identifies itself as IE. Seriously [http://msdn.microsoft.com/en-us/library/ie/bg182625%28v=vs.110%29.aspx#uaString].

User Agent string said:
Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
These changes help prevent IE11 from being (incorrectly) identified as an earlier version.
Translation: they broke stuff before and when they decided to behave, they broke stuff again.

Some more stuff said:
As a result, IE11 adds, changes, and removes a number of legacy features by default:

[li]The navigator.appName property now returns "Netscape" to reflect the HTML5 standard and to match behavior of other browsers.[/li]
[li]The navigator.product property now returns "Gecko" in order to reflect the HTML5 standard and to match behavior of other browsers.[/li]
[li]The XDomainRequest object is replaced by CORS for XMLHttpRequest.[/li]

In addition, several legacy API features have been removed in favor of features specified by modern standards:

[list of features]
 

DoPo

"You're not cleared for that."
Jan 30, 2012
8,665
0
0
Mezahmay said:
I guess it's unreasonable for MS to just pay their staff to clean up an entire operating system of the Windows 9 exceptions
Erm...how are Microsoft supposed to change stuff in the sun.tools.attach package in Java? Yes, it's "unreasonable" in the sense of "impossible".

Mezahmay said:
but doing so still calls into question why the hell they were included in the first place.
They did not.
 

Flatfrog

New member
Dec 29, 2010
885
0
0
DoPo said:
User Agent string said:
Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
These changes help prevent IE11 from being (incorrectly) identified as an earlier version.
Translation: they broke stuff before and when they decided to behave, they broke stuff again.

Some more stuff said:
As a result, IE11 adds, changes, and removes a number of legacy features by default:

[li]The navigator.appName property now returns "Netscape" to reflect the HTML5 standard and to match behavior of other browsers.[/li]
[li]The navigator.product property now returns "Gecko" in order to reflect the HTML5 standard and to match behavior of other browsers.[/li]
[li]The XDomainRequest object is replaced by CORS for XMLHttpRequest.[/li]

In addition, several legacy API features have been removed in favor of features specified by modern standards:

[list of features]
That is hilarious. So IE9 tells JavaScript it is actually Netscape so that old code doesn't think it has to run IE-defeating code. Wow, that is such a messed-up system. I can't help thinking it would be better to say it's called 'InEx9' or something else, because all that code works on an 'IE or otherwise' model. Otherwise how are we supposed to distinguish them if we still need to? What a mess!

Still, it does once again remind us of a fact that bears repeating: IE is pretty good these days. It's my current favourite browser.
 

Irick

New member
Apr 18, 2012
225
0
0
lechat said:
why would you write code that says if "version" = 9?
that displays a monumental level of poor forethought
Well, actually, because... ME was the 9th windows version.
Who knew that Microsoft would randomly change their naming scheme like six times?
 

Zombie_Fish

Opiner of Mottos
Mar 20, 2009
4,584
0
0
A friend of mine posted on Facebook yesterday. I was sceptical then (it was just a screenshot of a post from someone claiming to work at Microsoft), but this makes it somewhat more believable.

Mezahmay said:
I guess it's unreasonable for MS to just pay their staff to clean up an entire operating system of the Windows 9 exceptions, but doing so still calls into question why the hell they were included in the first place.
[user]DoPo[/user] has already pointed out that this isn't Microsoft's codebase, but another thing I would like to add is that Windows itself has a way of getting the OS version with the .NET API [http://msdn.microsoft.com/en-us/library/system.environment.osversion%28v=vs.110%29.aspx] that returns an OperatingSystem object which can then be used to compare OS versions. The issue is that the code linked in the OP is written in Java, which doesn't do this and instead just returns a string.
 

Mezahmay

New member
Dec 11, 2013
517
0
0
DoPo said:
They did not.
Zombie_Fish said:
[user]DoPo[/user] has already pointed out that this isn't Microsoft's codebase, but another thing I would like to add is that Windows itself has a way of getting the OS version with the .NET API [http://msdn.microsoft.com/en-us/library/system.environment.osversion%28v=vs.110%29.aspx] that returns an OperatingSystem object which can then be used to compare OS versions. The issue is that the code linked in the OP is written in Java, which doesn't do this and instead just returns a string.
Ooh, so the case is more Microsoft is just making exceptions to keep other software compatible with their OS? I didn't arrive to that conclusion based on the topic post and comments at the time. Thank you for pointing that out.