Back in 2003 Raymond Chen, noted Microsoftie and venerable author of the excellent Old New Thing blog, wrote a bit about the propensity programmers had for, and problems caused by, reverse-engineering Microsoft’s APIs and hooking into them in unapproved ways:
“For example, BOZOSLIVEHERE was originally the window procedure for the edit control, with the rather nondescript name of EditWndProc. Then some people who wanted to use the edit control window procedure decide that GetWindowLong(GWL_WNDPROC) was too much typing, so they linked to EditWndProc directly. Then when Windows 2.0 (I think) removed the need to export window procedures, we removed them all, only to find that programs stopped working. So we had to put them back, but they got goofy names as a way of scolding the programs that were doing these invalid things.”
He’s a pretty good writer, and this stuff makes for a good story, but this “too much typing” line is… uncharacteristically disingenuous of him; the other side of that story was told, to put it mildly, a little different.
The Microsoft of the day was the Microsoft that came to be known as the evil empire, and for good reason; the combination of a dominant market position, rapid growth across a growing number of markets and no compunction at all about using what their consulting and support arms had learned about your company to leverage their growth into your market segment was legitimate grounds for a healthy dose of fear.
If you wanted to sell software you used their compilers and their APIs to talk to their OS and you consulted their support when you had problems. So if they suddenly developed an interest in your market niche they had a pretty good idea what the shape of your business looked like already. And their ability to leverage that information was very real, so much so that Microsoft’s announcement that they had plans to eventually make a similar product was sometimes enough to run competitors out of business.
This era is where the term “FUD” comes from, also not for no reason.
Because Microsoft could, and would, run the full-court press on your market segment if they decided it was worth their while. Veterans of the technical wars of the day can vividly remember their surprise, walking through decompiled assembler to discover the reason their program’s performance was in the toilet was because going through the official, approved-for-general-consumption Win32 call meant nothing more or less than calling a delay loop before passing unchanged arguments into a private API. Not for any technical reason, but as a defensive posture; just to guarantee that you couldn’t build a product as well as Microsoft could on the off chance that they woke up one morning and decided they wanted your niche.
So it really wasn’t about how long it took to type “GetWindowLong(GWL_WNDPROC)”; it was often the fact that, if you had to call that or something like it thirty-two thousand times and didn’t run that hack, your customer’s 386SX would spend twenty unresponsive minutes off in the weeds instead of fifteen seconds. Chen’s stories about having to reverse-engineer and accommodate poor programmer behavior are epic, and technically brilliant stories to be sure, but you should remember to read them in this light – these weren’t stupid programmers crawling up an unprotected stack for no reason. The Microsoft of the era just wasn’t a trustworthy collaborator. And for all the incredible, very-nearly-miraculous, brilliant work they’ve done maintaining backwards compatibility for applications doing horrible things, they brought an awful lot of that burden on themselves.
It took a protracted antitrust investigation, the long tenacity of free software and rise of the Web (with Mozilla keeping that torch lit through some long, dark years), Apple and later the primacy of mobile to really push Microsoft to the margins of relevancy where they are today. They’re still huge, they’re not all that evil anymore and they legitimately make some great products, but nobody really cares. They’re not making much of a mark on the things people do care about these days, mostly the social and mobile spaces. People aren’t afraid of them anymore because what matters changed, and developers and customers largely moved on.
That was a long time coming, too. But it’s starting to look like somebody’s getting ready to pick up that ball and run with it. A challenger appears!
This is just one example, but it’s really been part of a trend recently, and a good one to point to: take a look at this web-based Angry Birds demo, if you can. You might not be able to – it doesn’t work in Firefox – but the thing is, everything in there runs just fine in Firefox. Google has just decided that it won’t; not for any technical reason – they check some webkit-only CSS shim, it works fine in Safari – but just to keep it from working in competing browsers. Classier still, through the magic of view-source you can see that indignity bundled up in a <div id=”roadblock”> tag, a name I’d like to think gave somebody a moment’s pause, but I doubt it.
Larry Page said, back in the day, that Google wouldn’t put their own results ahead of other people’s because that would be bad for users, but that statement is apparently no longer operative. Likewise this 2009 statement from Jonathan Rosenberg, Senior VP, Product Management about open technology and open information:
Open technology includes open source, meaning we release and actively support code that helps grow the Internet, and open standards, meaning we adhere to accepted standards and, if none exist, work to create standards that improve the entire Internet (and not just benefit Google). Open information means that when we have information about users we use it to provide something that is valuable to them, we are transparent about what information we have about them, and we give them ultimate control over their information.
I’m ready to believe there’s still a lot of people at Google who really believe in this, and I’m sure that inside Google HQ they still have that kool-aid on tap. But those people are clearly not the ones at the helm anymore, and that’s going to have some broad repercussions – people who are using Gmail pseudonymously, for example, are well-advised to start planning a defensive migration, because that day’s coming.
But God knows to where you’d migrate to. The lunatic thing is that if you want the relative privacy of pseudonymous communication the way, back in the bad old days, you might have wanted basic computing functionality – that is, without kowtowing to an arbitrary, vaguely menacing megacorporation with arbitrary, vaguely menacing policies about your data – we might be getting back to the point where you need to rack your own box and learn how to roll it all yourself.
Dear Googlers: We’ve done this. It sucked. It was awful, a decade of near-total technical stagnation. It was WinCE 5.0 and Office 2003 and OSes with eight-year lifecycles and fucking Flash being the only way to deploy a new UI and everything interesting and promising and new pushed to the margins and excluded so that one company’s crown jewels stayed safe. And we might do it again, and it could be a tragedy or a farce or probably a bit of both. Trying to be more Apple than Apple and more Facebook than Facebook just means you’re trying to be less Google every single day.
It’s amazing, it is flat out astonishing, how much of the future depends on Google being the company that you, once upon a time, believed it could be. And you can still get there. To borrow a phrase, I’m not saying it’s too late for you, but the longer you wait, the closer you get to being Too Late.
But you need to do good. Saying you’re not evil isn’t good enough.