E-Mail:
Get our new Windows 7 eBook (PDF) for $7 with 70+ Tips. Download Now!

Windows 7 Breaking Apps Is Further Proof that the Company Should Be Split

Yes, with the breaking of some Windows applications on Windows 7, we see exactly why the company should have been broken apart into Applications and Operating Systems years ago.

It was not that long ago, that the Department of Justice wanted to break Microsoft apart because the competitors were complaining that the Applications programmers had unfair knowledge of function calls in the Operating System, that were unavailable to programmers from other companies. Somehow, the Microsoft lawyers were able to derail that action, but now that we see what is happening with Windows 7, it probably should have happened long, long ago.

In an article on Tech Radar, from the UK, it is clear that many problems with applications, both for Microsoft, and third parties, is that too much spaghetti was being served. Spaghetti coding is the first thing that beginning programmer’s are warned about, and when I was learning a few years ago, was assured that that kind of programming was only found in relics from the ’70s  and before. Having none of it is the entire reason for the concept of Structured Programming.

But that’s not the whole story about application compatibility with Windows 7 and Chris Jackson of the App Compat SWAT team revealed the nitty-gritty details at Microsoft’s TechEd conference this week.

Jackson says application compatibility was what Microsoft calls a “tenet” for Windows 7 – a key principle during development: “We are putting in quality gates so that before you even check in code you have to make sure you have measured its compatibility impact. The goal in short is, don’t break everything. Did we make it all of the way there? No. Some things are still broken.”

The changes that Microsoft made in Vista for security are still there, which means apps still face the same problems, he concedes. “In the end there is no new special sauce that makes all the software we broke on Vista start working again. There are some one-off solutions - we added more shims, we fixed some additional apps - but there is no systematic change.”

and later

There are changes in Windows 7 that do affect applications, many of them very low level. As with Vista, Jackson says there were good reasons to make them. “We wanted to take what was getting to be pretty much spaghetti and make sense of it. We reorganised things again in Windows 7 trying to get to what we call MinWin [a base kernel without the complicated interdependencies of Windows].”

He admits that may cause problems for developers. “The kind of stuff we broke isn’t easy stuff. With Windows 7 if you don’t work and you did work on Vista you’re into some pretty hard engineering.”

Zune had a particular problem: “If you were using private undocumented IOCTL codes to communicate, you’re going to break,” says Jackson.

Not as many applications as Jackson expected were affected by the removal of Windows Mail (only three in total); although it had an API you could use to integrate it, it only worked if you renamed your own application WINMAIL.EXE.

The parallel registry in the 64-bit version of Windows is gone, but the only place it was actually used was Window’s own COM interface.

Data Execution Protection (DEP) is enabled in IE by default (and to turn it off you have to run the browser as an administrator). That means ActiveX controls have to work with DEP (because they’re hosted by IE), and that used to be harder than it needed to be because Microsoft’s ActiveX template library framework was incompatible with DEP. That’s now fixed so it will be easier for developers to create compatible plug-ins.

The new file libraries in Windows 7 can confuse applications that don’t use the Windows file dialogues, because technically a library is a file rather than a folder.

And then there are changes that shouldn’t affect applications but do, because developers have made assumptions they shouldn’t have. The way to guarantee that apps will break, says Jackson, is to “assume we’ll never change Windows”. Version 3 of Skype won’t run on Windows 7.

“They take an internal dependency on how we implement structured exception handling in Windows,” he explains. “Any change in that would break them but we cannot just freeze exception handling for all time just for Skype.” Instead, Microsoft helped the Skype team to make sure version 4 was compatible in time for the Windows 7 beta.

While many of these third party programs that fail are in fact broken because they did not heed the Microsoft advice, others are broken because they followed the same convoluted programming style that the people from Microsoft did – resulting in errors from revision to revision, and more breakage than was ever really necessary.

If the Operating Systems division did not, or was not allowed, to share information, as if the OS was a black box, these sort of things would happen a great deal less. Also, if the OS division wasn’t trying to fix the spaghetti from the revisions going back almost 20 years (some actually more than 20 years) the company would not be breaking its own applications from version to version. A side benefit would be fewer code problems that are exploitable.

Apple was smart enough to make a complete break with the past when it was no longer sensible to maintain old code – Microsoft may just now be learning what Mr. Jobs knew back in 1999.

Could the examples in the article and the explanation by the Microsoft employee be the beginning of a totally new Windows 8?  (Perhaps if Vista wasn’t such a pig, Windows 7 could have been the new start…but the greed overpowered any need for new code… and the march of time.)

