Wednesday, August 23, 2006

Warcraft is a lesson in software engineering

World of Warcraft patch 1.12 arrived today. There are definitely some things that would be refreshing about being able to release a new version of your product every couple months, and being able to require your users to upgrade immediately. Of course, there's the service aspect of it—being on-call, constantly in crunch mode, and the like would all suck a lot. Neither the Office model of working a couple years on something, releasing it, and then barely ever touching it again, or the World of Warcraft model of having to constantly update the product are quite as nice as the independent freeware developer model, who gets to work on whatever he wants, whenever he wants, and doesn't have to care too much about the consequences. There are still perks to developing your own software...

World of Warcraft also gives me an opportunity to observe what it would be like for customers if Microsoft weren't focused so hardcore on backward compatibility. World of Warcraft has an incredibly powerful extensibility platform, allowing enterprising individuals to write mods of surprising complexity, be they overhauls of the user interface, convenient new functionality, or even really complicated things like a calendaring system for groups of players to share plans with one another. But every patch breaks about half of them, because Blizzard changes the APIs (application programming interfaces). In the end, it's great for them, because at any point in time, they only have to worry about the way to do something now, not how you used to be able to do things in WoW 1.0. Besides the inconvenience of having to constantly update their mods, it works pretty well for those mod authors too, because they don't have to worry about their software running on older versions of WoW, since users can't play older versions of WoW. (I'd give just about anything to have the assurance that everyone using my software was all running the latest version of Windows at all times.)

But, it's pretty terrible for customers. Each patch brings bizarre errors, broken functionality, and messed-up UI for those mods. If Blizzard were committed to backwards compatibility, they'd support almost all of the mods ever written for World of Warcraft 1.0. This would mean a series of hacks that none of the developers want there, but they're basically obligated to have anyway. The code gets messier and messier, and it's harder and harder to change without breaking older things. This is the way I imagine that the Windows code is. (I don't look through it, so don't take my word on that.) They've got to support programs that people wrote back for Windows 1.0, not to mention DOS compatibility. They've got to make sure that crazy hacks that people wrote long ago still run on recent versions of Windows. If World of Warcraft made all of those old mods from version 1.0 work on the current version, it would take longer and longer for each subsequent version to be released...

No comments: