Content-Aware Desktop Applications
I made prior pronouncements that I would talk more about what I am working on. Over the past couple months, I struggled with how much of what I am doing that I want to make public.
Joel makes a good point that one should be tightlipped about upcoming products in “Mouth Wide Shut,” doing so guarantees at least a year before another competitor joins the fray. The contrarian that I am, I try to pick his argument apart. Some entrepreneurs claim that ideas are plentiful, and that execution is difficult and people are what matters. Paul Graham argues compellingly that if ideas for startups were truly valuable, then a market would develop for these ideas; however, the issue is still murky as the question shifts to whether such a market actually exists in the form of venture capital and angel investing. Others think that startup should encourage early buzz because it will create greater customer awareness and attract opportunities; on the other hand, large corporations like Microsoft are highly rational, experienced, and successful in their business decisions and prefer to keep new technology under wraps in order to generate maximum buzz at launch.
I decided to take a middle ground and speak in generalities, and just talk about the general trend that I see towards content-aware application.
Historically, the focus of desktop applications have been in the low-level preparation of documents, basically, it’s formatting and layout at a granular level. There’s been little stride in these applications in the understanding of the underlying content of the document. Over time, there has been a general trend — a movement away from layout to content in the form of Intellisense (background spelling and grammar), style sheets, and increasing structure. Lotus Improv was an early failed attempt at redefining the spreadsheet by creating the concept of tables, freed from the notions of column and row references, where formulas reference heading names directly, and different axes of tables could be “pivoted” into different views and pages. Excel copied aspects of Improv and improved upon it with PivotTables. Excel soon followed with other special regions such of QueryTables/External Data Ranges and Lists. Excel 97 also experimented with English Language Formulas. I also suspect that the XML work in Word 2003 provides it with the underlying basis for understanding the document compositionally rather than a raw stream of characters and paragraphs.
First, my relevant background. When I joined Excel in 1994, I worked on PivotTables. My affinity to and involvement with PivotTables was due to my early vision of increasingly intelligent software. PivotTables were special named ranges that provided arbitrary views of data, in some ways a graphical view of SQL results, with notions of pivotting, filtering, grouping, sorting and aggregation. (Other products that provide flexible view operations include Outlook and forthcoming Vista search technology). PivotTables were very much content-aware, operating at a higher level than the rest of the spreadsheet. It had its own notion of structured selection. Formatting was no longer tied to a particular cell, but was associated semantically to fields and item name and tracked across pivots. PivotTable formulas referred to names of other items rather than references. PivotTables had their own rich contextual menu with a rich list of features, including AutoFormats, banded-style reports, and PivotCharts.
For some time, I was the only developer in the PivotTable feature area. My feature area was regularly ridiculed as being used by only 1% of customers. Now, five years after I left, the team has expanded and their work, now referred to as “Business Intelligence,” is being touted as the anchor of Office 12.
David Gainer, group program manager of Excel, points to a new feature called “Tables.” Tables are a natural progression of the “Lists” work done in earlier versions, so they support autofilter, but Tables also borrow a number of features from PivotTables such as structured selection and formatting and names in formulas. (I noticed a number of ideas of mine continued onto Excel 12 Tables. For example, structured selection was entirely spec’ed and implemented by me. Interestingly, once a product ships, any feature that a developer implements becomes this absolute “precedent” which every future product strives to copy faithfully; it doesn’t matter if the original developer had misgivings about the feature as I did with structured selection. This is why the Office Assistant lasted too long.) Tables also have unique features such as replacing the column and row headers of the sheet, whenever the selection is on the table.
Tables are the latest example of the trend of Office application become more aware of the document content, but it is still at an early stage of evolution. For instance, tables in Office 12 are explicitly created and not automatically recognized.
Visual Studio is probably the Microsoft application, which has most advanced in content awareness with graphical class designers, background parsing, refactoring, automatic code formatting, and rich intellisense. This is mostly because source code is far easier to parse than arbitrary documents.
My current development work takes content-awareness to whole new level.