Today, OSNews features an interview with Zac Woodall, software design Engineer at Office Data and Developer Services at Microsoft Corporation. Zac, who is also a frequent OSNews reader, talks about the new Office, .NET, WindowsXP, NTFS and how it compares to BFS filesystem, the GPL & open source movement and much more.1. In what sense Office.NET will be different from Office XP in the way it operates? Also, please explain to us what Office.NET and Lists are in general.
Zac Woodall: It’s too early for us to provide in depth information on future versions of Office, however going forward, we’ll continue to innovate in the areas of custom business solutions and collaborations. I can tell you that Microsoft is always focused on both improving productivity of knowledge workers and facilitating compatibility of Office with both the Web and line of business applications.
2. Are there plans to fully integrate voice recognition and maybe a hint of a “real” artificial intelligence on Office and Windows XP?
Zac Woodall: Speech recognition is already available in the English (U.S.), Simplified Chinese and Japanese language versions of Microsoft Office. You can use speech recognition to dictate text into any Office program. You can also select menu, toolbar, dialog box (U.S. English only), and Task Pane (U.S. English only) items by using your voice. Speech recognition is not designed for completely hands-free operation so you will get the best results using a combination of your voice and the mouse or keyboard.
3. How is the GPL and open source is perceived within Microsoft? How are the employees and your collegues see development like WINE or Mono?
Zac Woodall: We of course have a policy on GPL code: we can’t look at it. What is the reason for this? Well, in my read of the GPL it states that if a work includes GPL code, or is derived from GPL code, then the GPL applies to the aggregate work. And it is very hard to discern between which ideas are completely yours, and which are influenced by code you have seen in the past. What this means is that by incorporating, or possibly even reading GPL code, you are placing your own IP in jeopardy. It seems to me that anyone producing commercial code should be very careful about the implications of the GPL on their dev processes.
Microsoft is of course in the business of making money, as are all businesses, and like IBM and other Intellectual Property-driven companies, a fair amount of revenue is generated through the sale of our IP. Microsoft believes, and has publicly stated that Open Source can be a good thing, but we have concerns with the GPL. To be honest, we spend almost $10B/year on research and development writing code. This is one of the primary reasons for Microsoft’s strong performance – we can assign a whole team of world class developers to work on a new idea, and if we turn out a good product that meets business needs, we know we’re going to make back all the money we spent on research and development in the sale of the ideas that team generates. In my honest opinion, I would much rather work in a company who’s primary focus is research and development of new ideas and tools, than one who only makes money in supporting others’ ideas. After all, in the end of the day businesses are designed for one thing: to make money.
As far as WINE and Mono are concerned, I’m just not sure whether these organizations will end up being able to produce satisfactory products. The real problem is this: it is not good enough for WINE to run some Windows apps. If the general public is going to consume it, it must run all Windows apps. Windows 2000/XP has a significant level of POSIX compliancy, but many developers just don’t write their apps with these standards in mind. You’ll find pieces of code everywhere in third party apps which run statements like if (WINVER==4.0 && GrokTheBIOSForSomeACPIGoo()), which have not been tested to see whether they will run on non-Windows/x86 platforms. In fact, Microsoft has had to put in significant time and effort to insure that older Win32 applications originally written to run in Win95 will run in NT.
4. The SharePoint Portal Server is an interesting and very useful application, mostly for big companies. Does the application include support for scanned documents that can be OCRed and searched?
Zac Woodall: Yes. SharePoint Portal Server can index many file types, including TIF files. For example, an HR department could have all incoming faxes indexed for key words or phrases and automatically routed to product managers looking for specific skill sets.
5. Is the Digital Dashboard a preliminary taste of .NET, or it is based on a completely different technology?
Zac Woodall: No, the digital dashboard was developed a couple of years ago, to provide customers with the tools to build custom intranet solutions. SharePoint Portal Server is the first product to be based on the digital dashboard architecture. The dashboard technology itself is not based on the .NET technology, which is focused on web services.
The dashboard itself is written entirely in ASP, using open coding standards like XML and WebDAV. This should be no secret, as the code for the dashboard is freely available as a part of the DDRK. Also, there are a couple of precompiled binary components which do not make use of the .NET runtime. These are the Digital Dashboard Services Component (DDSC), and the ISAPI redirect dll (SQL version only). It is however more than possible to consume .NET services with a Web Part. This is a fine way to integrate the current dashboard code with your .NET based solutions. Also, when and if the dashboard does move to the .NET platform, the Web Parts for the current platform will likely be supported, allowing continued use of your .NET based solution in a fully .NET environment.
6. Microsoft is trying to revolutionize the way we are running applications with the use of .NET. I’ve had some information where whole applications will run through the web. How can someone run/download an application, like Photoshop for example, through the Internet? Won’t that be too slow for a 56k/ISDN modems (still very popular in Europe)?
Zac Woodall: So for those of you out there who haven’t yet built your own .NET app you’ll be pleasantly surprised to learn that a full GUI app can be compiled into an 11K .exe file. The really amazing thing is that you can build a hello world colorized with support for changing the color via a color dialog in not much more! The good news is we’ve built a very rich runtime, which means that app size won’t grow much because much of the key functionality gets automatically baked into apps.
So let’s apply this to a real world scenario like Photoshop. What impact could .NET have on building a downloadable version of a large app like this?
1) exes are much smaller.
In the Photoshop case, how much code is responsible for drawing all the palettes, icons, toolbars, windows, etc? All that code boils down to almost nothing in .NET, since it comes from the already installed runtime.
2) What are the other big components in Photoshop? Filters maybe? It seems likely.
All the filters/transforms that you want to apply are (sometimes very complicated) algorithms which take up storage space on your machine. Wouldn’t it be way cooler if you could farm that stuff out to a server somewhere? I don’t know about you, but I never use all the filters available in Photoshop. Wouldn’t it be cool if the app could connect using SOAP to a server at Adobe here in Seattle and download the filter you wanted to use when you wanted to use it? Of course the filter would be written in Managed C code for performance reasons never know when you’re going to want to break into assembly in code like that. You could just pull down the binary over the wire (you’re authenticated through Passport as someone who really did pay for Photoshop) and go. Wow, that’s like a whole new definition of plug-and-play.
7. Is the next Windows OS version going to be partly written in C#, or C++? How many Microsoft projects have switched to C# development? How easy was the switch from C++ to C#?
Zac Woodall: Well, as I mentioned before, Windows is a very big project (somewhere in the neighborhood of 80M LOC). Today, the core of the OS is all written in C/ASM. This includes areas like Kernel32.dll, GDI32.dll, and the HAL. As you progress farther up the ladder, you run into more and more developer friendly, as opposed to machine friendly, code (e.g. C++). You are likely to see OO code more prominently in higher-level GUI based components of the OS (i.e. Explorer, Instant Messenger, Internet Explorer).
The very next version of the OS which will be released is called Windows.NET Server. Windows .NET Server Beta 3 includes technological improvements to make the system more secure, manageable and scalable than Windows 2000 Server. Windows .NET Server now includes the .NET Framework that delivers the infrastructure to build, deploy and manage applications that fundamentally allow for rapid change to organizations business models.
As for farther out the next business platform, I’m not sure. What I can tell you is that on a company wide scale, Microsoft is moving toward service oriented offerings, and in the service oriented world it makes more sense to continually provide smaller software upgrades than to waterfall a huge update every few years. In a world where components are continually being upgraded over the wire, I can see a definite reason to develop those components using the .NET runtime: small exe size.
8. How DirectX games are going to be developed in the future? Will .NET also have a solution for web-launched games? Also, how feasible will it be to write games in C# instead of x86 assembly, C, or C++?
Zac Woodall: Though it is certainly possible to write games in C#, and several internal Microsoft programmers are indeed building “arcade pack” type games using the language, tool, and framework, the best performance for the most extensive use of graphics will still likely come from C/C++. To put it plainly, if you’re doing limited graphics work, C# with or without unsafe code will be fine. If you’re building the next great first-person shooter, you’d probably want to stick with C/C++.”
9. I know that you have used BeOS and you are familiar with the BeOS attributed file system and query system. Windows XP, with the use of NTFS 5 has pretty much the same capabilities, but “restricts” Explorer to only activate attributes for mp3s, images and albums. Why not switch over completely to such a system and maybe add the MIME file typing solution on XP?
Zac Woodall: NTFS actually has supported streaming of data along side files since the NT 4 era, so this ability in itself is not particularly new. To be honest, I believe that exposing features of the OS is the job of the application developer. Explorer has taken the time to add support for streams on particular file types, which in my opinion is a great addition, but I do not believe that it is appropriate to bombard users with information about every single file. I think that would create confusion among some of the less technically savvy Microsoft users. Again, to remember the focus of Windows: Windows is designed to be used by your grandmother, as well as your boss. Had explorer been purely intended for developer use, I would suggest a more general mechanism for editing streamed data, but it wasn’t. As further qualification, the relationship between Explorer and NTFS is not my true are of expertise.
10. How does it feel working for Microsoft? Do you guys have fun over there or do you work “20 hours a day” as a Microsoft job description once stated?
Zac Woodall: Microsoft is the best company a developer could ever want to work for (assuming s/he wants to get paid, and not live out of a briefcase). What do I love most about Microsoft? I get the chance to work with a group of people widely considered to be among the brightest Software Engineers in the world, and the work that I personally do has a direct impact on millions of people’s every day lives. You just can’t beat that for feeling like you’re really making a difference in the world and where people are headed as a species.
I love the fact that one of my family members from Arkansas who doesn’t even own a computer can say, “What’s your job, Zac?” and I can give them a reply they understand, “I work as a software developer for Microsoft”.
I love to work with the people I work with, they are without question the brightest group of single individuals gathered in pursuit of a common goal I have ever had the pleasure to be a part of. Some people think that Microsoft employees only know Microsoft, that we just have no idea what else is out there. The fact of the matter is that I work with all types of people from all around the world, with all kinds of experience under their belts (heck, I was a UNIX system administrator while in school before I came here; not only that, but I was a Mac freak to boot! This type of background is not uncommon among developers here, just like any other professional software development house).
I like the fact that I work with young people. The oldest guy on our team of 18 developers is in his mid-thirties. I like the fact that I work with people who accomplish goals. Instead of saying, “Wouldn’t it be nice if…” they are out there making the future happen, one line of C code at a time.
Finally, I like the free beer. We spend a good deal of time in team building exercises, like go-cart racing, playing X-Box, Waterskiing, attempting the Milk Bet, or just drinking beer and listening to music out in the patio around the fountain. Every day I go for a walk around our campus, along the trails through the forest, by Lake Bill, and past the picnic tables and the big fountain outside building 8. On top of all this, the pay is good, and the benefits are better. Plus, even though I’m a dev, I periodically get the chance to travel on business. There’s nothing quite like the feeling of 400 people paying good money to come here you talk, and still having the wherewithal to laugh at your stupid jokes.
As far as “20 hours a day” goes, I don’t think I’ve ever done that. Our work policy is: get your work done. I tend personally to be a bit of an overachiever, and have spent my share of 16 hour days at work. I’m more the exception than the rule though. Many Microsoft employees work a typical 8-10 hour day. We truly work on flex time though, so some people show up at 8am (like me) and others cruise in at 11am. It all depends on how you want to orient your schedule. As a plus, we get free sodas/drinks and most devs get their own office; no cubes for me thanks.
Oh yeah, one more thing: unlike College, I almost never work on the weekend, because I don’t have to. I love my job!