Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Some companies, like Blizzard, make software that continues to work well in future versions of Windows and with newer versions of their other software dependencies. Other companies (mostly ones that are not hardcore software companies) sometimes write software that breaks with a release of a new OS or other software dependency. What do the hardcore software companies know that the others don't? What are the major causes for forward compatibility problems?

share|improve this question
1  
Do you have an example of something that failed? – Fosco Oct 6 '10 at 12:38
    
@Fosco Many older games, for example, are unplayable on modern computers, some due to OS changes, some due to hardware advances. – Adam Lear Oct 6 '10 at 13:05
    
@Fosco I've seen lots of stuff like that. One that particularly stands out to me is an Israeli quest game called Granny X that refused to work in anything that wasn't Windows 95 (not even on Windows 95++, AKA Windows 98). Other examples are old astrology programs my mother used, educational programs for children, etc. – EpsilonVector Oct 6 '10 at 13:11
    
Diablo doesn't (or didn't until recently) work on vista/7 without some finagling. Likewise, the colours were buggered in StarCraft without disabling the explorer shell in 7. – Steve Evers Oct 6 '10 at 16:18
up vote 17 down vote accepted

Did Blizzard write software that works well with future versions of Windows (Starcraft still plays on 7 for example)...

or did Microsoft write "future versions" of software that is backwards looking?

Something like WoW isn't exactly "forward looking" since it's still in active development. Other software, like Starcraft/Warcraft/Diablo was written for the time and happens to still work because MS goes out of its way to enable old software on new systems.

Blizzard also has the ability, and reason, to update its old games. Very popular titles that drive its current software.

Some software uses hackish/non-standard parts that don't work well. Unique setups, reliant on "old" bugs to operate, drivers that aren't ported to new systems, etc.

share|improve this answer
3  
+1 (6 years later...) This article cracked.com/… states that whilst making Windows 95, Microsoft had hundreds of interns going out buying every piece of software they could find and testing them all. If the software didn't work, they modified Windows till it did. The reason being, if the software didn't work, the users wouldn't blame XYZ Software Company, but Microsoft. – razethestray Apr 5 at 16:48
    
Yeah... +50 points today from a 6 year old answer. Cha-ching. And yeah, the answer still rings true - and it's why Windows still reigns king over Mac and Linux: Backwards Compatibility. I don't have confidence that 10 year old software will work on a Mac or on Ubuntu... I do have a reasonable level of confidence that it will work in windows. – WernerCD Apr 5 at 16:59

Several reasons:

  1. They write to standards that continue to be supported in future OS's
  2. OS companies (e.g. MS) actually put in a good deal of code to support older software
  3. Large popular software houses tend to have formal or informal relationships with the OS companies, so they get to see stuff earlier.
share|improve this answer

Here's my experience: Many years ago, a product that I worked on started supporting third-party plugins. We'd send a request to the plugin, which it was supposed to reply to. The first parameter in the plugin was a number which identified which request we were making. At that point there was only one request. Still we documented that you should check this number, and if it was a number that you didn't understand, do nothing but return an error code with the meaning "I don't understand this request". Simple enough. The first version on our side handled this correctly. Even when sending the first request (the only one we could ever send) we checked whether the plugin responded "don't understand" and handled it.

Then we added the second request. Tested with old plugins expecting they would respond "I don't understand this request". All plugins performed the action for the first request. That's not forward compatible :-( These plugins had been shipped to customers and would crash with a new app version.

What we did: Put the software into a context where the first request could be performed without damage. Sent a totally different request. If the response wasn't "don't understand" then we knew from then on that the plugin was written by idiots and no requests other than the one we developed first were made.

share|improve this answer

You can't ensure 'forward compatibility', it is up to the OS and HW makers. The best thing you can do when writing software is to ensure you aren't using deprecated features or non-standard tricks.

share|improve this answer
    
Not using depricated features or non-standard tricks will take you quite far. For example, Metal Marines, a Windows 3.1 era game (maybe actually Win 32s) that renders graphical objects outside of the main game window, launching missiles across the desktop, by getting a device context and partying with it directly, still works on Windows XP and Windows 7. I think that is an awesome example of getting forward compatibility via Microsoft's commitment to backward compatibility. – Mike Apr 6 at 3:00

I think it's just that writing forward compatible software takes more effort. Whether the effort (=cost) is worth the compatibility must be evaluated by the releasing firm.

For example, database schemas can change. They could be migrated automatically (for best user experience) or ignored (for less development effort).

share|improve this answer

Some programmers read the documentation and write code that use the OS in the way the documentation tells them to. Other programmers write code quicker and debug any code that does not work.

A good example will be code that can’t cope with windows having a two digit version number; it will not fail testing on Windows 8, but when used on Windows 10…..

Then you have games that are written to be as fast as possible, bypassing the OS not caring if they will work in a few years time…..

Take a programmer that leaned to program working on Unix software in the days that each vendor has its own version of unit, that programmer will be very used to reading the standards and ONLY depending on what the standards say. As having to ship your software on 6 different versions of Unix teaches you quickly to be careful. Compare this with a programmer that learned on VB, where it is common to just change the code until it works…… But put the “Unix type programmer” on the same task as the “VB type programmer” and often the person that learned on VB will produce a result that can be sold a lot quicker.

When interviewing staff, people tend to choose like minded people, so once a company has their first few staff, new staff tend to think the same way.

share|improve this answer

I would think the main reason for lack of forward compatibility would be the dearth of working programmers who also happen to be clairvoyant.

share|improve this answer
    
I've got several pkunk programmers for exactly this reason. I pay them in Pootworms, which is incredibly cheap. – Stephen Furlani Dec 13 '10 at 15:43

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.