6 comments

6

I've just started Android development and already I'm getting pissed off by the number of things that are introduced and then deprecated within a few months. If there's one thing Microsoft did right, it was keeping their APIs fairly stable over the years.

As a side note, even with garbage collection you still need to be aware of memory management and avoid "leaking references" to heavyweight objects and so stopping them from being garbage collected. (The classic case is sticking a reference to an Activity into a static variable, at which case that entire Activity with all its child views and resources etc. just sticks around forever until the static variable is overwritten.)

3

Yes, one thing that Microsoft always got right was backwards-compatibility. It is amazing that softwares made for Windows 20 years ago still work (almost) flawlessy on current versions of Windows.

Unfortunately this also meant supporting bugs and broken softwares... such as the example of SimCity:

The testers on the Windows team were going through various popular applications, testing them to make sure they worked OK, but SimCity kept crashing. They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and added special code that checked if SimCity was running, and if it did, ran the memory allocator in a special mode in which you could still use memory after freeing it.

This is dangerous. By supporting this type of broken behavior you are opening the way to malware that could take advantage of those bugs.

But yes, beside this point, they have always been good at backwards-compatibility, a thing that Android should learn to do (but also Linux, think at when you are trying to run an old software that requires older versions of some library that is not anymore available in your package manager... sometimes all it takes is a change in version from, say 1.0 to 2.0).

1

True about the old bugs equals malware thing. I think the current approach is arguably optimal: With each new revision of the software, provide a sandboxed, virtualised version of the old version for compatibility. If I understand right, the "compatibility mode" in every Windows since 7 is literally a mini-VM running an older Windows runtime. This gets all the hacky workarounds out of the current-generation code while perfectly preserving the old execution environment.

2

Cripes. This entire article makes him seem like a soothsayer. Throughout the article, which was written 12 years ago, there are numerous references to goals, strategies, and issues for Microsoft. And nearly all are more meaningful than ever. I enjoyed this bit:

It's so important for Microsoft that the only reason they don't outright give away development tools for Windows is because they don't want to inadvertently cut off the oxygen to competitive development tools vendors (well, those that are left) because having a variety of development tools available for their platform makes it that much more attractive to developers. But they really want to give away the development tools.

Even after some research I was unsure why Microsoft ended up giving away their dev tools starting with a trickle to the latest state which has them giving away Visual Studio "Community" which is effectively Visual Studio Pro, and even open sourcing their C# platform code. I guess I didn't bother checking out 12 year old articles!

2

I also found this part very interesting:

Which means, suddenly, Microsoft's API doesn't matter so much. Web applications don't require Windows. It's not that Microsoft didn't notice this was happening. Of course they did, and when the implications became clear, they slammed on the brakes. Promising new technologies like HTAs and DHTML were stopped in their tracks. The Internet Explorer team seems to have disappeared; they have been completely missing in action for several years. There's no way Microsoft is going to allow DHTML to get any better than it already is: it's just too dangerous to their core business, the rich client. The big meme at Microsoft these days is: "Microsoft is betting the company on the rich client."

I have always wondered why IE sucked so bad... if really with all the devs at Microsoft they couldn't do any better than that. This explains it. It is not that Microsoft couldn't fix it, they didn't want to. They actively boycotted the development of the WEB because they knew that the WEB was going to kill the Windows API and so, in turn, make Windows irrelevant.

1

(article is old, but i thought this was interesting)

IBM reinvented itself as a big ol' technology consulting company that also happens to make cheap plastic telephones.

Hasn't IBM's sales been declining for the past 18 consecutive quarters?