I completed work on the first edition of Developing International Software in December of 1994. Eight years later, I still receive scattered e-mail with questions about running or developing world-ready software, which I usually forward to the very capable World-Ready Guides (WRG) team (who are also responsible for the Dr. International column on http://www.microsoft.com/globaldev) inside the Microsoft Windows division. Since the most frequently asked question by far has been "When is a new book coming out?" I was thrilled when the WRG team picked up the enormous task of doing an update. The finished product is a much more comprehensive treatment of the subject matter, which is needed and welcome given the central relevance of Web-based software, a phenomenon that has emerged since we published the first edition. Basic techniques and knowledge of the Microsoft Win32 application programming interface (API) could help developers produce world-ready software in 1995, but in today's Internet-laden climate they seek to understand the role of other Microsoft products such as Microsoft Office, Microsoft Internet Information Services (IIS), Microsoft SQL, and Microsoft Visual Studio .NET, as well as industry standards such as Extensible Markup Language (XML). It is heartening to see how much these products and technologies have expanded their support for international functionality over the past several years.
International support in Windows also continues to mature. While the basic foundation-Unicode and the National Language Support API (NLS API)-remains very much the same, functionality has deepened with each new release to encompass new locales, new locale information, and more sophisticated text-layout and font capabilities. The book delves into these updates and lists detailed information in the significantly improved appendixes. I am also happy to see an entire section on testing. Given increasing requirements for product reliability and security, particularly for global firms, nothing could be more important than thorough and methodical software testing methods.
The software marketplace has grown increasingly global over the past eight years but, even so, the English language still dominates. Shortly after I joined Microsoft in 1989, the then vice president of Microsoft's international division threw a party celebrating the fact that sales of localized products had reached 50 percent of company revenues. Recent figures are closer to 60 percent. Considering overall revenue growth, that 10-percent shift constitutes millions of dollars, but I still wonder why the figure isn't closer to 75 percent or more. Certainly Microsoft and many other companies have come to understand that globalizing software shouldn't be a separate effort. Microsoft, for example, no longer has an international development division-each product organization treats world-readiness as a core development requirement. Here in Redmond, we even host international teams from Original Equipment Manufacturers (OEM) partners and international subsidiaries to ensure that we address world-ready requirements on a consistent and constant basis. The results of the technical and organizational integration have included achievements like simultaneous shipment of several language editions of Microsoft Windows XP. But I still think that the mindset of the English-speaking developer stays too close to the "at home and familiar." This has ramifications beyond world-readiness-in general, our industry needs to do a better job of living and breathing the world of our customers. The scenarios in which companies deploy software are much more complicated than developers realize when they imagine how their designs and algorithms can be applied.
It is my hope that this book will become not only an indispensable reference, but required reading for any software development organization that takes its customers' needs seriously. Although challenges like sharing data and mixing and matching localized applications with localized operating systems have become easier to manage, it is up to the development community to make global interaction much simpler to achieve and much more powerful in its uses. The tools that enable such interaction will continue to evolve, but even once the infrastructure is perfected, developers will still need to take proper advantage of it for businesses and consumers to reap the appropriate benefits. For so long, those of us who evangelize world-readiness have emphasized "making it work properly" and lessening the pain of getting there. Following the methods outlined in this book should make "it works" a given. As a developer, your energy will be better spent on the still underexplored arena of multicultural, multilingual software communities and the untapped opportunities they present. "It works" is not enough. "Now that's a brilliant idea that will change the way people do things" is a much more fetching proposition.