Quite a few of the folks that I work with have been a bit critical about the first BETA release of Windows Vista and its a sentiment that I have seen echoed all over the blogosphere. Since I like to think that I subscribe to the blogs of smart people I can’t help but feel a little bit disappointed in what I feel is a knee jerk reaction. So what do I think?
I’m glad you asked. Windows Vista is an operating system, it is designed to provide the infrastructure that all the exciting applications of the future will be written on and where others smell a missing feature I smell opportunity.
By far the most compelling features in the platform are under the covers. I am of course referring to the out-of-the-box .NET 2.0 runtime and WinFX runtime environment comprising of Windows Presentation Foundation and Windows Communication Foundation. I’m also interested to see how the enterprise makes use of features like RSS support baked into the platform – I see this being a big part of Microsofts vision for the Microsoft Office suite, including SharePoint.
I think that reaction that most people are having is mostly due to the incremental nature of improvements made in the Windows Shell, for example the good old Start Menu hasn’t changed too much, but then again you wouldn’t expect it to, its the cornerstone of the Windows user experience.
At first glance the most obvious addition is the search box which allows you to type in search terms and find files on your computer. Like MSN Desktop Search it provides instant feedback on the search terms you are entering and displays in place over the top of the commonly used programs.
Thats a pretty obvious improvement but I don’t think its necessarily the most important on the Start Menu. Notice if you click on the All Programs option the contents of the Programs group is displayed in-place.
This is different to Windows XP where if you had lots of programs installed on your machine you ended up with a very ugly dual (or even triple) column menu going across the screen. This little change got me thinking about how we as developers think about application design.
Should we even be thinking big?
Smart client applications are slowly finding their way back into the enterprise and most projects typically start out with some kind of vision around what the client architecture will be like. Inevitably we dream up some swish modular architecture complete with plug-ins and slick visualisations to satisfy all the business requirements in one retangluar window. But is this correct approach?
Some of the smart client applications that I’ve seen over the past twelve months take up several hundred megabytes of RAM, whether they be .NET Windows Forms applications or Java Swing beasties. The sad thing is that your typical user doesn’t exploit all of this functionality and are focused on one or two tasks that they regularly perform.
Small Task or Document Orientated Applications
I am now starting to think that we should be looking at producing smaller more lightweight applications which fall into one of two categories.
- Task Orientated
- Document Orientated
That might sound a bit arbitary but let me explain. Consider a hypothetical courier company with one or two local phone operators which handle calls from customers. Customers typically want one of two things, they either want to order a pick-up or reschedule a delivery.
You would simply create two seperate applications that talk to the same backend web-service which support these two business operations. Now consider that in the Windows Shell, in particular think about the two screenshots that I provided above.
When these two applications are both installed they would probably sit in some folder under all programs – say “Courier Operations”. As the user navigated the all programs menu it would be completely obvious which one to click on because it they would would be called “Order a Pickup” and “Reschedule a Delivery”.
Lets say “Courier Operations” has twenty little programs contained within it. If the telephone operator is predominantly concerned with two of them something magic will happen – they will automatically bubble to the top of the frequenently used programs list. In this case Windows is optimising navigation to improve the experience of your users!
Additionally if you mark-up the executable programs with the appropriate meta-data those programs can be searched for using the standard Windows search. Monolithic applications with functionality embedded in them can’t support this.
So thats all task orientated, what about document-orientated? I believe that a task driven application will typically be connected to a back-end web-service of some description but a document-orientated application is all about opening, visualising, editing and saving data on your local machine. Whilst you are probably performing some kind of task its really more about the document in this case.
For end-users search is going to be a really important feature here and if I am disappointed about anything in Windows Vista its the lack of WinFS as a feature. The lack of a relational file-system makes search much less powerful, although its still a marked improvement on what we had before (search dog be-gone!).
The Missing Vista Search Feature
One of the post powerful features in MSN Search and Google is the ability to ask it a question, not just search for a term. Both search engines are probably just doing some pattern matching on the string to determine whether it can make a specific suggestion.
In Windows Desktop Search we have the ability to create IFilter’s to index a documents content but what I would dearly love is to be able to provide an extension which Windows Desktop Search asks to provide some matches.
For example, lets say I type in a flight number (QF821 – my flight to Melbourne this evening), it would be great if among the search results were options to bring up that flights details or even book a ticket on it!
The key point here is that there would be no file on the machine to index QF821 from – some data stores are just too large for Windows Desktop Search to index – but it could be made to make suggestions based on a pattern.
Apply that same technology to business applications and when a customer calls into a call centre operator the call centre operator needs only type in a few of the customers personal identifiers and search could present the operator with a series of tasks that they can perform.
These are just a few of the idle thoughts I have pinging around my head and I wanted to get them down before I went to sleep. Goodnight!