Steven, since you brought up Unicode in this post, it’s a good place to mention another important innovation in Windows from the hero of an earlier chapter.
For background, the tools and platform teams had come up with a series of C macros and #ifdefs that would allow a developer to create either a “ANSI” or “Unicode” Win32 EXE from his source code. At build time, the developer would pick whether his strings for Windows API calls would be ANSI or Unicode, and the appropriate binary would be built. It was a little clunky in some ways, but it mostly worked, with a “gotcha.”
The “gotcha” was that Microsoft had two Win32 operating systems, and only one of them would run Unicode binaries. And the one that ran Unicode binaries wasn’t the one that had been flying off retail shelves, the one bundled with most new PC’s, the one advertised on TV with a Rolling Stones tune. No, Unicode may have been the way of the future, but Office needed to make money selling to customers in the present.
Had Office 97 required Windows NT to run, no one would have been complaining about new file formats.
The rest of the story came to me through the grapevine.
The TrueType fonts were already Unicode, but all the Win95 API’s were ANSI, and the Chicago Master Plan said they were all going to stay that way.
I heard that someone in Systems decided to do a little skunkworks project in Win95 GDI, adding Unicode versions of just the API’s needed to display and print Unicode characters and to deliver font metrics to applications. He did this without a getting much buy-in from the management chain. He did it without getting SDET’s to write test suites to verify that all the edge and corner cases worked correctly, so there were a few bugs. (I recall one involving East Asian characters.) But Win95 shipped with enough Unicode support in it for an application to compose, display and print Unicode text. Mind you, these API’s were not undocumented. Any ISV was able to use them. But at the time, only Office 97 did.
Office 97 was a very attractive product in the EU because it could produce documents that contained English, French, German, Spanish AND Greek. You could do Western European languages without Unicode, but Greek was a different character set. And Greece was an EU member.
The way I heard the story of the skunkworks project, the guy who went into Win95 GDI and added those Unicode API’s “under the cover of darkness” was David Weise. (I later worked in the same group with David, but I never thought to ask him about it.)
These multi-lingual capabilities were a very important part of the success of Office. In the Office 2000 time period sophisticated line-layout and RtoL language support would add to this. DavidW FTW once more.
Some short while after we'd shipped O97, I ran into Mr. Sinofsky in the break room, and he semi-guiltily explained how an unexpected thing had happened, regarding the file format change. In companies all over the world, a corporate exec would get sent an O97 docx, and couldn't open it. Instead of demanding his people use SaveAs for doc, rather he'd yell at his IT team that he, senior veep, ought to have the latest version dammit. And that, of course, would translate to buying the upgrade for the entire corporation. Profits ensued.
Fun and very believable story, Kirk, but just one minor tech correction: Office 97 had a different binary format from previous versions, but these were still .DOC files, not docx. As I’m sure you remember too well, a field in the file contents header gave the exact version and allowed for code to trigger compatibility converters if needed. In the early 2000s, Office decided to change the entire format to a zipped XML container as a more open format that I believe is actually a documented international standard. At that time, starting with Office 2007, the file type extension changed to .DOCX.
Reusing .DOC as the type was also "normal" but in an email attachment world it became especially insidious. People routinely called about "corrupt" files. Or they would ask the sender to send again because they couldn't open and the sender would say "things are fine over here". It was so so bad. Office "open" XML was retroactively applied to the Office 2007 format and was finalized in O14 (I think) and was all wrapped up in a deal with the EU.
Anyone else remember when Microsoft sold a 90-day try-before-you-buy version of Office 97 at Kinko's for $4.99, and you could replace the mso dll with a copy from a legit install and it would remove the 90-day limit?
Yes! We had so many different promotions with Kinkos over the years. They were always so optimistic something big would happen. If I recall, we did that trial specifically to enable a trial of “print to kinkos” which today is done via uploading a PDF but back then Kinkos built a whole add-in that converted a doc to a proprietary format along with asking all the questions about binding, paper, etc.
Steven, since you brought up Unicode in this post, it’s a good place to mention another important innovation in Windows from the hero of an earlier chapter.
For background, the tools and platform teams had come up with a series of C macros and #ifdefs that would allow a developer to create either a “ANSI” or “Unicode” Win32 EXE from his source code. At build time, the developer would pick whether his strings for Windows API calls would be ANSI or Unicode, and the appropriate binary would be built. It was a little clunky in some ways, but it mostly worked, with a “gotcha.”
The “gotcha” was that Microsoft had two Win32 operating systems, and only one of them would run Unicode binaries. And the one that ran Unicode binaries wasn’t the one that had been flying off retail shelves, the one bundled with most new PC’s, the one advertised on TV with a Rolling Stones tune. No, Unicode may have been the way of the future, but Office needed to make money selling to customers in the present.
Had Office 97 required Windows NT to run, no one would have been complaining about new file formats.
The rest of the story came to me through the grapevine.
The TrueType fonts were already Unicode, but all the Win95 API’s were ANSI, and the Chicago Master Plan said they were all going to stay that way.
I heard that someone in Systems decided to do a little skunkworks project in Win95 GDI, adding Unicode versions of just the API’s needed to display and print Unicode characters and to deliver font metrics to applications. He did this without a getting much buy-in from the management chain. He did it without getting SDET’s to write test suites to verify that all the edge and corner cases worked correctly, so there were a few bugs. (I recall one involving East Asian characters.) But Win95 shipped with enough Unicode support in it for an application to compose, display and print Unicode text. Mind you, these API’s were not undocumented. Any ISV was able to use them. But at the time, only Office 97 did.
Office 97 was a very attractive product in the EU because it could produce documents that contained English, French, German, Spanish AND Greek. You could do Western European languages without Unicode, but Greek was a different character set. And Greece was an EU member.
The way I heard the story of the skunkworks project, the guy who went into Win95 GDI and added those Unicode API’s “under the cover of darkness” was David Weise. (I later worked in the same group with David, but I never thought to ask him about it.)
These multi-lingual capabilities were a very important part of the success of Office. In the Office 2000 time period sophisticated line-layout and RtoL language support would add to this. DavidW FTW once more.
Some short while after we'd shipped O97, I ran into Mr. Sinofsky in the break room, and he semi-guiltily explained how an unexpected thing had happened, regarding the file format change. In companies all over the world, a corporate exec would get sent an O97 docx, and couldn't open it. Instead of demanding his people use SaveAs for doc, rather he'd yell at his IT team that he, senior veep, ought to have the latest version dammit. And that, of course, would translate to buying the upgrade for the entire corporation. Profits ensued.
Fun and very believable story, Kirk, but just one minor tech correction: Office 97 had a different binary format from previous versions, but these were still .DOC files, not docx. As I’m sure you remember too well, a field in the file contents header gave the exact version and allowed for code to trigger compatibility converters if needed. In the early 2000s, Office decided to change the entire format to a zipped XML container as a more open format that I believe is actually a documented international standard. At that time, starting with Office 2007, the file type extension changed to .DOCX.
Reusing .DOC as the type was also "normal" but in an email attachment world it became especially insidious. People routinely called about "corrupt" files. Or they would ask the sender to send again because they couldn't open and the sender would say "things are fine over here". It was so so bad. Office "open" XML was retroactively applied to the Office 2007 format and was finalized in O14 (I think) and was all wrapped up in a deal with the EU.
Anyone else remember when Microsoft sold a 90-day try-before-you-buy version of Office 97 at Kinko's for $4.99, and you could replace the mso dll with a copy from a legit install and it would remove the 90-day limit?
Yes! We had so many different promotions with Kinkos over the years. They were always so optimistic something big would happen. If I recall, we did that trial specifically to enable a trial of “print to kinkos” which today is done via uploading a PDF but back then Kinkos built a whole add-in that converted a doc to a proprietary format along with asking all the questions about binding, paper, etc.