Majel: The feature nobody knew existed
Before joining the Windows Privacy team I worked on MSN 8. One of the technologies I worked with was code named "Majel", after Majel Barrett who was (is?) the voice of the computer on Star Trek.
As the name implies, this feature allowed the user to type commands using ordinary English sentences into the MSN 8 address bar, and through the magic of Natural Language Processing the app would think for a few seconds, attempt to " understand" the sentence, and map it to a client-side action such as sending an email or creating a photo album. If the sentence couldn't be understood it would be routed to the search engine instead. If the sentence was ambiguous a little dropdown would appear from the address bar with the possible choices.
We supported about 40 different tasks, culled from a list of the top ones we thought people would want to perform. Some sample sentences are:
- "Turn off Junk Mail", "I hate spam", etc. (Go to Junk Mail Settings)
- "Send instant message to John" (Figures out who John is launches Messenger chat with that person.)
- "Change my password"
- "View Buddies" (Launch Messenger main window)
- "Add a new user"
- "Change my picture" (Change login / IM picture)
My part was the MSN 8 integration: the UI, hooking up the address bar, hooking tasks to the corresponding features, handling callbacks to give the natural language engine app-specific information (i.e. user names, Messenger contacts, favorites), and doing preliminary routing to determine whether the user entered a normal URL, an email address, a search query, or a command. (Jerry Joyce and Dave Parker also helped with the integration, and the actual NLP work was done by the Majel team.)
The project wasn't entirely practical, but it's a good example of something that Microsoft frequently does: we shipped an experimental future-looking technology in order to learn from the process and incorporate that experience into future products. You can imagine that this type of functionality will be very useful in the future, particularly when hooked up to a speech recognition system. All told it was a blast to work on, particularly getting an inside view of how some of it worked. It also proved that the concepts I learned back in college from academic languages such as Prolog were actually worth something in the "real world". ;-)
The downside was that the integration with MSN 8 was short lived. MSN automatically updates in the background, and the cost of keeping this feature in the new versions (~20 MB of DLLs, maintenance, perf issues) outweighed the benefits, so more recent versions no longer have it.
(I'm on a blogging roll today; I hope I don't use up all my good ideas. What do you think? More hardcore technical content, or is stuff like this interesting to read as well?)
--
The utility of the day today is ieSpell (https://www.iespell.com/), a must-have add-in for IE gives you the ability to spell check forms.
Comments
- Anonymous
February 01, 2004
Why couldn't this have been done on the server? The NL string is treated like just another search string, and if the server recognizes as an action, it invoke the callback on the client. With enough users you can start to cache queries, so performance shouldn't be an issue. And since you say you already have automatic updates, there must be some trust/authentication mechanism in place, so any security issues (i.e. someone else invoking those callbacks) could be solved. - Anonymous
February 06, 2004
Mihai, I omitted that part. We also integrated with Search Companion (ships in XP) which does server-side NL processing, potentially giving UI to narrow down the task, and then navigates to a web site.
Client-side processing does have advantages (security, privacy, performance, among others), but both approaches are worth long-term investment.