whitespace

whitespace

whitespace

whitespace

Opera-120x60securered


whitespace

Digg This

10 Comments

Back in the late 1980’s I read an article in a technical journal that made the case that software should have fixed defined lifespan and could not be reused once the lifespan expired This was based on analysis that suggest entropy (i.e. disorder) of software increases with age due to changes and additions. The only way to avoid this is terminate the software branch and start fresh.

Mr. Job did indeed recognize when chaos had enter the Mac code branches and took the effort to start fresh. Microsoft has yet to learn this lesson even though they claim to hire and retain some of the best and brightest.

[...] the oracle wrote an interesting post today onbWindows 7/b Breaking Apps Is Further Proof that the Company Should b…/bHere’s a quick excerptBut that’s not the whole story about application compatibility with bWindows 7/b and Chris Jackson of the App Compat SWAT team revealed the nitty-gritty details at Microsoft’s TechEd conference this week. … [...]

[...] the original: Windows 7 Breaking Apps Is Further Proof that the Company Should … Share and [...]

What a load of crap. First off, there’s no 20 year old code in Windows 7, and the desire to refactor internal dependency layers isn’t a reflection on *code quality* and isn’t something that should affect 99.9% of application developers.

I hope the irony of your last two paragraphs isn’t lost on others. You do realize that Apple switched to a codebase which is OLDER than NT, and a kernel (Mach) which was a predecessor to it, right? And that Apple has spent the last 10 years undoing the ultimate spaghetti mess in their BSD/Mach mishmash architecture (split funnel anybody?), while breaking compatibility with every release (or was I the only one who got a hung blue screen while installing Leopard because of an app compat problem? Nope, I wasn’t).

Have you any idea how hard Apple is pushing developers right now to update their code to support Snow Leopard?

You will never, ever be able to write an OS that maintains 100% compatibility with a different OS, even its predecessor. Apple sure as heck hasn’t done it. Nobody has.

Good job trolling for fanboy traffic though.

Dear Lame, I have no wish to get into a war of words with you, but are you serious?

[[First off, there’s no 20 year old code in Windows 7,]]

Surely you must be kidding. There is code that goes back to at least Windows 3.1, and I believe that was circa 1992, so that’s 17, and I’m sure there are DOS calls for compatibility, that reach back further.

Apple switched to a code base that was written more cohesively than what the classic OS (9) had become.

Not having looked at the code since FreeBSD 4, I wouldn’t say there was any spaghetti code then, and I can’t see how it may have gotten any worse.

Apple may have had certain problems, but those were certainly less than any Windows user has experienced over the years.

[[You will never, ever be able to write an OS that maintains 100% compatibility with a different OS, even its predecessor. Apple sure as heck hasn’t done it. Nobody has.]]

I never said anyone achieved 100% compatibility - you were apparently not looking at what I wrote.

Not fanboy traffic, just people who want a point of view different than the one put out by the Windows evangelists, like Ed Bott, and who can’t see the forest from the trees.

No one OS is perfect, but OS X comes a far sight closer than Windows (any version - and they are like a deaf marco Polo player at MS lately, they get further from the source of sound, rather than closer)

Give credit where credit is due.

Mr. Jobs was not the one who decided to break from the past other than the decision to pull Classic mode out of the OS if you are referring to strictly the change in OS.

Credit needs to go to Gil Amelio and his group who were the ones who were looking at several rumored solutions. The well known one being BeOS and then others being Windows NT and Solaris.

Once they settled on Jobs’ NeXT technology and brought it into the company, it was Jobs who then gets credit for pushing to have Classic appear more seamless than it was. Amelio was looking at it being in a seperate window much like older versions of vmware limited you to.

So all in all Amelio and crew were already on it. Jobs came in, took over, and had it implemented via a better method than Amelio’s crew was looking to do.

Techslacker, you’re right, I almost forgot about Amelio - but then maybe there was a reason, like the fact that he brought about some of the cheapest (not in the good sense) Macs ever to be produced.

BeOS might have been great, but it really never took off because the Be hardwaare was too expensive, and there were no drivers once the OS was ported to x86.

That little OS within an OS trick whereby I could run BeOS inside of a file structure on my Windows 98 machine was very cool. Gasse was truly ahead of his time.

What Do You Think?

You must be logged in to post a comment.

Posted Recently

50 queries / 0.814 seconds.