This is a great video for aspiring managers. Excellent production as well.
I may have hit a chord with the management theme last week, lots of offline feedback on that post. I’ll post on the topic again to see if I can turn a data point into a trend.
At Microsoft we have a competency called “Cross-group Collaboration” which is used to illustrate the degree to which one is successful in employing tactics like “managing without authority,” “holding others accountable,” “creating win-win situations” and all that. Even in writing that sentence I cannot help but surface some of the cynicism I have for those concepts.
The adult definitions are strikingly similar to the concepts we’re taught in pre-school:
Adult Definition
Childhood Definition
Facilitates "win-win" situations; works with others to achieve positive outcomes. Establishes working relationships with others to capitalize on ideas and resources for mutual benefit.
“When someone asks to use your things, you can't simply say, "no." Nor do you have to say, "yes". But if you decline to share, respect the other enough to either give a reason or suggest an alternative, such as "Let's take turns," "You can play with it, but only inside," or "That's my very favorite, but you can play with any of these."”
Read more: http://www.drgreene.com/qa/learning-share#ixzz111ynSn9n
This isn’t to say that I think we manage people like 3-year-olds. What I am saying that many of the competencies used in assessing our performance at work are basic life lessons in a specific context.
These principles are defined in so many places by so many people that their application takes on an artificial quality that separates the behavior from the intent. In the worst examples, these cross-group collaboration competencies are forged into instruments of career torture. Events in one’s day to day life evolve into context-free samples of how one is failing the basic rules of “don’t hit,” “be nice,” and “share your toys.”
Desire for excellent collaboration among individuals at work is not the problem. Defining attributes of successful workgroup collaboration isn’t the problem either; <recruiting commercial> Microsoft does well in defining what this looks like in our company. Microsoft spends a lot of time on Career development for employees. The model we use for career development (and the tools available for employees to use in doing it) is something you have to see to understand. If it is not unique in the industry, I’m certain that few companies can come close to matching what we use here. </recruiting commercial>
The problem arises when the definitions for Cross-group collaboration become untethered from the purpose of doing it well. This post is about the purpose of cross-group collaboration.
What is the root of collaboration in the corporate environment?
(I’m sharing my own thoughts here, but here are some obligatory resources: http://www.creativityatwork.com/CWStore/OCAWe-book.htm, http://www.ami-communities.eu/wiki/Collaboration%40Work, http://tucsoncitizen.com/wise-work/)
My mental model for the problem is as follows:
If Microsoft was a company of one, this would all be so easy. I would go ask a bunch of people what they wanted in a software package, write some code to meet their requirements, test it myself, ask them to help me test it, figure out how to package and price it, spend some time on the road selling it, and eventually get back on the treadmill and do it all over again.
Because I would always have all the data all the time, and my ability to relate business functions is dependent only on my memory, I would have little need for anything beyond a day planner and a notebook to record notes for future reference.
Because I have two young children at home, I am unable to sustain this life. I need help. Much like cell division, I need to produce more people to do the work. For each cell division capacity is increased by 2 and/or workload is halved. The largest tradeoff I consider in adding people is the degree to which work is divided into autonomous functions vs. roles where information must be shared between the parties. Where I now depend on the second person for information, I create a potential communication problem.
Unfortunately humans aren’t perfect communicators, and adding people introduces inefficiency that accumulates with each cell division. Capacity falls somewhat short of doubling with each cell division, and workload absorbs that impact. Each cell division might separate half of the existing work, but the burden that collaboration places on people adds new work. I could introduce some cute mathematics and limit equations here to illustrate the example, but the concept is simple and doesn’t require that.
At some point after a large number of cell divisions, 1,2,4,16,256, the burden of collaboration on each cell’s workload, combined with the cumulative productivity loss across all these functions requires some solution. Welcome our new “management” team; people who are put in place to reduce the efficiency drain and to reduce the net workload effect collaboration places on individual cells. They do by organizing, filtering and sharing the relevant details across different functions in the organization. This solution is a shortcut, because we’re taking a bet that we can’t make people perfect communicators, we have practical needs which force us to do something.
For those who have a pessimistic view of the role of management, take note. I’ve encountered many folks who view the role of managers as reducing vibration within a system. I see it differently. The essential role of management is to reduce the efficiency drag and workload burden inherent in organizations where the role scope is narrow and dependent on the output of others. (The role of ‘leadership’ is different, and perhaps the subject of a future post.)
This is also why “the smartest person in the room” is often the last person you’d want managing a team. People who don’t feel like they should depend on others generally won’t. They make poor facilitators of collaboration. Subject matter expertise can aid one’s ability to communicate and to close gaps, but toy sharing and subject matter expertise are different skill sets. Effective managers are ones who can facilitate productive interactions. Subject matter IQ helps, but if nobody likes working with you it won’t matter. This reminds me of an old saying, “If you want to go fast, go alone. If you want to go far, take a group.” I don’t know who said it, but it makes sense.
We are not a company of one. I believe we have more than 75k employees (estimating conservatively because I’m too lazy to look up the actual number). At a company of this size, there are many, many layers of management. We use complex systems to facilitate information sharing and the collaboration that is required to keep so many cells functioning as a unit. It is imperfect.
For all the models, systems, SharePoint, and other things we use, nothing is more important than the ability of people to connect with each other. This is why we care so much, and this is why it looms large in performance discussions. We value the ability to collaborate and to work well within our organization, regardless of how the imperative is encoded. Whether you learn it in Kindergarten or on the job, cooperation matters because it reduces drag.
Employees and managers are cogs in a functioning system; they are not independent agents acting in each other’s (presumed) best interest. Collaborating well in the corporate environment comes down to your ability to identify mutual goals, move quickly through the ‘who does what’ parts, and to use that framework to measure and communicate progress. And it requires you to be nice to your neighbor. For all the explanation, the strategy is basic and easy to employ.
Sadly, another lesson I had to learn the hard way.
Tossing up a few useful links and a few random comments to go along with it.
Taking a left turn for a moment on the software talk.
I’m at a point where I have to vent on a topic, and no better place to do it than to the anonymous reader. For some reason I’ve been in a lot of these lately (usually the presenter or I am needed for some reason; not as the presentee), and I’m at a point where I just have to empty the chamber on the reviews that are failing for lack of experience / guidance on how to do them well.
With this and so many other things in my management career, I am compelled to teach people to avoid the same mistakes that I make / made. With my enthusiasm for developing people is combined a new perspective of "the other side of the table." I understand now what I could not understand before.
I used to be so bad at this. (Maybe I am still not very good at it.) At some point by design or by intervention, a meeting shows up on the calendar titled "business review" or something similar. These are the dreaded "tell me what you think is important enough for me to know" type meetings, they are common in large companies, where high-level managers don’t have great visibility into the daily lives of people in their organizations. I’m in my 11th year of practice, it took me quite a few to figure this stuff out.
I thought I would share my thoughts on what makes a good review. Having seen enough of them go the wrong way, and being on a streak of reviews that have been moderately successful, I can summarize what I believe the formula to be.
Admit to yourself up front that it matters to your career, because it does matter. There’s no shame in wanting your exec reviews to go well, there is no shame in preparing. For most of us, interactions with your manager's manager and their manager are defining moments that are often repeated in your performance review.
Realize that your (executive) cares most about current/future problems and your role in solving them. One of the most common failures of exec reviews is the glorified "status report" where a person recounts recent history, particularly when it feels like a pose-down.
Demonstrate mastery by understanding the most important challenges in your area as your executive understands them. What makes you interesting to them is how you are helping address the larger challenges they face in running the business. There are many pivots here, many pitfalls. Not everything has a bottom-line impact, it's fine if your problems don’t; try not to force the connection. Most executives see through it and check out of those types of discussions. It is worth recognizing that most executives have span of control over much more than the P&L, including operational issues, budget, headcount, IT, etc. Not everything in a business is about bearing new revenue streams.
Know what you want to get from the meeting. Have a point. Steer the conversation to a specific outcome. If you weren’t given a specific question to answer or topic to discuss, then you have been blessed with the gift of trust in setting the agenda yourself. Even if you’re only seeking a nod of approval for your approach to solving problems relevant to your business, knowing that up front makes a huge difference. Not knowing, or (especially in our culture) pestering everybody with questions/statements in the vein of "you scheduled the meeting, what did you want?" questions only shows that you are not enough in command of your subject area to a) predict what is needed, b) structure a meaningful dialog around it. I have said on many occasions where I am the presenter that "My objective for this meeting is to get (X) to say (Y) so that the entire team can hear it." I have structured some exec reviews around my intent to have everyone in the room hear a VP say a specific thing. It is a good idea to be precise about what you want.
Structure the conversation around your progress on these problems and the things that are preventing you from solving them. In the end the formula is simple. A brief introduction, followed by a sequential discussion of key themes / topics, presented in a simple pattern (and ratio):
Unless you’re building circuits or designing aircraft, you can fit all of that information onto a single slide for each topic.
Recite your recent history of achievements. Companies have performance reviews for a reason. Executive reviews are not performance reviews; it is not a time to recount past events. They don’t matter that much to solving present problems. It may also send a signal to your exec that you don’t view those issues as fully resolved (why else would you continue to talk about the past?)
Obsess over the "who owns what" questions (unless you’re talking about org planning). This is great evidence of the degree to which one has matured in their work approach. There is much written about the difference between managers and leaders. Managers obsess over rule-making and ownership. Leaders champion causes. Managers have subordinates. Leaders have followers. Dwelling on ownership (particularly in matrix-heavy organizations) is a pretty good sign that you’re not driving toward a result.
Overload with details; most of them don’t matter. This is related to a point below about how much information you choose to surface during the conversation. The more detail you add the more vectors you create for the conversation to go sideways. To the best that you can, keep the details constrained to those that are necessary to illustrate progress you’ve made, illustrate your plan to complete the rest of the work or to explain where you are blocked. Nothing else matters.
Speak of principles or topics with arbitrary labels. Ambiguity kills, be clear and precise. I was very bad about this one. I’d have super-detailed plans that I couldn’t easily reflect in a bullet point, so I’d give them a vague, cute label and get killed for it during the review. Admittedly I learned this more through teaching it than through doing it. In preparing my leads for meetings with my bosses I found myself asking them "what is that?" when I saw bullet points were I didn’t recognize the work. I kept pressing until a hyperlink to a plan / spec started appearing in its place. This turns out to be a good rule of thumb; if you can’t link to its description it might not be real enough to surface for a conversation. Having to decode concepts in meetings like this is a poor use of time.
Every bullet point in your deck can absorb the entire meeting. Be careful about what bullet points you put there. You have little control over the direction of the conversation, but you do have the power to influence the direction through the topics you raise. Bullet points are topics. Use them carefully and be prepared to defend each one as if it were the only topic on the agenda. Know your business.
Your executive is probably evaluating your long-term potential as they listen to you. The trick is in understanding how you are being evaluated. Rarely is the evaluation about the subject matter; the evaluation is how you explain the subject matter, how well you understand its relationship to broader business challenges or how well you can influence the thinking of people around the table by what you are discussing.
The advice feels a little basic, but it is wise to share the deck with everyone in the meeting before you get there. Know where you have agreement and where you don’t, and know what conversations will surface disagreement. Personally I don’t think it is necessary to avoid conflict in these conversations, most executives I have seen lament the anxiety over people having arguments in front of them. Executives like to be asked for their opinion on topics and to mediate tough topics from time to time. It’s what they are paid to do. I wouldn’t make a habit of starting fights in a forum like this, but it’s ok if everything isn’t perfectly aligned on your way in the door. Where it becomes a problem is when you don’t anticipate those disconnects.
In the end, knowing your business and knowing what you want the outcome of the meeting to look like will guide you to the right meeting agenda most of the time. You could bury yourself in the good advice of how to run a meeting, smelling good, dressing neatly and all that. But in the end this is all advice on how to get clear on your message, and to seek a specific outcome.
It isn’t that hard, right?
</rant>
Zombies coming up the hill to get me? -- the view from my office (via my (not an i-Phone) mobile phone) this foggy morning:
A while back I posted a scanning tool to detect the presense of Custom XML Markup in Open XML documents.
I wanted to provide an update for this tool to reflect the new Open XML SDK 2.0. The scanning tool has been recompiled against the new version of the SDK and should work a little better. Apart from that, I think the tool is the same. I don't think this one is lighting up the hit / download counts on my blog, but I wanted to post the update just in case. The attachment is a ZIP of an MSI. The tool is provided with no support or warranty, as is.
Resurfacing, It has been several months since I last posted. I have spent that time transitioning to a new role in Office sustaining engineering. I am the proud owner of a new title, I changed my office, my boss, my commitments, bought a mini-van and played 30,000 more songs on my Zune. My new team is responsible for Office updates (in many, many different forms.) Comparing this to my prior role, which was more about developer audience management (or "marketing" if you prefer a poorly descriptive shorthand), there are interesting similarities. As an audience manager we typically address problems at a segment level, enabling communities of people to be successful in more or less a programmatic fashion. We learn a lot about communities by engaging their members; you learn a lot in conversation with customers, as I did in engaging Office developers and by engaging executives in our customer briefing center. In my new role there is little difference; we are engaged frequently by our customers with feedback. Some of those discussions are about bugs, some of those discussions are about product changes, some of them are about support policy needs, etc. In the end, both the marketing discussion and the sustaining engineering discussion serve the same end – ensuring our customers have the best experience possible with our products. And it is for this purpose that I re-direct my comments on this blog. The quality of software should improve over time. This is an interesting aspect of our industry which separates us from manufacturing durable goods or textiles, and makes us more like health care or financial services. We are a service, we take pride in the work, and we’re here to ensure that our customers can utilize the service to their maximum advantage. I’m still me, and I reserve the right to point out things, but I probably won’t dedicate too much time to the file format conversation in the future. I'll also confess to not being in love with the look and feel of the new blog. The platform changed while I was away, and I haven't caught up enough to update the site template. I'll get to that soon enough, I care enough about typeface/color/layout to do it in my spare time between diaper changes. I look forward to sharing some of the more interesting tales about providing service to our customers. I am enjoying my new role, I have a great team and a worthy charter.
Resurfacing,
It has been several months since I last posted. I have spent that time transitioning to a new role in Office sustaining engineering. I am the proud owner of a new title, I changed my office, my boss, my commitments, bought a mini-van and played 30,000 more songs on my Zune.
My new team is responsible for Office updates (in many, many different forms.) Comparing this to my prior role, which was more about developer audience management (or "marketing" if you prefer a poorly descriptive shorthand), there are interesting similarities.
As an audience manager we typically address problems at a segment level, enabling communities of people to be successful in more or less a programmatic fashion. We learn a lot about communities by engaging their members; you learn a lot in conversation with customers, as I did in engaging Office developers and by engaging executives in our customer briefing center.
In my new role there is little difference; we are engaged frequently by our customers with feedback. Some of those discussions are about bugs, some of those discussions are about product changes, some of them are about support policy needs, etc. In the end, both the marketing discussion and the sustaining engineering discussion serve the same end – ensuring our customers have the best experience possible with our products.
And it is for this purpose that I re-direct my comments on this blog. The quality of software should improve over time. This is an interesting aspect of our industry which separates us from manufacturing durable goods or textiles, and makes us more like health care or financial services. We are a service, we take pride in the work, and we’re here to ensure that our customers can utilize the service to their maximum advantage.
I’m still me, and I reserve the right to point out things, but I probably won’t dedicate too much time to the file format conversation in the future. I'll also confess to not being in love with the look and feel of the new blog. The platform changed while I was away, and I haven't caught up enough to update the site template. I'll get to that soon enough, I care enough about typeface/color/layout to do it in my spare time between diaper changes.
I look forward to sharing some of the more interesting tales about providing service to our customers. I am enjoying my new role, I have a great team and a worthy charter.
A great thing about Microsoft as an employee is the ability to manage one's own career and to invest in one's own development by seeking new opportunities and experiences. Role changes at Microsoft are common, part of the unique cultural fabric that exists within our company.
Today I find myself in this situation. I have accepted a new role as Group Program Manager in our Customer and Partner Engineering Services team. In layperson's terms this means transitioning to the engineering org out of "marketing," and taking on a new team that manages (among other things) in-market products. I am thrilled to make the move, there are many areas of work on this team for which I have great passion.
In departing the Office Product Management group I leave behind a great team and many outstanding colleagues. I will certainly treasure the experiences I have gained in this organization. I'm not going that far, my new role will still have a strong customer focus, I will still work on Office and MBD products, and I'll still work in the same building.
As I ramp on the new role, I am going to shut down the blog for a while. There are many things to consume to prepare for my new role, so I need to go into a cave for a bit and study up. At some point I plan to return to blogging, but for now, I'm going to be a good student and concentrate on collecting input rather than generating output.
Here's where to go if you want to read blogs similar to mine:
http://blogs.msdn.com/johnrdurant
http://blogs.msdn.com/brian_jones
http://blogs.technet.com/office_sustained_engineering/
Thank you to the readers who have followed my posts and participated in them. I shall return .
On February 21, 2008, I posted on Microsoft Interoperability Principles, which are designed to make our products more open and more available to the broader software community. Since that day, Microsoft has made several strides in this area, too many to recount here and now, but largely explained by the Interoperability@Microsoft team.
Today we are making an important advance in the area of document format interoperability for Office, as part of our ongoing commitment to these interoperability principles.
After four successful Technology Previews, today we are releasing the 2.0 version of the Open XML SDK for Microsoft Office. Among its benefits, this release of the Open XML SDK is a significant step forward because of the amount and quality of functionality it provides to developers seeking to build document processing solutions without the use of Microsoft Office applications.
Today Visual Studio is the primary developer tool for Office 2010, and Visual Basic for Applications (VBA) is also widely used to extend and automate our Office client software. Traditionally Visual Studio developers build add-ins, integrations with SharePoint and other solutions that exist within Office products. In the past, one of the common developer tasks with Visual Studio and Visual Basic for VBA was processing of Office documents. This was typically accomplished with macros and scripts running inside client applications. This is sub-optimal for many reasons. Client applications are not optimized for large-scale automation, and in-client document processing solutions are error-prone as a result.
Document processing is spreading to mainstream development because of advances in more transparent XML-based formats and the associated tooling to modify documents represented in those formats.
The Open XML SDK improves the ability to process Office documents. Automation operations no longer require a client environment that was never really designed to support bulk processing solutions. With the SDK developers now have direct (element-level) access to a document's content. It is great for enabling solutions to extract, examine or modify a document's contents.
The SDK also improves developer choice and platform-neutral document interoperability. By freeing documents from their dependence on a particular application or platform, government agencies and other entities gain greater access to the information they store in their documents.
Many people will comment on the capabilities of the SDK. If I might recommend some resources to get started, I would point readers to the following posts:
Download the Open XML SDK 2.0 for Microsoft OfficeThis download provides strongly typed part and content classes for use with Office 2007 & Office 2010 Open XML documents. http://www.microsoft.com/downloads/details.aspx?FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0
http://msdn.microsoft.com/en-us/office/ee441239.aspx
http://msdn.microsoft.com/en-us/office/bb265236.aspx
http://www.openxmldeveloper.org
http://blogs.msdn.com/johnrdurant/archive/2010/03/15/open-xml-sdk-2-0-for-microsoft-office-is-live.aspx
http://blogs.msdn.com/erikaehrli/archive/2010/03/15/open-xml-sdk-2-0-rtm-articles-videos-code-snippets-and-resources-on-msdn.aspx
http://blogs.msdn.com/ericwhite/archive/2010/03/15/release-of-the-open-xml-sdk-2-0-for-microsoft-office.aspx
I am very excited for the release of the Open XML SDK, and I hope that the Open XML Development community will be as well.
If you are new to Office development, or are if you are looking to learn more about what's new in Office 2010 for Developers, we have a new tool available for you. Today we are publishing the Office Developer Atlas, a tool for self-training on Office 2010 development. This is a great resource for you to learn about Office 2010 Development.
Hosted by John Durant, the Developer Atlas takes a modular approach toward understanding solution development with Office, and is complete with videos, screen shots, samples and so on. I encourage you to have a look at the Atlas and give it a test drive.
Happy Coding!
Hello, this is Michael Kiselman again with exciting news related to the Office 2010 compatibility program and tools.
We have many participants using and testing the Application Compatibility tools for Office 2010. Thus far we have received much feedback from the community and are making improvements to the tools as a result of that feedback. As it goes with many pre-release programs, particularly ones which have no real precedent, the questions and feedback we are receiving is generating more questions and the need for even more feedback. As we near the launch of Office 2010, we want to double-down on our beta program for the tools and content. We're going to put some skin in the game to increase the rate of feedback we're getting on the materials.
Among the areas where we are seeking feedback are bugs in the OEAT and Code Compatibility Inspector Tools. We are going to conduct a public bug hunt, and we are going to offer prizes for those who can help us find defects in our tools.
For our bug hunters we are offering 2 prizes – XBOX360 Elite and 8GB Zune.
To win the prizes, all you need to do is to download beta of the Office Environment Assessment Tool (OEAT) and beta of the Office 2010 Code Compatibility Inspector, run them and report any bugs you discover to ofappcpt@microsoft.com before April 9th. If we are able to reproduce your bug or you can help us identify a defect in the tools, that becomes your sweepstakes entry. From the submitted and approved bugs, we will randomly select winners after April 9th.
We are looking forward to your feedback! Happy Hunting!
The Official Rules for the Sweepstakes are located here.
On Brian Jones' blog today, Zeyad Rajabi has posted the source code for the Custom XML Markup Detection tool from my last post. This should give readers a bit more insight into what it is looking for to identify affected documents.
The source is provided to you as an example of the Open XML SDK's incredible utility and power, but also for you to customize the tool for the purpose of scanning other areas of documents or to implement the scanning or reporting activities differently.
Quick Start The Installer is located here. (update: A new version of the installer is here: http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Components-PostAttachments/00-03-35-69-65/Custom-XML-Markup-Detection-Tool-Setup.zip)
Background readingWhat is Custom XML- ... and the impact of the i4i judgment on Word, Regarding Custom XML Patch distribution and availability, Associating Data with Content Controls,Using Content Controls vs. Custom XML Elements,
After we made a patch available for Word related to the recent court ruling, we were asked by a handful of customers if there is a way to identify document files or solutions which may be affected. One way to identify solutions within an organization that may be affected is to scan your existing XML format based Word files (.docx and .docm) for the presence of the markup in question.
On my blog today I am posting a no-cost, unsupported tool to help you scan repositories for documents which may contain markup that would be affected by the patch. We are also providing the source code for the tool in case you would want to modify it to scan for specific directories, or to add additional functionality to the tool. It is written in C#.
Results provided by the tool can help you to identify possible areas of impact for your specific IT environment.
The documents identified by the tool as containing custom XML markup are themselves not affected by the ruling, and require no action on your part. What positive scan results will indicate are documents that will behave differently when opened in patched and unpatched versions of Office.
Positive results concentrated on a single machine or set of machines may also indicate the presence of a solution or template generating the affected markup, and may indicate the presence of a solution that will perform differently when opened by a patched or unpatched version of Word.
The scanning tool will work when run by a local user on a local machine. For SharePoint and other systems whose directories are identifiable by a UNC path, the scanning tool can be used on a server to examine documents stored within those systems.
IT Administrators can configure a login or startup script for computers in their domain to copy the .exe file to a local machine, and to execute the command line tool. Alternatively, a startup or login script can be created to run the installer locally, and execute the command line tool. For more information on login and startup scripts, visit http://www.technet.microsoft.com, or http://technet.microsoft.com/en-us/magazine/dd630947.aspx.
1. Run a command prompt window (Run as Administrator)
2. Go to the directory where you have installed the Custom XML Markup Detection Tool a. By default, this directory is "C:\Program Files\Microsoft\Custom XML Markup Detection Tool\"
3. Run the tool with the following command: DetectCustomXMLMarkup.exe [directory path] a. For example DetectCustomXMLMarkup.exe c:\temp
4. At this point, the tool will tell you how many files it is scanning and how many files it detected with Custom XML markup
5. An "output.log" file will be created, in the same directory the tool was run, that summarizes the findings of the tool. This log file includes information on files that include Custom XML markup and/or files that the tool encountered errors while scanning. This log file is a tab delimited text file, which can be opened in Notepad or Excel. Here is an example log file opened in Excel:
Notes: The tool works with directories and UNC file paths.
The Installer is located here.
Taking a break from Custom XML for a moment. more posts on the topic are imminent.
Jennifer Michelstein announced the Office Ribbon Hero today, a fun thing you can install with Office 2007 or the 2010 beta to test your depth of usage of Office.
The challenge, of course, is for you to beat me. :) Good luck with that.
Really, this is a tool that will help you become more proficient in using some of the capability in Office applications. And let's face it, there's nothing that says "I'm smarter than you" like being the best on your block at using Excel.
You can get it here: http://www.officelabs.com/ribbonhero
Background readingWhat is Custom XML- ... and the impact of the i4i judgment on Word, Regarding Custom XML Patch distribution and availability, Using Content Controls vs. Custom XML Elements, Scanning tool to detect documents with custom XML
......
In a previous post on Gray's blog, I discussed an approach for building a content publishing system using styles and content controls. This is only one of the scenarios where content controls are useful. Another scenario is where you have a sophisticated document generation system where content controls are replaced with automatically generated text. The replacement instructions could be fairly elaborate - perhaps including the database server name, table name, filter, and column name, for example. In a different scenario, you may have a system that automates testing of code listings that are contained in documents, and you may have build instructions for each snippet in the document. I blogged about this approach in OpenXmlCodeTester: Validating Code in Open XML Documents.
Note: I co-wrote this post with Anil Kumar. Many thanks to Anil for writing the managed add-in code.
In all of the above scenarios, you may have the need to associate arbitrary amounts of data with each content control. You may also have the requirement that the document author can create and edit this auxiliary information. Content controls don't directly have a facility for storing and maintaining such information, but there is a fairly easy approach to solving this problem.
Note: In this post, I refer to 'custom XML parts'. Open XML documents are stored using the Open Packaging Conventions. They are essentially zip files (packages) that contain multiple XML and other types of files (parts) within them. These parts are related to each other by a very specific mechanism called relationships. A custom XML part is a part (a file in XML format) of your own design stored in the package. You can design your own XML vocabulary for this part. I've written an MSDN article, The Essentials of Open Packaging Conventions, which explains what you need to know to work with packages and parts. 'Custom XML parts' in this sense are not affected by January 2010 update for Office Word that Gray has blogged about previously. Custom XML parts will continue to be supported in Word.
The gist of the technique for associating data with content controls is as follows:
You create a custom XML part that contains some XML that looks something like this:
If you need to maintain more than one value for each content control, you can have as many child elements of the Content element as necessary.
Each content control contains a unique ID that is assigned by Word upon creation of the content control. The data in the custom XML part is related to the content control using this ID. Following is the markup for one of the content controls that is related to the above XML:
You can make it easy for users to edit this auxiliary information in a custom task pane. To create this functionality, you create an Office managed add-in. When the focus is in a content control, the task pane is updated with information from the custom XML part, and when the user updates the data, the managed add-in updates the custom XML part. The following screen shot shows the task pane that is created by the example presented in this post:
As the user moves from content control to content control, the example updates the contents of the task pane. If the user moves to text in the document that is not in a content control, the example clears the text box in the task pane, and disables the "Update CustomXml Part" button. Another approach that you can take is to hide and show the task pane as the selection moves into and out of content controls. The example contains commented-out code that shows how to do this.
This example relies on the user pressing the "Update CustomXml Part" button. You may want to take another approach of updating the custom XML part data when the user changes any data in the task pane.
Custom Task Panes Overview provides a detailed explanation of custom task panes, and how to create them. Deploying a Visual Studio Tools for the Office System 3.0 Solution for the 2007 Microsoft Office System Using Windows Installer provides what you need to know to deploy an add-in.
There are three source files for this example:
ContentControlInfoAddIn.cs
Implements the add-in, registers various event handlers, and creates and updates the custom XML part.
ContentControlInfo.cs
Contains the event handlers for the user control that is placed on the task pane.
ContentControlInfo.Designer.cs
Contains the designer generated code for the user control.
You can download the code, along with a Visual Studio solution here.
Background readingWhat is Custom XML- ... and the impact of the i4i judgment on Word, Associating Data with Content Controls,Using Content Controls vs. Custom XML Elements, Scanning tool to detect documents with custom XML
A few questions have popped up about the patch for Custom XML and I thought I'd take a moment to address those. First, please see the patch posted on the public download site.
This patch will be not "pushed" through our update channels , because existing customers are not required to install it.
Will the patch be "pushed" to my system? Is this an automatic update?No. The patch will not be made available from Microsoft Update or Office Update, and will not be "pushed" to any user's machine by Microsoft services.
What about future Office updates such as hotfixes or Security patches? Will the patched version of Word require different updates?We will continue to provide security updates and hotfixes that work with both patched and unpatched versions of Word.
How can I tell if a document uses CustomXML markup?The easiest way to know is by opening the document in an unpatched version of Word and to look for the "pink tags" that typically delineate CustomXML markup. Alternatively, for large volumes of documents, we will make a document scanning tool available which will evaluate .DOCX and .DOCM files for the presence of CustomXML markup. My next blog post will offer more information regarding this tool, which we plan to make available at no charge. Because .DOC files are not affected, we do not plan to offer a scanning tool for them.
Background ReadingWhat is Custom XML- ... and the impact of the i4i judgment on Word, Regarding Custom XML Patch distribution and availability, Associating Data with Content Controls,Scanning tool to detect documents with custom XML
In my last post, What is "Custom XML" . . . and the impact of the i4i judgment on Word, I took some steps to identify the areas of Word that are affected by the ruling. This generated a handful of questions from people seeking to understand how they should consider moving forward with solutions in Word.
It is important to understand that using custom XML markup isn't the only way to supply semantic meaning to rich markup. Content controls provide an excellent user experience for this.
The following is a guest post by Eric White, explaining an approach for using styles and content controls for implementing an authoring environment for a publishing system. If you haven't read Eric's blog before, I highly recommend it as a source for learning Open XML and Word development. Eric is among the most knowledgeable about development using Open XML.
..........
I've seen publishing systems that use styles as a means for supplying semantic meaning to content, but this is problematic in some scenarios (but the problems are solvable by content controls). You could format the above document to look like this:
The above screen clipping uses an option in Word that allows you to display the style name for every paragraph to the left of the paragraph.
You could then write a transform from this to the desired format. This approach is problematic because the approach for extracting content involves grouping together adjacent paragraphs of a particular style, and this can lead to an idiosyncratic experience for content writers. For example, I've seen a system where the writer needed to supply a specially formatted line for a code block that would indicate the language for the code. If you needed to supply code snippets for multiple languages, you *needed* to supply a blank line formatted as normal between the code snippets:
This is, of course, problematic. If the writer did not supply this blank line, then the transform would conjoin the two code blocks. I suppose that the developers writing the transform could watch for the magic lines that contain [c#] or [vb], but writing code that looks for magic values is never a good idea. What if there is some valid code that contains that exact string on a line as part of a multi-line string? The transform would be broken, and worse, the writer would need to hack the code in some way to make the transform work properly.
If I were designing a content publishing system that needed to allow writers to work in Word and then transform the document to another format upon publishing, I would design it to use content controls. It is far better to use content controls to group multiple lines together, and to supply appropriate metadata about those lines.
The transform can then extract the contents of each code block in a deterministic fashion.
Here are the characteristics that I would give to a publishing system:
· If there is a direct transform from a single paragraph in a source document to a corresponding construct in the transformed document, then use paragraph styles. You can alter the user experience in Word to allow only valid styles.
· If there is a direct transform from runs in a paragraph to desired constructs in the transformed document, then use character styles.
· Using styles gives the writer a great user experience. The Word user interface is optimized to allow writers to select paragraphs, apply styles, specify what the style for the paragraph following should be, and so on.
· If you need to select multiple paragraphs for transform to some construct in the transformed document, then use content controls to group those paragraphs. This also gives a great experience. The metadata about grouped paragraphs (the code block in the above example) is clearly specified, and not through some magically formatted line or some other questionable technique. If you are the developer for this system, you can supply macros for easy insertion of content controls, although it is super easy to insert content controls using the stock user interface.
Using styles and content controls gives a user experience that is quite different from editing XML. Instead of inserting elements that surround content, you use styles to supply semantic meaning to paragraphs. If you need to associate groups of paragraphs together, you surround them with a content control.
Here are some additional resources to help you work with content controls:
Using LINQ to XML to Retrieve the Contents of Content Controls
Using DocumentBuilder with Content Controls for Document Assembly
Creating Data-Bound Content Controls using the Open XML SDK and LINQ to XML
I recall saying recently that "this is my last post for 2009." Whoops... I don't think I was anticipating this. I watched with interest yesterday the coverage and reaction to the i4i judgment. I am not keen to share my own thoughts about the case here, but I would like to offer clarity around the specific area of Word in question, and suggestions for what people can do about it if they are using that functionality today. There is much confusion about the part of Word that is actually affected.
First, some things to understand:
We do not anticipate any interruption in the availability of Word or Office 2007. Additionally this ruling has no impact on the scheduled availability of the 2010 Office version which is planned for the first half of CY2010.
Current users are not affected. If you are using the custom XML tags in Word 2003 or 2007 (these show up in Word as Pink Tags around tagged content), you are free to continue doing so with the products you have already purchased.
Open XML standards (all ECMA and ISO versions) are not affected. Even if Word's specific implementation of custom XML support does infringe the i4i patent (which Microsoft does not believe to be the case), i4i has never claimed that its patent is essential to the OXML standard.
Content Controls of Word (screen shot below) are not affected. In Word 2007 and Word 2010, this is a common method of binding document content to data stored in a custom-defined schema within a document.
The functionality that is in question is indicated by the screen shot below. Custom XML Tags in Word documents are visible in the Word user interface as Pink Tags surrounding tagged content in a document.
What you can do if you have questions about your solutions that use Custom XML Tags:
First, download the Office 2010 beta and test your solution. If your solution works in Office 2010, it does not depend on the functionality in question. If your solution does utilize Custom XML Tags, consider re-implementing the solution using Content Controls. Detailed guidance on the use of Content Controls in Word 2007 can be found here. Also note the Word Content Controls Toolkit on CodePlex. The Open XML SDK, of course, is quite useful for getting people up to speed on developing solutions for Word and Open XML.
Update: Additional Detail
In response to several inquiries on the topic, I have included additional text describing the feature area that is affected vs. what is not affected, including links to KB articles which illustrate the capabilities in more detail.
Affected:
Word 2003 and Word 2007 distributed prior to 1/11/2010 can read files that contain XML markup (ref: “Understanding Word's XML Markup [Word 2003 XML Reference]”, http://msdn.microsoft.com/en-us/library/aa212889(office.11).aspx. When custom XML markup is present, Word delineates this content in a Word document which allows it to later save the file to .DOCX, .DOCM, or .XML with that content marked up.
The Word 2007 product distributed by Microsoft after 1/10/2010 will no longer read the Custom XML markup contained within .DOCX, .DOCM, or .XML files. These files will continue to open, but the Custom XML markup tags will be removed. Custom XML markup stored within .DOC files will not be affected by these changes. Word 2003 and existing installations of Word 2007 will not be affected by this change.
Not Affected:
Word 2007 also added features allowing Content Controls to map to XML data stored in a DOCX or DOCM file (ref: “Mapping Word 2007 Content Controls to Custom XML Using the XML Mapping Object”, http://msdn.microsoft.com/en-us/library/bb510135.aspx). Content Controls and XML data stored within DOCX or DOCM files will not be affected by this change.
On December 15, 1999, I was sitting in my home in England (near Reading), having just wrapped up a trip to Salzburg to fix a huge problem related to classified pagination. This work was sandwiched between several Y2k conversions (in reality it was more like "2004-proofing" due to the size of the field containing the count of seconds from the system's base date). I was exhausted, done with traveling, in dire need of Mexican food (I defy anyone to find great Mexican food in Europe), and very much over the novelty of bitter-tasting, motor-oil thick beer. The beer thing was a big deal, growing up in an area where the beer selection typically included "both kinds," (as in Bud AND Bud Light).
Fast-forward to December 15, 2009. The Y2k problem is rarely mentioned, I get all the great Mexican food I want. Classified pagination (i.e., printed page layout for thousands of newspaper classifieds) has more or less vanished as a technology category. And I have stopped caring about the beer that I drink (although there is a minimum quality standard. Sorry, Lucky Lager). Life is better all the way around, and not hoping for my favorite beer saves me much disappointment at NFL games and folk music festivals.
Today I find myself elbow-deep in my 2010 plan for Office developer. We've been spending a lot of time during the launch phase getting oriented to the pressing needs of coders working on Office applications. Our readiness material (and information channels like my blog) reflect those needs (hopefully.) 2010 is a great release for a lot of reasons. We have a rich new set of capabilities, spanning across PC, Phone and Browser.
But I thought I'd offer some thoughts about my 2010 plan, to set an agenda for the upcoming year.
Educate on VBA in Office 2010. (Start here) Maybe I say it too much, but VBA is supported in Office 2010, we like VBA, and we are encouraging people to continue using VBA. Despite rumors to the contrary, VBA remains an important part of Office. In 2010, we will continue to evangelize VBA in Office in various forums. These activities will include various sponsorships, contests, etc.
Drive Adoption of Visual Studio 2010, VSTO and Office 2010. (Start here) Feedback on the combination of these two beta products is very positive. Particularly with .NET 4.0 and PIA-less deployment, VS 2010 offers Office developers lots to work with and should make life much easier.
Educate on the use of the Open XML SDK. (Start here, http://www.openxmldeveloper.org) While the format debate lingers on, development on Open XML is growing very quickly. We're now well past 10k members on OpenXMLDeveloper.org, (12k, to be more precise) with site traffic growing to match. the Open XML SDK is the fastest way to get started with Open XML Development, and (again), we're seeing download counts for the SDK which illustrate the traction that the format is gaining. FWIW we're still not getting any questions about ODF solution development in Office.
Continue building awareness for the Application Compatibility Tools for Office 2010. We're off to a very strong start on this program, and the next few months are about landing these tools and documents into the various service provider channels we offer at Microsoft, like DDPS, MDT and others.
Office 2010 readiness for Office Business Applications (OBA). (see it here: http://www.obacentral.com) In building some of the lower-level building blocks for the Office 2010 launch (see above), we put the topic of OBA off until the second half when we could give it due attention and rigor. Building business applications or front-ending LOB solution in Office is a primary investment area for us, based on the feedback we're getting from the community at large. In 2010 we'll turn the crank on readiness for OBA for Office 2010. With the recently announced DUET updates, we've got a great starting point. But there's lots to share with BCS, SharePoint integration and several other topics.
I always enjoy spending time recapping the year gone by, although I'll spare folks the keyword lists (and a lot of copy paste), by re-treading some of the events about which I was compelled to comment during the year.
The most popular post on my blog: Office 2007 Service Pack 2. I posted 3 times on SP2, and those posts were easily the busiest. 1, 2, 3 if you're interested. SP2 was important for a few reasons. We introduced Save as ODF & PDF into the mainstream products, unfolded a bunch of Outlook perf improvements, and a handful of other things. I recall that being a super busy time.
The most commented: "Rethinking ODF Leadership" and "Clearing up a few matters with respect to ODF and SP2." 102 comments published on that post, it's quite a few. Definitely started a discussion with that post :). Although 6 months later, I observe that this discussion has quieted considerably, and really feels like "internal business" when it comes to reading about the evolution of ODF. I understand the 1.2 draft is up for some vote / approval, and there is dissention among ODF supporters about whether or not 1.1 should be standardized and so on. Because I don't hear much (anything) about ODF from the Office developer community, I don't get that involved any more.
As always, though, I will be interested to see if ODF 1.2 passes the same evaluation criteria to which Open XML was subjected. As we saw with SP2 and ODF in Office, Open XML was sharply criticized for being "application dependent", whereas ODF and aligning to another vendor's implementation of the NON-standard 1.2 was upheld as something that Microsoft should have done. Very confusing. it was felt that Open XML should not be a standard because it had alleged dependences on Microsoft Office, but the only way to really get interoperable ODF was to base that on a product's implementation, and we were being positioned as "incompetent" for not doing that. I don't pretend to understand that contradiction, but I eventually just let it go. My focus for the Office developer audience are the technologies and tools that our developers use. The truth, explained here, (docx), (odt), is quite clear. Open XML is more widely adopted, and that is reflected in the inquiries we get for developers building productivity solutions.
Posts that were most surprising in terms of traffic: SharePoint Conference. I posted on the relocation of Office Developer Conference to SharePoint conference as a courtesy, surprised to learn of the anticipation of ODC. I'll take a little credit, then in the outstanding turnout for SharePoint conference, that show was probably the most surprising event for me in 2009. It was a huge show, easily the biggest I attended this year. InfoPath was booming with traffic, as was Access. That was a very exciting week. Not to mention that I made a new friend. And yes, it is hip to be square.
Posts I enjoyed writing the most: When a thing that you're directly responsible for is downloaded 100,000,000 times, you tend to get pretty excited about that. During the Open XML and ODF "debate", it became very tough to separate conversations about readiness for a new file format (a very mechanical, basic thing). Especially considering the original goal (prior to any discussion about standardization) - getting our apps out of the binary formats onto more sustainable XML-based formats. This post was a fun one for me, I took about 5 minutes after I hit the publish button in Word and thought about how large 100,000,000 is as a number. FWIW, with 100 million being a fairly good illustration of its utility, I stopped counting closely after that post. I haven't looked at the number in quite a while. I suspect it has slowed a bit with the (now) widespread deployment of Office 2007.
A close second to that post is my post about 5 years at Microsoft. I got a lot of great feedback about that post from people across the company. I was already feeling very good about my role here, but that post definitely gave me a boost, and to the folks who took time to contact me offline, thank you for the feedback.
This will be my last post for 2009. As always, I thank you for your readership, and I'll see you on the other side of the new year.
Continuing on the theme of Q & A for Office 2010, I thought I'd add a few questions, answers and pointers to get you oriented to some key topics relevant to 2010. We get a lot of interest from folks who are just starting to code on Office, I thought it worthwhile to run down the list of FAQ's as a shortcut.
Q. Are you supporting VBA in Office 2010?A. Yes. http://msdn.microsoft.com/en-us/library/ee814735(office.14).aspx will get you started. Office 2010 VBA is a live and well.
Q: What is the best way to get started with Open XML?A: I strongly recommend using the Open XML SDK for real-world Open XML development. This short video clip from Zeyad has a pretty good explanation of why that is the case.
Interview with Microsoft's Zeyad Rajabi from OpenXML Intergen on Vimeo.
Q: What is PowerPivot and where can I learn more about it?A: Start here for PowerPivot: http://www.powerpivot.com/index.aspx. Lots of promises out there for managing the bulk of data in global analysis type problems, but very few jaw-dropping experiences like this one. Best to just install it and try it for yourself. Where other products are struggling to create a connection to live data (rather than snapshotting it in a workbook), Excel and PowerPivot put BI in the hands of the masses like nothing before it has done.
Q: What is the most common way to build a solution for Office?A: Hopefully this answer is only news to new developers, but Visual Studio with VSTO (Visual Studio Tools for Office) is the best, most commonly used and easiest way to build add-ins and solutions. VS & VSTO allow you create managed-code solutions for Office. For all new Office developers, I would recommend starting in VSTO to get you up to speed. VSTO is great at addressing many of the small issues that are involved with building and deploying add-ins to our products.
Q: What is OBA? A: Office Business Applications (OBA) refers to the concept of Office being used as a front-end for line of business data and solutions. Increasingly this is the mode of Office development, beyond the VBA automation and add-in development that we've had in the past. Because users are familiar with Office, developers can code apps within an environment that has a very short learning curve. Analyzing data in Excel is natural for users of Excel. Scheduling meetings in Outlook is the same, whether that meeting is booked in SAP, on Exchange or to your Live calendar. There are tremendous advantages to surfacing LOB Data and process to users in Office, one of which is masking business process complexity for novice users inside of easy tools that they already know how to use. To see some examples of OBA's in action, visit http://www.obacentral.com. Two good books on building OBA's that I can recommend: http://www.microsoft.com/learning/en/us/book.aspx?ID=9471&locale=en-us, and http://www.amazon.com/Pro-SharePoint-Solution-Development-Sharepoint/dp/1590598083.
Q: What's playing on your Zune right now?A: That would be "Music from the North" by the Jayhawks. Album that is great from top to bottom.
Q: What are the best web sites for learning Office development?A: Off the top of my head, here's a list:
- http://msdn.microsoft.com/en-gb/office/default.aspx- http://msdn.microsoft.com/en-gb/office/aa905363.aspx- http://msdn.microsoft.com/en-us/office/aa905371.aspx- http://www.openxmldeveloper.org
And some non-Microsoft sites that are worthwhile:
- http://pptfaq.com/FAQ00032.htm- http://www.codeforexcelandoutlook.com/- http://word.mvps.org/index.html- http://www.infopathdev.com/- http://www.powells.com/biblio?show=TRADE%20PAPER:NEW:9781430210726:49.99 (I am a frequent visitor to Portland and I do love Powell's)
- http://officedeveloper.net/ (I forgot the link that caused me to put this section into the post from Ty Anderson.)
He has a good book as well. http://www.powells.com/biblio?show=TRADE%20PAPER:NEW:9781430210726:49.99
I'll point at more links when I get started, but I hope that this helps newer Office developers get started.
Customers have many questions about Office 2010, so may decisions related to Office deployment depend on their answers. I am creating a post to address the ones that come up most frequently on the technical side for Office 2010. I will keep adding FAQ' type posts with links in hopes that I can help search engines get people to the right places on key topics. Sysreq's are a big one, here's what I've got for you.
Q: What are the System Requirements for Office 2010?
A: With the caveat that this pertains to BETA software as of today, here's where we are at now with system requirements. Differences between 2007 and 2010 are highlighted in Red. Please understand that the 2010 requirements are subject to change, and will likely add additional detail as we move closer to general availability. The disk footprint is what has changed most significantly, but for the most part, the sysreq's are quite similar between the two versions. Recall that back when we shipped Office 2007 SP2, we made investments in performance, particularly with Outlook. We're hopeful that the release version of 2010 will continue improving performance, so that the experience with 2010 will improve across the board.
Processor
500 MHz processor; 1 GHz required for Outlook with Business Contact Manager
500 megahertz (MHz) processor or higher. 2 gigahertz (GHz) processor or higher and 1 GB RAM or higher recommended for OneNote Audio Search. Close-talking microphone required. Audio Search not available in all languages.
Memory
256 MB RAM; 512 MB recommended for graphics features, Outlook Instant Search, Outlook with Business Contact Manager, and certain advanced functionality.
256 megabyte (MB) RAM or higher. 512 MB RAM or higher recommended for Outlook Instant Search. Grammar and contextual spelling in Word is not turned on unless the machine has 1 GB memory.
Hard disk
3.5 GB available disk space
2 gigabyte (GB); a portion of this disk space will be freed after installation if the original download package is removed from the hard drive.
Display
1024x768 or higher resolution monitor
Operating system
Windows XP with Service Pack (SP) 3 (32-bit operating system (OS) only) or Windows Vista with SP1, Windows 7, Windows Server 2003 R2 with MSXML 6.0, Windows Server 2008, or later 32- or 64-bit OS.
Microsoft Windows XP with Service Pack (SP) 2, Windows Server 2003 with SP1, or later operating system (note that Office 2007 SP2 is the minimum version supported for Windows 7).
Graphics
Graphics hardware acceleration requires a DirectX 9.0c graphics card with 64 MB or more video memory.
(not listed)
Internet
Windows® Internet Explorer® 7.0 or later, 32 bit browser only. Internet functionality requires an Internet connection.
Internet Explorer 6.0 or later, 32 bit browser only. Internet functionality requires Internet access (fees may apply).
FAQ: I have 64-bit hardware. Should I install Office 2010 64-bit or Office 2010 32-bit?
a: With the 64-bit version, advanced users will benefit from increased memory utilization of 64-bit hardware. The transition to 64-Bit version will require 32-bit applications and add-ins to be recompiled to 64-bit, however, the leap will offer advanced users exponentially larger memory addresses required for large datasets and intensive computations. For the best compatibility I would recommend 32-bit Office 2010 for both 32-bit and 64-bit Operating Systems. Office 64-bit is optimized for advanced data analysis scenarios that most users don't require.
Update: URL's in the post were not functioning properly, and have now been fixed.
Today we are please to announce that a public beta of Office Environment Assessment Tool, a beta of Office Code Compatibility Inspector and a draft of the Assessment and Remediation Guide are now available for download at the new Office 2010 Application Compatibility resource page on MSDN. These tools and documentation are made available to you as per our announcement of the Office 2010 Application Compatibility program at SPC09 in October. Please use the links below to navigate and get the tools and the documentation. We encourage you to send us your feedback, comments and suggestions by either using Office 2010 Application Compatibility Forum on TechNet or by just sending a direct mail to ofappcpt@microsoft.com.
Tools and Guidance
Office 2010 Code Compatibility Inspector
The Office Code Compatibility Inspector for VBA and the Office Code Compatibility Inspector for Visual Studio are add-ins that you install with Office 2010 or Visual Studio. The tools scan VBA, VB.NET, and C# code for object model usage that is incompatible with Office 2010.
Office Code Compatibility Inspector Documentation Office Environment Assessment Tool (OEAT)
This tool helps you determine the kinds of add-ins that are installed on users' computers and the extent to which the add-ins are used. OEAT collects and reports add-in information about Office 2000, Office XP, Office 2003, and the 2007 Office system.
Office Environment Assessment Tool Quick Start GuideOffice Environment Assessment Tool User Manual
Application Compatibility Assessment and Remediation Guide
The Application Compatibility Assessment and Remediation Guide for Office 2010 describes the overall assessment and remediation process, including planning, testing, piloting, and deployment.
Send us feedback on the Code Compatibility Inspector and OEAT via e-mail
It's a small thing, but fun. Today I was given my 5-year service award for Microsoft. With a brief ceremony and a few jokes about how much more gray hair I have these days, I am now the proud owner of a new conversation piece. Just like Star Trek, I have a crystal that is seemingly capable of recording my memories and replaying them at will.
Unfortunately I don't have the glamorous history of so many people at Microsoft have. I do not have an expensive MBA, nor was I a catch in the college recruiting net. I do not wear the badge of having managed a failed startup / VC-backed thing. I was / am an "industry hire" with a surprisingly boring history of working on very successful products and services. I worked on Adobe Acrobat and PDF for a long period of time. I worked for a company named System, Integrators, Inc. Once a leader in the monolithic newspaper publishing automation space. I was a System Engineer there, working on Tandem hardware, installing systems, doing Y2K conversions, and writing routines in languages like TACL, RGEN, FGEN, FUP and a few other favorites.
I chose to work for Microsoft expecting to find great people building great products. I expected a highly competitive, smart work environment. I expected that the talent level at Microsoft would be the highest that I would have ever seen. In joining the Office team and one of the largest and most significant franchises in the brief history of software, I expected to find a caliber of leadership that exists in very few places.
I must say that my expectations have been exceeded in almost every instance. The IQ of each individual in this company is amazing. The per-capita talent level at Microsoft is something that one must witness in person to truly understand. It can work against you on occasion, when you have too many smart people asking hard questions. But on the whole, I will continue to bet on Microsoft long after I am gone because of the discipline the company has for finding, selecting, cultivating and utilizing talent.
Things I have worked on / with or Titles I have held:
- Sr. Product Manager, Microsoft Word- Sr. Product Manager, Microsoft InfoPath- Sr. Product Manager, Open XML- Group Product Manager, Office Technical Product Management- Group Product Manager, Office for IT Professionals- Group Product Manager, Office for Developers
Most of my role at Microsoft (despite the numerous titles) really revolves around doing more with data, and improving portability of information between our applications and other systems. Data portability is a concept that I learned and practiced building newspaper production automation systems (that were invented in the mid-1980's). For all the hubub about XML, SOA, Services-based computing, etc., this central idea really has not evolved much. Certainly the technology has changed a lot, but the end goal is still the same - enabling information exchange between systems and applications to enable better information exchange between people. (There's a famous saying at Microsoft about "Solving any problem through abstraction" - sorry for "abstracting" a bit here. In truth the problem is complex, nuanced and fiercely competitive among software vendors.)
I'll end the ramble here with a thought - for the readers from other software companies, a bit of a challenge to you.
Microsoft is great as an employer for many reasons, but one in particular that is worth highlighting is the competitive fire and spirit that burns in the core of so many individuals here.
I once worked for an employer who regarded competitors in a very unhealthy way. I won't quote some of the statements that were particularly offensive, to avoid internet searches that might reveal the identity of those people. But I'll just summarize it by saying that when issues / publicity about competitive products surfaced, the general mentality set by leadership (and therefore employees) was "how dare you?" As if they were viewing other companies who dared build similar products as a personal affront. Part of my reason for leaving the job was this mentality. competitors were innovating, and the company was responding by sending MBA's into business strategy reviews to "Fix" it.
Microsoft is quite different. A very important moment from early in my Microsoft career was when I watched Steve Ballmer on stage at a meeting talking about competition. I'll spare the context, but I have a very vivid impression of him standing there, rolling up the sleeves of his powder blue button-down shirt, saying "Bring it on." - Never was there a more concise encapsulation of the mentality of this company. It isn't about MBA's in a strat review for us - it is about engineers writing code and innovating. We focus on the product, and we are strongly committed to our customers and their success.
It is for this reason that I stay at Microsoft. We're not always perfect, there is definitely a "bleeding edge" to brining new products and technologies to market. As we stand on the front end of the Office 2010 launch, though, one can't help but have a very good feeling. When we get it right, the impact on how people interact with computers is profound and long-lasting.
Here's to hoping the next 5 years are as gratifying as the last.
If you are developing add-ins or customizations for Outlook, these changes in 2010 are worth noting. I'm pulling an article out of the MSDN Office Development Library to alert you to an important change to the way Outlook shuts down. The article contains several alternative strategies for successfully managing Outlook shutdown with your add-ins. There are also Reg keys for IT to force the 2007 shutdown behavior.
The changes were made to address end user feedback related to Outlook performance, and should result in implementation changes for Outlook developers that improve the situation. Good add-in developers seek to minimize perf impact as much as possible, and this change in Outlook is a good "suggestion" for how to better manage the closing of data files & global updates from Outlook on exit.
"Starting in the Outlook 2010 Beta release, Outlook, by default, does not signal add-ins that it is shutting down. Specifically, Outlook no longer calls the OnBeginShutdown and OnDisconnection methods of the IDTExtensibility2 interface during fast shutdown. Similarly, an Outlook add-in written with Microsoft Visual Studio Tools for Office no longer calls the ThisAddin_Shutdown method when Outlook is shutting down. The impact of the changes on an add-in depends on what the add-in does during these events. Most add-ins use these events to release references to Outlook COM objects and clear memory that was allocated during the session. In these cases, the impact on the add-ins is minimal; Outlook releases the remaining COM object references and shuts down, and Windows reclaims the memory when the Outlook process exits. For some add-ins, the changes have more impact. If an add-in uses these events to commit data (for example, to store user settings or to report usage to a Web server), those activities will no longer take place. Depending on the scenario, this may or may not have a visible impact to users. To remedy the situation, the add-in developer can modify the add-in to be compatible with the changes, or an IT administrator can use group policy to restore the original behavior for a specific add-in."
"Starting in the Outlook 2010 Beta release, Outlook, by default, does not signal add-ins that it is shutting down. Specifically, Outlook no longer calls the OnBeginShutdown and OnDisconnection methods of the IDTExtensibility2 interface during fast shutdown. Similarly, an Outlook add-in written with Microsoft Visual Studio Tools for Office no longer calls the ThisAddin_Shutdown method when Outlook is shutting down.
The impact of the changes on an add-in depends on what the add-in does during these events. Most add-ins use these events to release references to Outlook COM objects and clear memory that was allocated during the session. In these cases, the impact on the add-ins is minimal; Outlook releases the remaining COM object references and shuts down, and Windows reclaims the memory when the Outlook process exits.
For some add-ins, the changes have more impact. If an add-in uses these events to commit data (for example, to store user settings or to report usage to a Web server), those activities will no longer take place. Depending on the scenario, this may or may not have a visible impact to users. To remedy the situation, the add-in developer can modify the add-in to be compatible with the changes, or an IT administrator can use group policy to restore the original behavior for a specific add-in."
Application Shutdown Changes in Outlook 2007 SP2
Client Shutdown in MAPI
What's New for Developers in Outlook 2010
Add-ins should be reviewed per the guidelines in the article to determine whether the shut-down procedures are truly necessary. If they are, however, and IT wants to improve cross-version compatibility, the article details the registry keys available for forcing Outlook to use the 2007 shutdown methods.
Individual Add-in Setting (recommended) With this setting, Outlook selectively provides shutdown notifications to the specified add-in without notifying all add-ins. Configure this setting for each add-in through the add-in registration in the HKCU or the HKLM registry hives, by adding an additional value to the add-in registration. Type the following text as a single line. HKCU\Software\Microsoft\Office\Outlook\Add-ins\<ProgID>[RequireShutdownNotification]=dword:0x1 Setting this value to 0x1 enables the add-in to receive blocked callbacks during Outlook shutdown. This has an impact on the performance of Outlook shutdown and should be evaluated as part of a deployment. This setting should be used only if an add-in has significant compatibility issues with the new shutdown mechanism. Setting the value to 0x0 uses the default behavior of Outlook 2010. Global Setting Use this setting to change the new shutdown mechanism to match that used by Outlook 2007. You can deploy the setting through group policy, either per user or per computer. Type the following text as a single line. HKCU\Policies\Microsoft\Office\Outlook\14.0\Options\Shutdown[AddinFastShutdownBehavior]=dword:0x1 Setting AddinFastShutdownBehavior to 0x1 enables shutdown notifications for all add-ins. Setting the value to 0x0 uses the default behavior of Outlook 2010. These two settings provide administrators complete control over the effect that this new behavior has on custom solutions and add-ins that are used in the enterprise. During the evaluation period of Outlook 2010 Beta, it is important that organizations test any custom solutions using Outlook add-ins to ensure compatibility with this change.
Individual Add-in Setting (recommended)
With this setting, Outlook selectively provides shutdown notifications to the specified add-in without notifying all add-ins. Configure this setting for each add-in through the add-in registration in the HKCU or the HKLM registry hives, by adding an additional value to the add-in registration. Type the following text as a single line.
HKCU\Software\Microsoft\Office\Outlook\Add-ins\<ProgID>[RequireShutdownNotification]=dword:0x1
Setting this value to 0x1 enables the add-in to receive blocked callbacks during Outlook shutdown. This has an impact on the performance of Outlook shutdown and should be evaluated as part of a deployment. This setting should be used only if an add-in has significant compatibility issues with the new shutdown mechanism. Setting the value to 0x0 uses the default behavior of Outlook 2010.
0x1
0x0
Use this setting to change the new shutdown mechanism to match that used by Outlook 2007. You can deploy the setting through group policy, either per user or per computer. Type the following text as a single line.
HKCU\Policies\Microsoft\Office\Outlook\14.0\Options\Shutdown[AddinFastShutdownBehavior]=dword:0x1
Setting AddinFastShutdownBehavior to 0x1 enables shutdown notifications for all add-ins. Setting the value to 0x0 uses the default behavior of Outlook 2010.
AddinFastShutdownBehavior
These two settings provide administrators complete control over the effect that this new behavior has on custom solutions and add-ins that are used in the enterprise. During the evaluation period of Outlook 2010 Beta, it is important that organizations test any custom solutions using Outlook add-ins to ensure compatibility with this change.
During the launch wave we spend a lot of time "readying" various teams around the company and externally about the new capabilities for developers in Office 2010. This is a topic of great interest across our technical field in particular, due to the multitudes of solutions that are built on Office to do everything from document automation to billable hours booking. I recently had to record one of my training sessions. Normally I'm not one to enjoy camera time (I'm much more comfortable behind one than in front), but there is a nice forcing function about these types of presentations that most software people understand (but rarely discuss.) This is a great opportunity to organize your thoughts. Nothing like having 45 seconds of someone's attention to get your message focused on the things that folks absolutely must understand.
As a Thanksgiving treat, I thought I'd pull back the curtain on that process a bit, and in the process unfold my story on what's new in Office 2010 for development. Hopefully this should be a fun post, but I suppose I'll hear it from you if it is or is not.
The format of this talk was as a Q&A interview-style discussion.
Gray can you tell me what's different about developing with Office 2010?
"We're investing heavily in this segment. There is a lot to like in Office 2010 for developers. These investments go far beyond VBA & Add-ins that people traditionally associate with Office development. We're moving toward service & data oriented development, focusing specifically on improving end user productivity with line-of-business applications. For the community of VBA developers & VSTO developer base, we are upgrading the environment to support new Office functionality, 64-bit Office and the Fluent User Interface."
What I'm omitting / not saying: The types of solutions and the types of developers for Office is quite broad, and it is a little challenging to summarize in a short "message" without the watery "changing the developer landscape to improve productivity through enhanced tools and services" or other change-the-channel-right-now speak. The fact is that between VBA, OBA, Open XML, SharePoint and other communities, there are tens of millions of people developing on Office in one form or another. We are very excited about that, and motivated to keep this community of folks happy.
Can you give me a sense for what new features have been added in 2010 for developers?
"Developing successful productivity applications really involves the utilization of 3 core areas.
Office is the best consumer of SharePoint solutions and new features in 2010 are designed to make SharePoint and Office light up in new ways. SharePoint lists, for example, can be taken offline in SharePoint Workspace, where InfoPath form templates are designed for interacting with those. Access solutions can now be fully migrated to SharePoint in 2010, to the point where Access is used by the designer to build and publish the solution, and SharePoint portals are the place where users interact with that data. BCS, a new feature of SharePoint for creating and managing read/write data connections to 3rd party systems, has a client-side cache and built-in functionality which allows applications like Access and Outlook cache and work offline with LOB data.
Interoperability for Office is a core priority - availability of Office formats and standards-based services connectivity for Office are two examples of how our investments are paying off. We're also improving the development experience for Office. Word Services and the Open XML SDK automate the document assembly that people previously did with VBA scripting of Word. The recent announcement of the PST format specification is a great example of how we're publishing more of our protocols & formats to encourage integration and interoperability with Office.
We're spending time improving the experience for Office development. With .NET 4.0, Office 2010 and Visual Studio 2010, we're doing good things like removing the dependency on the Office PIA's, to reduce the deployment friction. We have introduced a new Application Compatibility Program for Office 2010, to help migrate code from 2003 & 2007 to Office 2010. The compat tools and documentation are available for free, but also appear in several of our enablement channels, including DDPS, MCS, MDT and others. Some of you may have also seen the recently re-designed developer center for Office on MSDN."
What I'm omitting / not saying: That in many ways Office is becoming essentially a wide open surface for external data. BCS is a read/write connector to 3rd party systems. the Outlook social connector is an API to wire social networking feeds into your mail client. Office surfaces the new taxonomy / folksonomy data in SharePoint 2010. Workflow is consumed directly within client apps. Support for REST and LINQ make query-level tweaking of data / content so much easier. The Open XML SDK gives you element-level access to a document, the "File Save As" on a server that is Word Services uses the Word rendering engine that was actually built to work on a server. (the scripted client solutions were not designed to do that, evident by the hassle of managing unexpected dialog boxes and alerts in the VBA / Macro environment). Again, there are so many things worth mentioning here that it is hard to really pull together into a summary. The diversity of Office development is (not surprisingly) a reflection of the breadth of capability offered in the products. This challenge is a primary reason we invested in a re-design of MSDN. The "re-design" goes far beyond re-arranging the furniture on the site. New tagging schemes, SEO, information architecture are designed to get you to the answer faster. Having spent some time in the past few weeks digging into the PowerPoint OM, I very much appreciate the ability to navigate to key content (like the PowerPoint.Shape.TextFrame.Ruler object without having to use the search field. Privately I worry a lot about how to strike a balance between discussing capabilities, features and categories of functionality. Level up too high, and it reads like marketing language. Level it too low and you risk people not appreciating the breath of the offering, and how much of the daily business productivity solution space that Office is capable of absorbing. When I see corporate developers trying to recode pivot tables in a web page, I scratch my chin sometimes and I wonder what we can do to help customers take more value out of what they already have sitting in front of them.
What I'm omitting / not saying: That in many ways Office is becoming essentially a wide open surface for external data. BCS is a read/write connector to 3rd party systems. the Outlook social connector is an API to wire social networking feeds into your mail client. Office surfaces the new taxonomy / folksonomy data in SharePoint 2010. Workflow is consumed directly within client apps. Support for REST and LINQ make query-level tweaking of data / content so much easier. The Open XML SDK gives you element-level access to a document, the "File Save As" on a server that is Word Services uses the Word rendering engine that was actually built to work on a server. (the scripted client solutions were not designed to do that, evident by the hassle of managing unexpected dialog boxes and alerts in the VBA / Macro environment). Again, there are so many things worth mentioning here that it is hard to really pull together into a summary. The diversity of Office development is (not surprisingly) a reflection of the breadth of capability offered in the products.
This challenge is a primary reason we invested in a re-design of MSDN. The "re-design" goes far beyond re-arranging the furniture on the site. New tagging schemes, SEO, information architecture are designed to get you to the answer faster. Having spent some time in the past few weeks digging into the PowerPoint OM, I very much appreciate the ability to navigate to key content (like the PowerPoint.Shape.TextFrame.Ruler object without having to use the search field.
Privately I worry a lot about how to strike a balance between discussing capabilities, features and categories of functionality. Level up too high, and it reads like marketing language. Level it too low and you risk people not appreciating the breath of the offering, and how much of the daily business productivity solution space that Office is capable of absorbing. When I see corporate developers trying to recode pivot tables in a web page, I scratch my chin sometimes and I wonder what we can do to help customers take more value out of what they already have sitting in front of them.
You mentioned VBA - is this still going to be supported in Office 2010? I keep hearing that it is going away.
"VBA is a very healthy and active community, and VBA is a very important part of Office, including the 2010 release. VBA is not going anywhere. In fact, we have upgraded VBA to support the new, native 64-bit Office client. We love VBA. Please continue using VBA."
What I'm omitting / not saying: . if I had a dime. VBA is something we take pretty seriously on the product team, for two reasons. The first and obvious reason is that countless productivity solutions are written in VBA. The number of VBA coders is likely in the tens of millions - that by itself should be a good reason to care about anything. But VBA is also a primary gateway to Visual Studio. Many VBA coders cross the bridge into more professional development. I am one of those (translating my Tandem / TACL skill set to the world of .NET). The Developer documentation team at Microsoft writing the material for VBA is painstakingly precise. The amount of energy they invest in understanding the needs, likes and dislikes of MSDN subscribers is incredible. By the way, if you're reading the documentation on MSDN, you should use the rating / feedback tools on the site. The teams use them more than you might think.
What are the gotchas that Office developers should be looking out for?
"The 64-bit transition is one that people are going to have to pay attention to. 32-bit and 64-bit solutions have to be compiled separately. Some of the 32-bit code will have to be updated for 64-bit. ActiveX and COM-based addins will need updating. Managed code should be fine, for the most part. Our application compatibility tools will help identify areas of your projects that need updating.
.NET 4.0 presents an interesting opportunity. If you've written an add-in that uses the Office PIA's, it might be time to upgrade that to .NET 4.0 and drop the PIA's - one less thing to worry about during deployment. We're also including the VSTO runtime for Office into the Pro Plus builds, this should make things a little easier as well.
Lastly, the Fluent User interface lands in all client apps now. Outlook, Project, Visio, SharePoint workspace, etc. So if you have an add-in for some of the 2007 or 2003 apps based on the buttons, it's worth paying attention to how they show up in the Fluent UI."
What I'm omitting / not saying: . not a lot really, other than to mention again that the App compat tools are a big deal and people should take advantage of them. They will definitely help. If I were to really expand the category, I'd say that folks should take a good look at what they've built and see if there is an opportunity to move some of the client-side scripting into SharePoint, particularly around documents. The environment is so much better on the server side to do that kind of work, we're very hopeful to see adoption take off quickly for it.
Last question, if you had to explain in one minute or less why companies SHOULD be developing on Office, what would you say?
"The average enterprise has 51 line of business applications, and presumably, each of those drives a set of applications. Imagine if you are an end user who is asked to work with even a fraction of those - think of how much investment is made in training people! Wouldn't it be better if everybody did all of their calendaring in Outlook - where they do the majority of scheduling already? Why do forecasting in a data grid on a web page? Why not do it in excel, where all the tools (like Solver) are available and can help users be more effective? Leveraging office as the user experience for business applications - with SharePoint or with other application platforms - makes a lot of business sense and makes users more productive faster."
What I'm omitting / not saying: . most CIO's get this. Office client may not be the first thing people think of, but when you put it into simple economics, it's hard to argue against. I have had countless conversations with architects that gravitate toward Office client as the landing spot because of the end user adoption issues. Office makes it very easy for people to get going. There are lots of great things to be done on the Web, and there is a lot of activity around that, for sure. But when it comes to measuring up on ROI, and when time to market counts, Office client wins, a lot. We might not be the ones wearing the hot pink tuxedo or the glow-in-the-dark dress at the dance, but we have the most dates, know the most dance steps, and we don't step on your toes.
Kurt starts today's discussion with a quick conversation on the Business Productivity Infrastructure. If you know the Office and SharePoint environment well, this is probably something you've seen us discuss before.
It was at PDC08 when we announced that we will be releasing Office Web Applications that provide a high-fidelity & consistent experience for users who want to access and modify Office content in a browser, mobile device or the rich client. It was also at the last PDC that we announced that our Business Productivity Online Services were releasing giving our customers, partners and developer real choice of on-premises and Online. SharePoint Online is something that's real today. Customers like Aon Corporation, Aviva PLC, McDonald's Corporation, Tyco Flow Control, University of Ohio and many others, have chosen Microsoft Online Services in just the last few months. Our customer base spans consumers to small companies to large enterprises with over 500 Million Office client licenses and 100 Million SharePoint license WW. Over 17,000 customers have deployed SharePoint today.
With Office 2010 & SharePoint 2010, we are looking to provide even greater experiences across multiple devices with choice. Rich out-of-the-box capabilities from Enterprise Search to Collaboration to Business Intelligence social computing features, line of business integration and tooling investments. For developers, the 2010 wave will provide unprecedented opportunities. Our research shows that the SharePoint services opportunities alone for developers and partners is 5.6B and expected to grow to 6.1B in FY11. We've also seen hundreds of thousands of developers have worked with SharePoint the past year and we believe that will increase to over one million of developers over the next couple of the years. With this in mind, we're delivering a robust developer platform that you can build rich and engaging productivity solutions that can be accessed by any device and hosted on premises and the cloud.
Office and SharePoint provide many of the building blocks to build an array of applications including document processing, line-of-business front-ends, human workflows, reporting and analysis and .COM sites. In fact, on SharePoint 2007 alone, there are over 1,000 .COMs including brand names like Kraft, Volvo & Ferrari.
As you look across the spectrum of capability for Office and SharePoint 2010, you'll see that there is a tremendous amount of capability for developers building solutions. Office is frequently used as the front end to line of business processes and applications. And let's face it, if you're an information worker in an enterprise environments, and you are asked to use several of the 50 (on average) line of business systems present in an enterprise, it makes A LOT of sense to surface those things in Office. For end users, Office is an environment that is familiar. For Developers, Office is a way to accelerate the end user learning curve by a substantial amount. Multiplying that across the number of users in and systems / processes in play, the math points to giant savings for business applications.
As we've discussed in previous posts, new Access Services and Word Services of SharePoint 2010 are a significant extension to the SharePoint environment. Word Services offers a programmatic "Save As", enabling bulk document conversion for word formats using all of the formats supported by the client application, using the same rendering engine. Access Services provide huge governance benefits because they allow end users to upload and manage their Access solutions as SharePoint pages, rather than storing the data on the local machine.
There are several capability areas here that represent much power for developers. We'll break these down in more details in future posts.
As many have speculated, the Public Beta for Office and SharePoint are available today. http://www.microsoft.com/2010 is the link to visit to get started. Start with the Beta here: http://www.microsoft.com/office/2010/en/default.aspx
More in a moment as the keynote unfolds.
We're making two other announcements today: Duet Enterprise for Microsoft SharePoint and SAP. The joint solution from SAP and Microsoft will enable interoperability between SAP applications and SharePoint 2010 and provide complete flexibility and extensibility to compose solutions that blend the worlds of process and collaboration. Duet Enterprise enables customers to generate more value from their investments by extending the reach of SAP to more users and expand the scope of SharePoint. Duet Enterprise offers highly efficient interoperability between SAP and SharePoint 2010 addressing the growing need for team collaboration, business insight and to boost personal and team productivity. Duet Enterprise empowers all employees to consume and extend SAP processes and information from Microsoft SharePoint and Office 2010.
Duet Enterprise is planned to deliver:
· A Foundation to enable interoperability between SAP and Microsoft SharePoint 2010
· Tools and services to support the composition of solutions that blend the worlds of process and collaboration
· Ready-to-use capabilities that provide immediate value for end users
We are also announcing the Outlook Social Connector. In doing so, we are bringing social networking to the place where people spend the majority of their work day - Outlook. OSC adds context to email for a richer user experience. It looks at your Inbox along with the rest of your Outlook data to bring you up to speed on all the latest messages, attachments, and meetings I've received from people in various social networks. The social connector also integrates personal and professional networking feeds from Windows Live and SharePoint 2010. You can see friends' activities and profile data from Windows Live, if someone updates their Space or uploads a document to SkyDrive, you'll see that. You will also see colleagues activities and profile data from SharePoint, if they make a mod to their MySite, you'll see that as well.
LinkedIn will be the first 3rd party network available to the OSC. We have been working with them to build a provider which will be available early next year. We're demoing the LinkedIn integration today. Perhaps the best news for developers, though, is that we are releasing an SDK on MSDN so that you can write providers for your own networks. This certainly adds a new dimension to Outlook, and will greatly enrich the value of social networks by providing the context of the work done in Outlook. Start at the Office developer center on MSDN to get the SDK. http://msdn.microsoft.com/en-us/office/default.aspx. Update: the link to the OSC SDK will be here: http://msdn.microsoft.com/en-us/library/ms123402.aspx?missingurl=%2fen-us%2flibrary%2fee829696(office.14).aspx hang loose as it will go live soon.
Today has been a very exciting day for us, and as we move forward, we'll have lots more to share. If you're here at PDC, stop by the Office booth and say hello. If you're not here at PDC, well, bummer you missed out on the free laptop, but as you can see much will evolve based on our announcements at the show.
Update: http://blogs.msdn.com/erikaehrli/archive/2009/11/18/getting-started-with-office-2010-development.aspx. Erika has blogged about Getting Started with Office 2010 development,and the newly launched Office Developer Center on MSDN.
(comments from before the keynote are below)
Office 2010 and SharePoint 2010 will be featured as part of this morning's PDC09 keynote. It will be an exciting day. At this moment I'm sitting backstage, waiting for the festivities to begin. Kurt DelBene, the keynote speaker is through the preparations and is warming up back stage. Derek Burney is rehearsing demos. Lots of energy back here. Steven Sniofsky has just taken the stage.
During the keynote I'll be updating this post with new data. Stay tuned.
This photo is of Derek Burney during rehearsal. A very empty room at the time, now filled with thousands of developers.
As we get ready with final slide tweaks, demo run-throughs and all that, Stephen is discussing some of the aspects of Windows 7 Development, including SQM, WER and others. No surprise that Stephen is filled with interesting news and is great for the audience. This blurry photo is backstage at the show. We go on in about 45 minutes.
Right now folks are pretty excited because it was just announced that attendees will be given a free Acer multitouch laptop. Big applause. Steven just wrapped, and Scott Guthrie of Silverlight is on stage. I saw their demos during rehearsal yesterday, more awesome demos are about to unfold. As expected, ScottGu's keynote is wowing people. In his keynote Scott discussed that 45% of internet connected devices are Silverlight enabled. Quite a jump from the 33% reported earlier this year. Silverlight 4 was also announced, and Scott is walking through the new features now. Some interesting data points: Siemens medical imaging is using Silverlight for applications, Bloomberg has Silverlight installed on 300,000 terminals. Examples of NFL, Victoria's Secret, Netflix, NBC Olympics and others are on display. Very impressive.
Just getting through the last of the Silverlight 4 demos. A very exciting presentation, to be sure. We're t-5 minutes to the stage. Lots of pacing.