Report: Microsoft Skipped Windows 9 Due to Legacy Programming Conflicts

FalloutJack

Bah weep grah nah neep ninny bom
Nov 20, 2008
15,489
0
0
It makes sense. I understand how a simple call-to code can screw up everything with the wrong numbers. Thing is, I'm still worried the odd-and-even curse will hit us with another bad OS.
 

SamTheNewb

New member
Apr 16, 2013
53
0
0
Desworks said:
Adam Jensen said:
oldtaku said:
Highly unlikey. Even if true, this kind of technical wibbling would never make it to the branding people.

But the nail in the coffin... The 'version' of Windows 9 would not be 'Windows 9'. It would be Version 6.4.

Vista: Version 6.0
Win7: Version 6.1
Win8: Version 6.2
Win8.1: Version 6.3
Win9: Version 6.4

This is because they're all variations on the Vista core (Win7 had huge fixes and speed and memory improvements over Vista core, but was still Vista core).

Edit: I see Strazdas and I were typing at the same time... well, he's right.
Exactly. Programs don't care about how you call Windows. You can call it anything you like. Programs will interpret only the signature in the code. And Microsoft could code the name however they wanted. They could call it Windows Lizard Jesus and still give it an official Windows 9 label.
Sadly, you are both underestimating the power of lazy coding. The functions that are causing this issue don't look for the windows Major and Minor versions, they instead parse the OSname. And located here is a list of open source example of this form of lazy code, so you can see just how widespread it is: https://searchcode.com/?q=if%28version%2Cstartswith%28%22windows%209%22%29&p=0

And that's just the public example of this. Depressing, right?

