Hacker News new | past | comments | ask | show | jobs | submit login

Relevant Old New Thing post: "The real cost of compatibility is not in the hacks; the hacks are small potatoes"

(The Old New Thing is a blog by veteran Microsoft shell team developer Raymond Chen, and it's a must-read for all developers.)

https://blogs.msdn.com/b/oldnewthing/archive/2007/07/23/4003...




"a must read" for all Windows developers.


Actually, I think it's a good read for all developers, irrespective of platform. The underlying message of the post above is relevant to anyone writing something that interfaces with third-party code. Not to mention, it's a good look into how one of the larger software companies approaches compatibility.


If you find yourself doing a platform, you're going to run into these issues.

The biggest problem seems universal: You were an idiot and cut a corner three years ago, and you have to break something to move forward. Now what?

The Mac has some classic and poignant examples of this that have actually been trapping people for 50 years. Such as: Use of the high byte of a pointer to have non-pointer meaning (some 1980s ear Mac callbacks set flags in the "unused" high bits of a pointer, and the IBM 360 team made the same mistake in some of their OS data structures). In both cases, fixing this issue was pretty nasty.

Study history or repeat it, your choice. :-)


Not just Windows developers.

Microsoft Office for Mac v.X was released on November 19, 2001. It ran without incident for a decade on the latest and best Macs that money could buy through July 20, 2011. This was not by happenstance.


Other operating systems have similar issues as well.


I'll go one further and say all software has similar issues.

To give you a more concrete examples a game project I work on has many characters with skills. There is a lot of shared code across the skills, which is a good thing. A handful of skills are of the "charge" type. Press a button and lunge forward, each with it's own variation. Knockback targets, grapple targets, throw, throw backwards, apply buff to charger, apply debuff to victim, leave acid trail of damage, etc.

The whole setup has been built up over years and is tragically fragile today. Adding in a new charge variant requires being very careful you don't break any of the pre-existing skills. It may seem safe, and even appropriate, to make minor changes in the sequence of events but there's a good change it will break one skill in one particular case where multiple, infrequent combination of factors are in play.


This is obviously off topic, but do you happen to work on a MOBA?




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: