I had a great conversation tonight with a group of people including Mark Piller of Midnight Coders that helped me bring together my thoughts on how software should look down the road. One of the things I constantly wrestle with is where desktop apps fit into the RIA world and how Rich Internet Applications can enhance software. Let's first look at the things that are mostly good from both a user and developer standpoint:
- A rich user experience
- A central destination that applications automatically update from and developers can push out new versions
- A workflow that allows designers and developers to easily create a compelling application
- Access to data whether the client is connected to the web or not
- Seamlessly integrated multimedia
Now things that are bad:
- Being locked into one platform
- Applications restricted by the browser model
- Messy, intrusive installations
- An installation required for every application we use
The underlying problem is that we associate the web with the browser. The browser is a terrible implementation for web applications, but there are specific traits that are so closely tied with the browser that it becomes hard to isolate them. For instance people love the fact that you can browse to a destination and have access to your application. We associate that with typing a URL into the browser and having a web application show up. But why does that have to be in a browser? Why couldn't we use the central destination model with an application on the desktop? Does that app even need to be installed? What if it's just an icon on the desktop that loads something from a central server? What if it's just a couple of files in the application directory?
At the same time when we're working with applications in the browser, they haven't been able to compete with the experience of desktop applications. The browser model is restrictive and it shows. Pushing Ajax to the limits just ends up showcasing how far we still need to go. The key is a rich, desktop like experience but with the flexibility of a browser-based application.
The current crop of RIA technologies are really evolutionary steps, and Erick Doleki has a nice post along these lines. Flex, Apollo, "WPF/E" and WPF are all moving in the direction of the perfect app - one that pulls centrally from the web but actually resides on the client. We're starting to see the convergence, which is one reason why these technologies are so exciting. At the same time, we are seeing a huge focus on the actual experience of the applications and how a great designer-developer workflow can make a big difference. That's a key point in reaching software nirvana. We can't just port web apps to the desktop or vice versa. We have to build a great experience around the next generation. That requires talent and tools, which is why innovation in that space is so important.
In the future, we really will have no distinction between "browser based apps" and "desktop apps" but that doesn't mean that one or the other will win. The mixture of both is what really makes the next generation of software compelling. The sooner we ditch the browser, the sooner we can make the leap. That's one of the things Rich Internet Applications enables.