In fact, Microsoft's weird version numbering is also due to them having to adjust their version numbers to accommodate bad code. That's the reason that every release since Vista has been 6.x. In fact, as you can see here [http://msdn.microsoft.com/en-us/library/windows/desktop/ms724439.aspx], MS are considering retiring the whole GetVersion function, as they can't trust developers to write correct code.

There's a whole thread discussing this over at /r/programming [http://www.reddit.com/r/programming/comments/2i14ny/if_osnamestartswithwindows_9/] so stop by if you want to read more.
I still don't get it. The fix, would simply to have this function report a string that is inconsistent with the products actual name, but good enough to legacy ensure programs work. They can then deprecate this function as a legacy only function, then introduce another function that gives the real version name. Old programs that use this string to log or display the OS name will display a weird name to the user, but there are worse things out there.

Hell, they could just keep the function and make the Windows 9 behavior for this function to report it's version name as "Microsoft Windows 9" or "MS Windows 9" As that will be an accurate and understandable text name of the OS for when the text string is properly used for logging or display purposes, and it won't conflict with the bad code. If a programmer really doesn't want the os name string to have MS or microsoft in it, they can look for it and strip it themselves.

I think, if anything, the coders at MS mentioned the problem, then MS marketing latched on to it instead of asking for a reasonable solution.

And... Well. I have always believed that MS rise to dominance is squarely based on their dedication to making things easy for programmers. If that means bending to shitty programming, that is what they have to do.
 

Spartan448

New member
Apr 2, 2011
539
0
0
DirgeNovak said:
Spartan448 said:
apparently, the forums don't like doing indents. Way to mess up my code, Escapist Forums.
Code:
You can
  do it
    like this
      (Click quote to see how)
Also your idea wouldn't work because those are legacy programs coded over a decade ago.
Yes I know that but what I'm saying is that my idea is a criminally simple solution and is what should have been done to begin with, instead of assuming that MS would never make another operating system whose name started with a 9.
 

Kieve

New member
Jan 4, 2011
128
0
0
Spartan448 said:
Yes I know that but what I'm saying is that my idea is a criminally simple solution and is what should have been done to begin with, instead of assuming that MS would never make another operating system whose name started with a 9.
"Should have been" is irrelevant. Consider your point made, but entirely moot in this context. :\
I mean... unless you have a time-machine or something and can go back and warn 90's-era developers not to use certain programming shortcuts.

I wonder how many current-gen applications have similar "forward-looking" issues, we won't see or hear about until a decade or two after the fact?
 

Spartan448

New member
Apr 2, 2011
539
0
0
Kieve said:
Spartan448 said:
Yes I know that but what I'm saying is that my idea is a criminally simple solution and is what should have been done to begin with, instead of assuming that MS would never make another operating system whose name started with a 9.
"Should have been" is irrelevant. Consider your point made, but entirely moot in this context. :\
I mean... unless you have a time-machine or something and can go back and warn 90's-era developers not to use certain programming shortcuts.

I wonder how many current-gen applications have similar "forward-looking" issues, we won't see or hear about until a decade or two after the fact?
I have a time machine, but unfortunately it only goes back to the 70's.
 

Aerotrain

New member
Sep 7, 2014
67
0
0
I'm not very tech savvy but this seems very unlikely to me. Even if it worked exactly as described, what's to stop them from marketing and stylizing it as Windows 9 but internally and in the code referring to it as "microsoftv9" or any other designation thus avoiding any confusion with older software? For several reasons, I don't buy it. Not that I think it matters much anyway, being called 10 is fine as long as it's good. I hope they aren't going to act clueless to the obvious "they skipped the good one" jokes though.
 

TechNoFear

New member
Mar 22, 2009
446
0
0
Spartan448 said:
WHY NOT JUST READ THE ENTIRE VERSION NUMBER YA LOONS. Seriously. It's not that hard.
LOL!

Your code contains an error and will attempt to read past the end of some stings (any string ending in a 9), possibly causing an access violationand crashing the app.
 

Strazdas

Robots will replace your job
May 28, 2011
8,407
0
0
TopazFusion said:
Strazdas said:
this is why on some old games you may get an error of "unrecognized NT version". programs only see NT versions since win 2000, 95 and 98 were exceptions. this problem described cannot happen.
Nah, you're wrong there.

2000 was NT5.0 , XP was built on that code base, which is why it became NT5.1

And 95/98 had internal OS versions too. 95 was 4.0 , and 98 was 4.1 , (and ME was 4.9)

http://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions
according to this: http://en.wikipedia.org/wiki/Windows_NT#Releases 4.0 was a server. but yeah the list is probably just missing the 95 and 98 and for some reason i though they werent there.


Imperioratorex Caprae said:
super-outdated software out of fear or sometimes (highly warranted though) frustration that their old software has no analog in today's tech
Its a thing. while i try to avoid outdated software i still got some scripts and addons running built a decade ago and thnakfully they still interact with modern programs correctly. not all of them. and there is no alternative. i couldnt live without my excel name manager for example as the "official" one is a disaster in comparison.

My advice to them was to invest in the best data entry employee they could hire and buy new software and set that person to hand enter each record from one device to the other, because there literally was no other solution.
not always possible. for example for accounting purposes this would actually be breaking the law due to ability to rewrite accounts that you have to store for years.
When it comes to accounting i see a massive trend of "this works, it worked for 10 years, why change it". this is also encouraged by almost all accounting software being outdated (even the updates are made for that outdated software instead of modernisation) and ones that arent arent really affordable to most companies.
because I didn't want my info on something that could be easily compromised.
Ironically, they arent easily compromised. for one, they are never connected to network, for two, they often run on such outdated builds that noone is targeting them anymore.



Kieve said:
"Should have been" is irrelevant. Consider your point made, but entirely moot in this context. :\
I mean... unless you have a time-machine or something and can go back and warn 90's-era developers not to use certain programming shortcuts.

I wonder how many current-gen applications have similar "forward-looking" issues, we won't see or hear about until a decade or two after the fact?
or....we could stop pretending like people are going to run this code on windows 10 without expecting problems.

or we could just internally name it Windows 09 or MS Windows 9 or something that will avoid this. you know, million other better solutions.

or we could just stop rewarding lazy coding and let them suffer their mistakes? or must MS account for decades of bad coders?
 

Spartan448

New member
Apr 2, 2011
539
0
0
TechNoFear said:
Spartan448 said:
WHY NOT JUST READ THE ENTIRE VERSION NUMBER YA LOONS. Seriously. It's not that hard.
LOL!

Your code contains an error and will attempt to read past the end of some stings (any string ending in a 9), possibly causing an access violationand crashing the app.
goddamn it ya know what I copied that from a lab I did that was in progress and it ended up having that same problem and I fix it in the lab basically right after I made the post and never updated the post.
 

TechNoFear

New member
Mar 22, 2009
446
0
0
Spartan448 said:
goddamn it ya know what I copied that from a lab I did that was in progress and it ended up having that same problem and I fix it in the lab basically right after I made the post and never updated the post.
Not as easy as it appears is it, especially when people pour over code you wrote a decade ago never thinking it would still be in use?

Least these days we are not as constrained by memory requirements / system performance and very few apps are written in unmanaged languages (ones without some form of strict typing, garbage collection, safe pointers, exception handling, etc).

BTW..
I always avoid referencing arrays by adding to an index / loop counter.

Much prefer to explicitly test starting at the last character and working towards the first (after checking for input errors).

Something like;
NOTE: we may increase performance by only calling the other function (in this case LEN()) once and storing the result.

Code:
int lastChar = LEN(st1)-1 //find the [b]index[/b] of the last character in the string 

//we are using language with 0 based arrays (ie not VB etc)

if(lastChar <= 0)//empty or only one character, so our code will break
 //return error in getting version
elsif(UPPER(st1[0])  W)
 //return error in version name format

//other validation as required

elsif(st1[lastChar] == 9)
 //windows 9
elsif(st1[lastChar - 1] == 9)
 if(st1[lastChar] == 5)
  //windows 95
 elsif(st1[lastChar] == 8)
  //windows 98
elsif //etc
 

hermes

New member
Mar 2, 2009
3,865
0
0
Extremely unlikely... that looks like one of the poorest programming I have seen in a while; and its even more unlikely that MS based their product naming on such a reason. If someone is capable of basing its product in code like that, then MS has every right to claim it won't support it, right after they kicked them in the balls for failing at programming.