One of the cool things about being a technical evangelist is that you get to talk to partners (i.e., software developers who work with Microsoft technology) about the technical details of the work they're doing. Sometimes we're teaching them what's new from Microsoft, and other times we're the students, learning about creative things that our ISV partners are doing with our technologies.
Thursday afternoon I had a chance to experience the latter, when Michael Scherotter of MindJet demonstrated the way they've used the new Open XML file formats to integrate their MindManager product with Word 2007. Michael was in town for the deep-dive lab we put on in Building 20, which was an opportunity for ISVs to meet with people from the Office and Sharepoint teams to discuss the architecture of the solutions they're building around the 2007 Microsoft Office System.
MindManager is product for creating "mindmaps" -- those freeform flowchart-like brainstorming diagrams that people have traditionally created in Visio or by hand on a whiteboard. MindManager has various functionality appropriate to these sorts of diagrams, such as the ability to attach visible or hidden notes to topic nodes, custom icons with customizable meaning, and so on. Once you've create a mindmap, you can publish it as an image or static web page to share with others who may not have MindManager installed. Don Campbell's Office 2007 Mind Map is a good example.
The problem is, publishing a mindmap is a one-way read-only process. And in today's highly collaborative workplace environment, you might want to collaborate with others on the editing and refinement of a mindmap. Only a small number of people having MindManager installed, but hundreds of millions of people have Office installed. So Michael and his team at Mindjet set out to figure out a way to use Office 2007's support for Open XML file formats as a mechanism to enable seamless integration between MindManager and Office.
In order to accomplish this ambitious goal, they had to take advantage of many aspects of the Open XML file formats and also some related Microsoft technologies such as ribbon extensibility and VBA macros. MindManager's proprietary format in the past was an OPC-like approach -- ZIP archive containing various XML parts -- so that aspect of Open XML was familiar to them and they took full advantage of it to embed a wide variety of content types into a DOCM file: macros, schemas, icons, custom semantics, metadata, and the actual definition of the mindmap itself.
The resulting solution supports this scenario:
1) user creates a minmap in MindManager, then exports it to a DOCM file
2) another user, who only has Word 2007, can open that mindmap
3) the Word user can view the document in a more linear text-based form than in MindManager, but with Word's outline view showing the hierarchical relationships among the topics
4) the Word user has a custom ribbon UI with buttons for doing many of the things you could do in MindManager: tag topics, add notes, add new topics, etc. There's even a button to see a graphic of the original exported mindmap (in a dropdown gallery, of course).
5) the Word user can send the edited document back to the MindManager user, and when the MindManager user loads the document they see all the changes and can continue editing or publish the revised document. The necessary XSL transforms for re-creating a MindManager document from the DOCM are embedded right in the document.
You might wonder how Word's text-based UI can render a mindmap. It's done as a series of headings, basically, with each heading corresponding to a topic in the mindmap. Furthermore, each heading is custom content control, with bi-directional linking to appropriate nodes in a custom XML part within the document, where the topics are stored.
This is a great example of a creative application of Open XML that we never envisioned. And it's also a good example of how a third-party developer can use the openness of the new file formats to leverage the Office platform for their own purposes.
Finally, here's the coolest thing of all about this solution: it's been less than two months since Michael started researching how to integrate their product with Open XML, and they're now ready to ship the version of MindManager that supports everything described above. Now that's agile development!