I thought some more about the sample that I posted yesterday and More I think about it, I am convinced that Search needs to be at the center of application development. Different applications have different UX models and different user expectations. Search could become one way that user could always work with applications. This means what we really need is Search Drive/Aware platform that people can build applications with.
- This could be one uniform model that every application supports from complex to simple with different UX models
- This could certainly make life easy for complex application in terms of discoverability of features.
- This could also essentially integrate help model in the application instead of user having to go into separate help docs and do search there.
- This would also help applications that need to change their UI in a fundamental way but are worried about the user learning curve.
Think about new office ribbon UI. Office always had a problem of how to surface new features to end users. Now with completely new UX model, they will also face the problem of users who are familiar with old version of office not finding what they are looking for. Search driven paradigm can help them in a big way.
The way I see it from my limited thinking right now, we need….
- Search Driven Application model: Application itself understand that concept of search and has way to provide necessary services for developer. It means it has a collection of functionality that application can search over. It also has collection of UI component that it commands to respond to search queries. It has registration method.
- Search provider plug-in: We need to figure out a way so that developer can plug in in different search algorithms. E.g. in sample that i posted, i do string match so when user types NE, I find NEW. This is pretty limited and helps people who know what they are looking for but if user types in CREATE then I should find NEW. Other example would be application running on airport Kiosk should respond to different language queries etc
- Search Driven Control: Every control is search aware and is responsible for search queries that application will send its way. The reason why I think it need to be build in the control is because each control can choose to react to searches in a different way of visualization. E.g simple list box can choose to visualize search in different way than virtual earth control. For this we need to define a contract between control and application so that application ask control to visualize itself around search
Some other things I need to think about more…
- There are content searches and Functionality searches. Are things different for those cases? how? how should platform react to those? what should be the division of functionality?
- In certain cases search should be delegated to other pieces such as database. How do we achieve that?
- How do we make search part of core shell. Vista certainly takes the first step but what more can we do?
Over next few days I plan to work on this. First step would be to just get a sample out but then next step would be to see if I can create a good pattern that application can follow. Last step would be to see if what/if we can platformatize this in any way.