The Fusion of Web and Smart Client
Silverlight may be our first step toward better Web-based applications, but some obstacles still remain.
- By Billy Hollis
It's now conventional wisdom that large software systems should have browser-based interfaces. More often than not, cheap deployment trumps usability.
Perhaps I'm just a curmudgeon, but most Web-based applications disappoint me. I find them hard to use and hard to navigate. Some are quite pretty, but pretty doesn't equal usable. Many have poor error management capabilities, and throw away what I've entered if they encounter a server-based glitch.
On the plus side, Web-based apps are fairly agnostic about the user's system, and they're very easy to start using. There's no noticeable installation process, and of course any updates on the server are immediately effective for all users.
Contrarian that I am, I've been working on smart clients since the advent of .NET. Despite conventional wisdom, there's plenty of demand for better, more productive user interfaces.
It now appears that we might be ready to take the next steps toward better Web-based applications. Microsoft's Silverlight offers us the ability to run complex client code and handle complex client state, yet it runs in a browser page. It works on Windows and Mac, and with Internet Explorer, Firefox, and Safari browsers. After a simple plug-in install, much like Flash, Silverlight-based applications have the same deployment story as ASP.NET applications. Silverlight also has a challenger, as Adobe's Flash and Flex products add similar capabilities.
I think this is a game changer. It removes the key obstacle to better, more interactive, more productive apps on the Web.
Yet the transition doesn't look to be easy or quick. Adobe's technologies still don't give us everything we need for intelligent interfaces, and their programming experience needs to be better. I think Silverlight will eventually be a much better choice, but the released version of Silverlight lacks the necessary client programmability. The version of Silverlight we need is 2.0, which can run compiled application code on the client. It's not ready yet, but it will be in a few months.
Even when we get it, two major challenges remain. First, the capabilities in Silverlight drive radical changes in UI design. Lots of first efforts will look like clones of interfaces in existing UI technologies. We'll have to see a second generation of Silverlight applications to gain exposure to better ideas and designs.
Second, the programming model will be unfamiliar to most current Web developers. Those who have spent their career in HTML-based apps have learned to avoid state-based designs. With very limited state management capabilities, they had no choice. Silverlight, by contrast, has a state-based architecture. It's easy to keep information on the client, both in memory and on local storage. Cookies are going to look positively primitive to a Web developer after they create their first Silverlight application.
Silverlight will probably also have to overcome artificial constraints. Those with a high comfort level in HTML-based technologies will resist the change. Some early efforts will flounder because of the long ramp-up time, and Silverlight's reputation may suffer.
In the end, though, I think the users will drive the change to better interfaces. And that's as it should be. Our systems exist for them. We owe them the best experience we can reasonably create. When users see applications that really take advantage of what Silverlight can do, I think many of them will never be happy with complex HTML-based applications again.
HTML technologies will have a role in our systems for a long time. I've called HTML "the COBOL of the Web" because it's very entrenched and is likely to be around long after it's been superseded by better technologies. But because Silverlight (and its relatives and descendents) will play nicely with HTML, I expect we'll see a steady migration in the direction of smarter, more responsive, and more productive applications on the Web.
Billy Hollis is an author and software developer from Nashville, Tennessee. Billy is co-author of the first book ever published on Visual Basic .NET, .NET Programming on the Public Beta. He has written many articles, and is a frequent speaker at conferences. He is the Regional Director of Developer Relations in Nashville for Microsoft, and runs a consulting company focusing on Microsoft .NET.